Hi,

I'm trying to expose a REST webservice which takes json as input and also
provide response as json. I wanted to package the application as war and to
deploy on external jetty container. I'm facing two problem implementing
this.

1. The json object which comes along with REST request is not being mapped
to Exchange body and while accessing the exchange body I'm getting
NullPointerException. But sending json object as response is working fine.
2. To use JSONProvider I had to include following dependency...
<dependency>
             <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-bundle-jaxrs</artifactId>
             <version>${cxf.version}</version>
</dependency>
But adding above dependency is running internal jetty container(on random
port) on top of external jetty container(running on 8080) instance. I tried
to exclude jetty-* artifacts from the dependency but getting exception while
deploying the app. It seems the modules are inter-dependent so can't be
excluded.

Any guidance to solve the issues is much appreciated. 

*camel-config.xml*
 <import resource="classpath:META-INF/cxf/cxf.xml" />   
  <jaxrs:server id="restServer" staticSubresourceResolution="true">
    <jaxrs:serviceBeans>
      <ref bean="restServices"/>
    </jaxrs:serviceBeans> 
    <jaxrs:providers>
     <ref bean="jsonProvider"/> 
    </jaxrs:providers>     
  </jaxrs:server>

<bean id="jsonProvider"
class="org.apache.cxf.jaxrs.provider.json.JSONProvider"/>
<bean id="processRequest" class="sample.RequestProcessor"/> 

<camel:camelContext id="sampleContext" autoStartup="true"
streamCache="true">
 <camel:route id="httpRequest" startupOrder="2">
           <camel:from
uri="cxfrs://bean://restServer?bindingStyle=SimpleConsumer"/>
           <camel:process ref="processRequest"/>
<camel:route/>
<camel:context/>

*RequestProcessor.java*
public void process(Exchange exchange) throws Exception {
RequestPOJO req = exchange.getIn().getBody(RequestPOJO.class); *//getting
NullPointerException here*
}

*RequestPOJO.java*
@XmlRootElement(name = "createRequest")
public class RequestPOJO {
        
        String orderId;
        String timeStamp;
        public String getOrderId() {
                return reRatingOrderId;
        }
        public void setOrderId(String orderId) {
                this.orderId = orderId;
        }
        public String getTimeStamp() {
                return timeStamp;
        }
        public void setTimeStamp(String timestamp) {
                this.timeStamp = timestamp;
        }
        
*web.xml*
<context-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:camel-config.xml</param-value>
  </context-param>
        
  <listener>
     
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  
  <servlet>
        <servlet-name>CXFServlet</servlet-name>
        
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>1</load-on-startup>            
  </servlet>





--
View this message in context: 
http://camel.465427.n5.nabble.com/Issues-with-cxfrs-using-json-tp5749474.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to