json - jackson JSON无法与CXF一起使用

标签 json cxf jackson

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 依赖项。

  • 添加JSON提供程序
    <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/

    相关文章:

    c# - JSON.NET 忽略我所有没有 JsonProperty 属性的属性

    java - Jackson:将 JSON 转换为对象:ArrayList of objects with arraylist of objects with arraylist of objects

    php - 使用 simplexml_load_string() 将 XML 转换为 JSON 时如何删除 "@attributes"

    maven-2 - 默认情况下跳过maven2插件

    java - 如何在通过 JAX-RS (Apache-CXF 实现)ExceptionMapper 准备的错误响应中保留请求 header

    java - jackson 在 map 上捕捉到无法识别的领域

    c# - Linq-To-JSON 查询以在分层 JSON 结构中查找特定属性的 sibling

    java - 如何告诉 Apache CXF 在 Spring 配置中使用 java.util.Date

    java - 为什么 Predicates.instanceOf 返回 false?

    java - 如何使用 jackson 获取基于 json 属性名称的读取器方法?