2016-04-27 4 views
1
<cxf:rsServer id="rsServer" address="/services" 
     serviceClass="com.mayank.restservice.resource.RestfulResource"> 

     <cxf:providers> 
      <bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" /> 
      <bean class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider" /> 
     </cxf:providers> 

    </cxf:rsServer> 

    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> 

     <route> 
      <from uri="cxfrs:bean:rsServer" /> 
      <to uri="log:body?level=INFO" /> 
      <to uri="activemq:queue:testQueue" pattern="InOnly" /> 
     </route> 

    </camelContext> 

    <!-- ActiveMQ-beans definition --> 
    <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent"> 
     <property name="brokerURL" value="tcp://localhost:61616" /> 
    </bean> 

Я реализованный службу отдыха, используя поддержку компонента верблюжьей-CXF маршрутизировать ответ на ActiveMQ очереди. Теперь при запуске url службы я получаю Нет писателя тела сообщения для класса org.apache.cxf.message.MessageContentsList, ContentType: application/xml .Нет сообщения тела писателя не был найден для класса org.apache.cxf.message.MessageContentsList, ContentType: приложения/XML

Below is my RestResource class. 

import javax.ws.rs.Consumes; 
import javax.ws.rs.POST; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 
import com.mayank.restservice.model.ChequeDetails; 
import com.mayank.restservice.service.RestfulService; 

public class RestfulResource { 

    private RestfulService restfulservice; 
    public void setRestfulservice(RestfulService restfulservice) { 
     this.restfulservice = restfulservice; 
    } 

    @Path("post") 
    @POST 
    @Consumes(MediaType.APPLICATION_JSON) 
    @Produces(MediaType.APPLICATION_XML) 
    public ChequeDetails persistDB(ChequeDetails chequedetails){ 

     return restfulservice.persistDB(chequedetails); 

    } 
} 

Для тестирования, когда я попытался с помощью @Produce (APPLICATION_JSON) Я получаю ответ успеха. Не уверен, что это проблема с camel-cxf или в моем приложении?

ответ

0

Похоже, что проблема конфигурации JAXB. Вы настроили его для поддержки JSON? http://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-JSONsupport

Пример конфигурации:

<beans xmlns:util="http://www.springframework.org/schema/util"> 
<bean id="jaxbProvider" class="org.apache.cxf.jaxrs.provider.json.JSONProvider"> 
<property name="namespaceMap" ref="jsonNamespaceMap"/> 
</bean> 
<util:map id="jsonNamespaceMap" map-class="java.util.Hashtable"> 
<entry key="http://www.example.org/books" value="b"/> 
</util:map> 
/<beans> 
Смежные вопросы