Hi,
On 31/01/12 23:10, cganesan wrote:
Hi

I'm trying to exectute an Http POST with following JSON in the request body:

{
    "id":  "9852654659650"
}

I expect the JSON to be mapped to the folllowing requestBean Java object to
be injected before the service method is called:

My service method is as follows:

@POST
     @Consumes(MediaType.APPLICATION_JSON)
     @Path("/test")
     public String test(RequestBean requestBean) {
         return "test";
     }

I get the error:
No message body reader has been found for request class RequestBean.

The problem is with maping the inputstream to java object.
I'm using spring configuation as follows. Do I need to configure
MessageBodyProvider? If so, could you provide some sample?

     <import resource="classpath:META-INF/cxf/cxf.xml" />
     <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

     <jaxrs:server id="myService" address="/myService">
         <jaxrs:serviceBeans>
             <ref bean="serviceImpl" />
         </jaxrs:serviceBeans>
     </jaxrs:server>

     <bean id="serviceImpl" class="services.ServiceImpl" />

Appreciate the help

The default JSONProvider which is Jettison based expects RequestBean be a JAXB bean, with XmlRootElement, etc.

You may want to register a Jackson provider (within the jaxrs:providers section), that should do. Alternatively, try to register a customized CXF JSONProvider with an 'unmarshalFromJaxbElement' property set to true, that might help too:
http://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-HandlingJAXBbeanswithoutXmlRootElementannotations

Cheers, Sergey

Thanks
Chandru

--
View this message in context: 
http://cxf.547215.n5.nabble.com/No-message-body-reader-has-been-found-for-request-class-tp5445998p5445998.html
Sent from the cxf-user mailing list archive at Nabble.com.


--
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Blog: http://sberyozkin.blogspot.com

Reply via email to