将OSGi / Spring Web应用程序更新到Jersey 2.目前正在使用Jersey 2进行编译和安装,但在访问我们的资源时出现此错误:
找不到媒体类型= application / json的typeBodyWriter,类型= class org.codehaus.jettison.json.JSONObject,genericType = class org.codehaus.jettison.json.JSONObject .
org.codehaus.jettison.json的当前配置详细信息为泽西的“媒体提供者” .
•增加了对jersey-media-json-jettison的依赖
•我在web.xml中使用glassfish特定的init-param指定org.codehaus包:
<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提供程序使用吗?
我问的是正确的问题吗?
谢谢你,汤姆
1 回答
Jettison有
MessageBodyWriter
和MessageBodyReader
为org.codehaus.jettison.json.JSONObject
. 出于某种原因,它不会被自动发现,即使抛弃版本> 2.9(至少对我来说,情况就是这样) . 也许是因为它没有用@Provider
注释 . 为我解决这个问题的方法是手动将相应的类添加到我的ResourceConfig:在此之后,创建响应,如
像球衣1一样工作 .