Джексон Джексб Джсон с Apache CXf - PullRequest
3 голосов
/ 14 сентября 2011

Я использую Jackson Jaxb JSON в своем проекте REST с Apache CXF

версия JacksonJaxb. 1.7.0 Apache CXF 2.3.1

Я использую следующий код для возврата из моего метода.

    @GET
    @Consumes({ "application/json", "application/xml", "text/xml" })
    @Path("/job/autosuggest")
    @Override
    public Response getSuggestions(String searchField, Integer resPerPage, String typeCont)
    {   
        List<String> respo = new ArrayList<String>();
        respo.add("Atish");
        respo.add("Narlawar");
        respo.add("India");

        return Response.ok(respo).build();
}

Теперь возникает проблема, когда я компилирую и запускаю код на Jetty, я застреваю с

DEBUG o.s.b.f.s.DefaultListableBeanFactory [] Finished creating instance of bean 'org.apache.cxf.phase.PhaseManager'
org.codehaus.jackson.map.JsonMappingException: Incompatible types: declared root type ([simple type, class javax.ws.rs.core.Response]) vs java.util.ArrayList

Это не относится к массиву или обертке, но любой объект, если я передаю, а не String в Response.ok (объект) не удается проанализировать.

Моя конфигурация

  <util:map id="jsonNamespaceMap" map-class="java.util.Hashtable">
        <entry key="http://services.institute.com" value=""/>
        <entry key="http://cxf.apache.org/bindings/xformat" value="cxf"/>
    </util:map>

    <bean id="jsonInputFactory" class="org.codehaus.jettison.mapped.MappedXMLInputFactory">
        <constructor-arg ref="jsonNamespaceMap"/>
    </bean>

    <bean id="jsonOutputFactory" class="org.codehaus.jettison.mapped.MappedXMLOutputFactory">
        <constructor-arg ref="jsonNamespaceMap"/>
    </bean>

    <bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider"/>

    <jaxrs:server id="jobsearch" address="/">
        <jaxrs:serviceBeans>
            <ref bean="jobSearchService" />
        </jaxrs:serviceBeans>
        <jaxrs:extensionMappings>
            <entry key="text" value="text/xml"/>
            <entry key="xml" value="application/xml"/>
            <entry key="json" value="application/json"/>
        </jaxrs:extensionMappings>
        <jaxrs:languageMappings/>
        <jaxrs:properties>
            <entry key="javax.xml.stream.XMLInputFactory">
                <ref bean="jsonInputFactory"/>
            </entry>
            <entry key="javax.xml.stream.XMLOutputFactory">
                <ref bean="jsonOutputFactory"/>
            </entry>
        </jaxrs:properties>
        <jaxrs:providers>         
            <ref bean="jsonProvider"/>     
        </jaxrs:providers> 
    </jaxrs:server>

</beans>

Я не уверен, что делать с этим вопросом. Я уже потерял 1/2 дня, чтобы найти обходной путь. Любая помощь будет оценена.

Заранее спасибо!

1 Ответ

3 голосов
/ 16 сентября 2011

Наконец я получил ответ.

Проблема связана с самой версией. JacksonJaxb сообщил об ошибке в 1.7.0.

Я обновил версию до более высокой ... в моем случае это 1.8.5, и она исправлена.

Надеюсь, это поможет.

Спасибо Атиш

...