JacksonJsonProvider无法与CXF一起使用。
CXF v2.6.0
jackson v2.1.2(com.fasterxml.jackson)
RESTClient(用于测试)
我确实在bean.xml中配置了以下提供程序。
<bean id="jacksonMapper" class="com.fasterxml.jackson.databind.ObjectMapper">
<property name="dateFormat">
<bean class="java.text.SimpleDateFormat">
<constructor-arg type="java.lang.String" value="yyyy-MM-dd'T'HH:mm:ss.SSSZ"> </constructor-arg>
</bean>
</property>
</bean>
<bean id="jacksonProvider" class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider">
<property name="mapper" ref="jacksonMapper" />
</bean>
在jaxrs:server .....>
<jaxrs:providers>
<ref bean="jaxbProvider" />
<ref bean="jacksonProvider" />
</jaxrs:providers>
</jaxrs:server>
部署该应用程序没有任何问题,它提供了良好的JSON,而我给出的请求为“application/xml”,响应为“application/json”。
当我尝试通过设置Content-Type = application/json在请求中提供JSON时,我遇到了500 Internal Server Error
该请求通过CXF-logging记录在日志文件中。
该请求完全没有到达我的webservice的服务实现类中。
请求正文中的JSON为:
{"SearchOrdersRequest":{"LoginCredentials":{"AppId":"BookStore","Username":"myuser","Password":"abcd1234","SecurityToken":"Vcvx45YilzX1"},"SearchHeader":{"SearchCategory":"Rep","FilterLogic":"1 AND 2","SearchParams":{"Field":"Order Number (s)","Operator":"EQUALS","Values":"600045335"}}}}
任何即时帮助,我们将不胜感激。
最佳答案
在CXF documentation中,您可以看到需要在何处添加json provider并包含依赖项。但是,当我尝试添加 jackson 而不是抛弃时,仍然出现错误,几小时后,我发现您需要再添加一个 jackson 依赖项。
<jaxrs:providers>
<bean class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider" />
</jaxrs:providers>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-xc</artifactId>
<version>1.9.12</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
<version>1.9.12</version>
</dependency>
关于json - jackson JSON无法与CXF一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14400193/