So, if you replace all of @Produces("application/json") with
@Produces("application/xml")
and do
curl -HAccept:application/xml ...
then it works ?
Sergey
On 01/07/13 16:40, ajaysam wrote:
I am sending the request through curl - it is setting Accept header as
shown
below
curl -HAccept:application/json
http://pocman2.nsp.stf.bms.com:8080/CXF_REST-0.0.1-SNAPSHOT/webservices/Hello/SilpaY
Hello is the path to refer to resource class
We are stuck in this project and any help will be appreciated.
At high level this is what the project is about
1. Camel exposes a REST endpoint thru CXFRS - this part works
2. We get the request data in POJO format - camel makes SOAP call to
another
web service passing this POJO
3. We get the response back from that service
4. Response POJO needs to be converted to JSON
As of now as a workaround in last step - we are using marshal step of
camel
to explicitly convert from POJO to JSON - and that works - but we dont
want
to do it that way
We thought just doing return Response.ok(resp).build(); from Processor
should work
We did all the configuration required as explained in article
Our resource class says @Produces MediaType.Application_JSON
Also provided the json provider to cxfrs configuration
Now what else needs to be done?
Can i send the application-context.xml file and Resource file to you
somehow..maybe i m missing something fundamental
attached is the xml section
- <util:list id="jsonTypes">
<value>application/json</value>
</util:list>
- <bean id="cxfJaxrsJsonProvider"
class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
<property name="namespaceMap" ref="jsonNamespaceMap" />
<property name="produceMediaTypes" ref="jsonTypes" />
</bean>
<bean id="restResource" class="com.bms.web.HelloResource" />
- <jaxrs:server id="restService" staticSubresourceResolution="true">
- <jaxrs:serviceBeans>
<ref bean="restResource" />
</jaxrs:serviceBeans>
- <jaxrs:providers>
<ref bean="cxfJaxrsJsonProvider" />
<bean class="org.apache.cxf.jaxrs.provider.JAXBElementProvider" />
</jaxrs:providers>
</jaxrs:server>
<bean id="restRespProcessor" class="com.bms.web.RESTResponseProcessor"
/>
<cxf:rsServer id="HelloRsServer"
serviceClass="com.bms.web.HelloResource"
loggingFeatureEnabled="true" />
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route id="restToSoap" streamCache="true">
<from
uri="cxfrs://bean://HelloRsServer?bindingStyle=SimpleConsumer"
/>
<log message="**************** Got ${headers}" />
<log message="**************** Got Body 111 : ${body}" />
<to uri="bean:reqProcessor" />
<log message="**************** Got Headers 222 : ${headers}" />
<log message="**************** Got Body 333 : ${body}" />
<to uri="cxf:bean:target_hello"/>
<log message="**************** Got Body 444 : ${body}" />
<to uri="bean:restRespProcessor" />
<log message="**************** Got Body 555 : ${body}" />
</route>
</camelContext>
the the response processor does this
MessageContentsList msgList =
(MessageContentsList)exchg.getIn().getBody();
GetReferenceDataResponse resp = (GetReferenceDataResponse)
msgList.get(0);
exchg.getOut().setBody(Response.ok(resp).build());
Resource File is
@Path("/Hello")
@Produces({"application/json"})
public class HelloResource {
public HelloResource() {}
@GET
@Path("/{referenceTypeName}")
//@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
public Response getMessage(
@PathParam("referenceTypeName") String name, @QueryParam("")
ReferenceDataRequest query) {
System.out.println("Hello, i am here !!! In HelloResource .......
updated
7.1.13");
return null;
}
}
--
View this message in context:
http://camel.465427.n5.nabble.com/Camel-CXFRS-endpoint-unable-to-produce-JSON-tp5734967p5735046.html
Sent from the Camel - Users mailing list archive at Nabble.com.
------------------------------
If you reply to this email, your message will be added to the discussion
below:
http://camel.465427.n5.nabble.com/Camel-CXFRS-endpoint-unable-to-produce-JSON-tp5734967p5735049.html
To unsubscribe from Camel CXFRS endpoint unable to produce JSON, click
here<http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=5734967&code=YWpheS5zYW1hbnRAZ21haWwuY29tfDU3MzQ5Njd8LTIxMTkyODAxMA==>
.
NAML<http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>