将OSGi/Spring应用程序更新到泽西2。目前,使用泽西2编译和安装都很好,但是当我们的资源被访问时,我得到了这个错误:
MessageBodyWriter未找到媒体类型=application/json、type=class org.codehaus.jettison.json.JSONObject、genericType=class org.codehaus.jettison.json.JSONObject。
org.codehaus.jettison.json作为泽西的“媒体提供商”的当前配置细节。
·增加对泽西的依赖-媒体-json-jettison
·我在web.xml中指定了web.xml包,其中包含了特定于glassfish的init-param:
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>
org.codehaus.jettison.json,
...
</param-value>
</init-param>·将软件包添加到我们的webapp包bnd文件中:
org.codehaus.jettison.json,\这表明它成功地在OSGi控制台中导入了它:
Imported packages
org.codehaus.jettison.json; version="1.3.3"
控制台还显示了jersey-media-json-jettison包所使用的包:
packages org.codehaus.jettison.json
org.codehaus.jettison.json; version="1.3.3"<org.codehaus.jettison.jettison_1.3.3 [121]>
org.glassfish.jersey.media.jersey-media-json-jettison_2.22.1 [192] 有什么想法吗?这里缺少什么来配置json提供者?
使用org.codehaus.jettison包是否需要编程配置才能作为json提供程序工作?
我问的问题对吗?
谢谢你,汤姆
发布于 2018-01-12 16:02:29
Jettison有一个用于MessageBodyWriter和MessageBodyReader的org.codehaus.jettison.json.JSONObject。由于某些原因,它没有被自动发现,即使jettison版本> 2.9 (至少对我来说是这样)。也许是因为它没有用@Provider进行注释。解决这个问题的方法是手动将相应的类添加到我的ResourceConfig中:
register(JettisonObjectProvider.App.class);在此之后,创建如下响应
Response.ok(new JSONObject(), MediaType.APPLICATION_JSON).build();就像1号球衣一样。
https://stackoverflow.com/questions/35273266
复制相似问题