You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by cephy <pa...@logix.co.nz> on 2012/09/11 12:44:12 UTC
Help using CXFRS client proxy to call RESTful services
Hi guys,
I am relatively new to Camel - yet most aspects have gone rather well so far
:-)
However, I need some help with the "client proxy" method to call a CXFRS
producer using camel 2.9.0
I have coded a class model with appropriate annotations and declared the
services in Blueprint XML as listed at end of this post. It all works
perfectly, serving up RESTful services that I can call with SoapUI.
Now I want a camel processor to call one of the exposed RESTful services
using the "client proxy" method.
I have read the documentation for the CXFRS component
(http://camel.apache.org/cxfrs.html) under "How to invoke the REST service
through camel-cxfrs producer". However, I cannot see how I apply the given
example to calling my services as a camel producer.
I've tried adapting the "client proxy" example to my case:
ProducerTemplate template = context.createProducerTemplate();
Exchange exchange = template.send("cxfrs:bean:myServer", new Processor() {
...follow the example...
});
MyOperationResuly result =
exchange.getOut().getBody(MyOperationResult.class);
...however this doesn't call the service, and all I get is a null result.
I can successfully call the service directly using the following code...
MyService service =
JAXRSClientFactory.create("http://localhost:8181/cxf/MyService",
MyService.class);
MyOperationResult result =
service.onMyOperation("MyOperationParameterString");
How do I actually call my services using the CXFRS "client proxy" method??
Maybe I have to do more in my Blueprint config file??
I've seen Spring config files using both cxf:rsServer and cxf:rsClient
declarations - but I haven't seen an equivalent Blueprint example.
Any assistance to get me back on track would be most appreciated.
Cheers,
Paul.
--------------
My blueprint.xml file:
<?xml version="1.0" encoding="UTF-8"?>
<blueprint
xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs"
xmlns:camel="http://camel.apache.org/schema/blueprint"
xsi:schemaLocation="
http://www.osgi.org/xmlns/blueprint/v1.0.0
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0
http://svn.apache.org/repos/asf/aries/trunk/blueprint/blueprint-cm/src/main/resources/org/apache/aries/blueprint/compendium/cm/blueprint-cm-1.1.0.xsd
http://cxf.apache.org/blueprint/jaxrs
http://cxf.apache.org/schemas/blueprint/jaxrs.xsd
http://camel.apache.org/schema/blueprint
http://camel.apache.org/schema/blueprint/camel-blueprint.xsd" >
<jaxrs:server
id="myServer"
address="/MyService" >
<jaxrs:providers>
<bean class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider" />
</jaxrs:providers>
<jaxrs:serviceBeans>
<ref component-id="myService" />
</jaxrs:serviceBeans>
</jaxrs:server>
<bean id="myService" class="org.me.MyService" />
<camelContext xmlns="http://camel.apache.org/schema/blueprint"
id="my-camel-context" >
<routeBuilder ref="myServiceRouteBuilder" />
</camelContext>
<bean id="myServiceRouteBuilder" class="org.me.MyServiceRouteBuilder" />
</blueprint>
--
View this message in context: http://camel.465427.n5.nabble.com/Help-using-CXFRS-client-proxy-to-call-RESTful-services-tp5719108.html
Sent from the Camel - Users mailing list archive at Nabble.com.
Re: Help using CXFRS client proxy to call RESTful services
Posted by stibi <ma...@gmail.com>.
Hello guys,
have you figured out some solution here?
Thanks!
--
View this message in context: http://camel.465427.n5.nabble.com/Help-using-CXFRS-client-proxy-to-call-RESTful-services-tp5719108p5727119.html
Sent from the Camel - Users mailing list archive at Nabble.com.
Re: Help using CXFRS client proxy to call RESTful services
Posted by Sergey Beryozkin <sb...@gmail.com>.
Hi
On 11/09/12 11:44, cephy wrote:
> Hi guys,
>
> I am relatively new to Camel - yet most aspects have gone rather well so far
> :-)
> However, I need some help with the "client proxy" method to call a CXFRS
> producer using camel 2.9.0
>
> I have coded a class model with appropriate annotations and declared the
> services in Blueprint XML as listed at end of this post. It all works
> perfectly, serving up RESTful services that I can call with SoapUI.
>
> Now I want a camel processor to call one of the exposed RESTful services
> using the "client proxy" method.
> I have read the documentation for the CXFRS component
> (http://camel.apache.org/cxfrs.html) under "How to invoke the REST service
> through camel-cxfrs producer". However, I cannot see how I apply the given
> example to calling my services as a camel producer.
>
> I've tried adapting the "client proxy" example to my case:
>
> ProducerTemplate template = context.createProducerTemplate();
> Exchange exchange = template.send("cxfrs:bean:myServer", new Processor() {
> ...follow the example...
> });
> MyOperationResuly result =
> exchange.getOut().getBody(MyOperationResult.class);
>
> ...however this doesn't call the service, and all I get is a null result.
>
> I can successfully call the service directly using the following code...
>
> MyService service =
> JAXRSClientFactory.create("http://localhost:8181/cxf/MyService",
> MyService.class);
> MyOperationResult result =
> service.onMyOperation("MyOperationParameterString");
>
> How do I actually call my services using the CXFRS "client proxy" method??
>
> Maybe I have to do more in my Blueprint config file??
> I've seen Spring config files using both cxf:rsServer and cxf:rsClient
> declarations - but I haven't seen an equivalent Blueprint example.
>
> Any assistance to get me back on track would be most appreciated.
>
Perhaps you can use jaxrs;client in Blueprint context and refer to this
client from the route ? I haven't tried configuring cxfrs client via
query parameters to actually do a proxy invocation
Cheers, Sergey
> Cheers,
> Paul.
>
> --------------
>
> My blueprint.xml file:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <blueprint
> xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
> xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs"
> xmlns:camel="http://camel.apache.org/schema/blueprint"
> xsi:schemaLocation="
> http://www.osgi.org/xmlns/blueprint/v1.0.0
> http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
> http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0
> http://svn.apache.org/repos/asf/aries/trunk/blueprint/blueprint-cm/src/main/resources/org/apache/aries/blueprint/compendium/cm/blueprint-cm-1.1.0.xsd
> http://cxf.apache.org/blueprint/jaxrs
> http://cxf.apache.org/schemas/blueprint/jaxrs.xsd
> http://camel.apache.org/schema/blueprint
> http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">
>
>
> <jaxrs:server
> id="myServer"
> address="/MyService">
> <jaxrs:providers>
> <bean class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider" />
> </jaxrs:providers>
> <jaxrs:serviceBeans>
> <ref component-id="myService" />
> </jaxrs:serviceBeans>
> </jaxrs:server>
> <bean id="myService" class="org.me.MyService" />
>
>
> <camelContext xmlns="http://camel.apache.org/schema/blueprint"
> id="my-camel-context">
> <routeBuilder ref="myServiceRouteBuilder" />
> </camelContext>
> <bean id="myServiceRouteBuilder" class="org.me.MyServiceRouteBuilder" />
>
> </blueprint>
>
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/Help-using-CXFRS-client-proxy-to-call-RESTful-services-tp5719108.html
> Sent from the Camel - Users mailing list archive at Nabble.com.