You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Charles Moulliard <cm...@gmail.com> on 2009/11/30 09:58:02 UTC
CXF - camel CXF
Hi,
If camel is used in combination with CXF to handle REST services, How must
be designed the POJOs managing the REST services ?
eg. camel spring config
<cxf:rsServer id="rsServer" address="/camel-rest-example/"
serviceClass="org.apache.camel.example.reportincident.restful.ReportIncidentService"
/>
<cxf:rsClient id="rsClient" address="http://localhost:8181/cxf/http/" />
<camel:camelContext trace="true"
xmlns="http://camel.apache.org/schema/osgi">
<camel:route>
<camel:from uri="cxfrs:bean:rsServer" /> // REST HTTP Service
receiving the call from REST client and providing reply
<camel:bean ref="service" method="getCustomer" />
<camel:to uri="activemq:queue:IN"/>
</camel:route>
<camel:route>
<camel:from uri="activemq:queue:IN" />
<camel:to uri="cxfrs:bean:rsClient" /> // HTTP (internal client)
who will generate HTTP reply using CXF - jaxrs:server component to
cxfrs:bean:rsServer endpoint
</camel:route>
Do we have to create two POJOs (one for the request and the other for the
reply ?
If this is the case, how the method must be defined to provide the REST info
(request, parameters, ...) to the camel endpoint (= camel bean) who will be
in charge to retrieve by example info from DB ? idem but for the method who
will be send back the reply to the client calling the REST service ?
ex : Request
@GET
@Path("/customers/{id}/")
public String getCustomer(@PathParam("id") String id) {
return id;
}
ex: reply
@GET
@Path("/customers/{id}/")
public Customer getCustomer(Customer customer) {
return customer;
}
Regards,
Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer
*****************************
blog : http://cmoulliard.blogspot.com
twitter : http://twitter.com/cmoulliard
Linkedlin : http://www.linkedin.com/in/charlesmoulliard
Apache Camel Group :
http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
Re: CXF - camel CXF
Posted by Charles Moulliard <cm...@gmail.com>.
Forget my last remark. I have found the right way to dissociate the incoming
call from the output
Here is the camel-context config file
<bean id="reportIncidentService"
class="org.apache.camel.example.reportincident.restful.ReportIncidentService"
/>
<bean id="restProcessor"
class="org.apache.camel.example.reportincident.routing.RestFullProcessor"/>
<cxf:rsServer id="rsServer" address="/camel-rest-example/"
serviceClass="org.apache.camel.example.reportincident.restful.ReportIncidentService"
/>
<camel:camelContext trace="true"
xmlns="http://camel.apache.org/schema/osgi">
<camel:route>
<camel:from uri="cxfrs:bean:rsServer" />
<camel:bean ref="restProcessor" method="processRequest"/>
</camel:route>
</camel:camelContext>
</beans>
As you can see, we don't need the Jaxrs:server bean and only
cxfrs:bean:rsServer
and
code used (Thx for willem example CxfRsConsumerTest) where wde provide back
the reply. In fact, this bean should become a factory where depending on the
CxfConstants.OPERATION_NAME received we call the corresponding Service in
our SOA environment
public void processRequest(Exchange exchange) {
Message inMessage = exchange.getIn();
// Get the operation name from in message
String operationName =
inMessage.getHeader(CxfConstants.OPERATION_NAME, String.class);
// The parameter of the invocation is stored in the body of in
message
String id = (String) inMessage.getBody(Object[].class)[0];
if ("getIncident".equals(operationName)) {
String httpMethod = inMessage.getHeader(Exchange.HTTP_METHOD,
String.class);
String uri = inMessage.getHeader(Exchange.HTTP_URI,
String.class);
if
("/cxf/camel-rest-example/reportservice/incidents/123/".equals(uri)) {
Incident i = new Incident();
i.setIncidentId(Long.parseLong(id));
i.setFamilyName("Charles");
// We just put the response Object into the out message body
exchange.getOut().setBody(i);
} else {
Response r = Response.status(404).entity("Can't found the
customer with uri " + uri).build();
throw new WebApplicationException(r);
}
}
}
Regards,
Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer
*****************************
blog : http://cmoulliard.blogspot.com
twitter : http://twitter.com/cmoulliard
Linkedlin : http://www.linkedin.com/in/charlesmoulliard
Apache Camel Group :
http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
On Wed, Dec 2, 2009 at 12:11 PM, Charles Moulliard <cm...@gmail.com>wrote:
> @Willem,
>
> An elegant alternative approach could be that the thread running the method
> called in the REST service :
>
> @GET
> @Path("/incidents/{id}/")
> public Incident getIncident(@PathParam("id") String id) {
> long idNumber = Long.parseLong(id);
> Incident i = incidents.get(idNumber);
> return i;
> }
>
> is suspended and resumed when we receive through Camel route what the
> client is expected to receive as reply. This could be achieved if we add a
> new annotation @ProcessStatus to inform camel endpoint or CXF that we wait
> exchange return from Camel route (where we call a POJO in charge by example
> to make a DataBase request) before to provide back the reply to the RESTfull
> client.
>
>
> Regards,
>
> Charles Moulliard
> Senior Enterprise Architect
> Apache Camel Committer
>
> *****************************
> blog : http://cmoulliard.blogspot.com
> twitter : http://twitter.com/cmoulliard
> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>
> Apache Camel Group :
> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>
>
> On Tue, Dec 1, 2009 at 10:40 AM, Willem Jiang <wi...@gmail.com>wrote:
>
>> It should work, but you need to some additional work.
>>
>> As cxfrs producer uses the HttpClient API by default, it is different with
>> the camel-cxf's client API, so you need to find some way to deal with the
>> REST response object issue which you shows in CAMEL-2239.
>>
>> In camel-example-cxf , we have an example[1] to show how to provides a
>> service which support soap request and REST at same time.
>>
>> [1]
>> https://svn.apache.org/repos/asf/camel/trunk/examples/camel-example-cxf/src/main/java/org/apache/camel/example/cxf/jaxrs/CamelRouterBuilder.java
>>
>>
>> Willem
>>
>> Charles Moulliard wrote:
>>
>>> Hi Willem,
>>>
>>> To come back to REST implementation between Camel - CXF, can you tell me
>>> why
>>> we cannot do the same thing (RESTfull services) that we can do for CXF
>>> web
>>> service ?
>>>
>>> Here is the camel route that I use in my camel osgi tutorial (part2)
>>>
>>> <camel:route>
>>> <camel:from uri="cxf:bean:reportIncident" />
>>> <camel:setHeader headerName="origin">
>>> <camel:constant>webservice</camel:constant>
>>> </camel:setHeader>
>>> <camel:convertBodyTo
>>> type="org.apache.camel.example.reportincident.InputReportIncident" />
>>> <camel:to uri="bean:webservice" />
>>> <camel:inOnly uri="queuingservice:queue:in" />
>>> <camel:transform>
>>> <camel:method bean="feedback" method="setOk" />
>>> </camel:transform>
>>>
>>> </camel:route>
>>>
>>> Charles Moulliard
>>> Senior Enterprise Architect
>>> Apache Camel Committer
>>>
>>> *****************************
>>> blog : http://cmoulliard.blogspot.com
>>> twitter : http://twitter.com/cmoulliard
>>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>>
>>> Apache Camel Group :
>>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>>
>>>
>>> On Tue, Dec 1, 2009 at 3:41 AM, Willem Jiang <wi...@gmail.com>
>>> wrote:
>>>
>>> Hi Charles,
>>>>
>>>> It really dependents on your use case.
>>>>
>>>> Here is an user case, if have bunch of back end (jaxrs:server) services,
>>>> and you want to do a content based routing, you can user setup a camel
>>>> cxfrsServer and let the client access this server. Then camel route will
>>>> take care rest of things :)
>>>>
>>>>
>>>> Willem
>>>>
>>>> Charles Moulliard wrote:
>>>>
>>>> If it makes no sense to use rsServer and rsClient both together in a
>>>>> camel
>>>>> route, what is the advantage to use a camel cxfrsServer endpoint over
>>>>> the
>>>>> jaxrs:server endpoint ?
>>>>>
>>>>> Regards,
>>>>>
>>>>> Charles Moulliard
>>>>> Senior Enterprise Architect
>>>>> Apache Camel Committer
>>>>>
>>>>> *****************************
>>>>> blog : http://cmoulliard.blogspot.com
>>>>> twitter : http://twitter.com/cmoulliard
>>>>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>>>>
>>>>> Apache Camel Group :
>>>>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>>>>
>>>>>
>>>>> On Mon, Nov 30, 2009 at 4:26 PM, Willem Jiang <willem.jiang@gmail.com
>>>>>
>>>>>> wrote:
>>>>>>
>>>>> Oh, this test case just show how camel-cxfrs consumer and camel-cxfrs
>>>>>
>>>>>> producer work together.
>>>>>>
>>>>>> It is not easy to write a bunch of tests to verify a camel-cxfrs
>>>>>> consumer
>>>>>> can response different request in a short time, so why not we create
>>>>>> a
>>>>>> camel-cxfrs route in Camel to test the consumer and producer at the
>>>>>> same
>>>>>> time.
>>>>>>
>>>>>> Willem
>>>>>>
>>>>>>
>>>>>> Charles Moulliard wrote:
>>>>>>
>>>>>> If you recommend to call directly the service from the POJO where we
>>>>>>
>>>>>>> have
>>>>>>> added REST annotation, what is the purpose of this route presented as
>>>>>>> an
>>>>>>> example in camel-cxf test if the cxf:rsServer:bean:server endpoint
>>>>>>> can
>>>>>>> directly answer to a GET/PUT,POST, ... call ?
>>>>>>>
>>>>>>> <route>
>>>>>>> <cxf:rsServer:bean:server/>
>>>>>>> <cxf:rsClient:bean:client/>
>>>>>>> </route>
>>>>>>>
>>>>>>> Regards,
>>>>>>>
>>>>>>> Charles Moulliard
>>>>>>> Senior Enterprise Architect
>>>>>>> Apache Camel Committer
>>>>>>>
>>>>>>> *****************************
>>>>>>> blog : http://cmoulliard.blogspot.com
>>>>>>> twitter : http://twitter.com/cmoulliard
>>>>>>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>>>>>>
>>>>>>> Apache Camel Group :
>>>>>>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Nov 30, 2009 at 3:53 PM, Willem Jiang <
>>>>>>> willem.jiang@gmail.com
>>>>>>>
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Hi Charles,
>>>>>>>
>>>>>>> You don't need to use the camel cxfrs route all the time, if you
>>>>>>>> have
>>>>>>>> to
>>>>>>>> retrieve the DB for the REST request.
>>>>>>>>
>>>>>>>> You just need to define a POJO with annotation, and use OR mapping
>>>>>>>> framework to implement retrieve or update the data for your service.
>>>>>>>> You
>>>>>>>> don't need to let camel be involved ;)
>>>>>>>>
>>>>>>>> Willem
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Charles Moulliard wrote:
>>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> If camel is used in combination with CXF to handle REST services,
>>>>>>>>> How
>>>>>>>>> must
>>>>>>>>> be designed the POJOs managing the REST services ?
>>>>>>>>>
>>>>>>>>> eg. camel spring config
>>>>>>>>>
>>>>>>>>> <cxf:rsServer id="rsServer" address="/camel-rest-example/"
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> serviceClass="org.apache.camel.example.reportincident.restful.ReportIncidentService"
>>>>>>>>> />
>>>>>>>>>
>>>>>>>>> <cxf:rsClient id="rsClient" address="
>>>>>>>>> http://localhost:8181/cxf/http/
>>>>>>>>> "
>>>>>>>>> />
>>>>>>>>>
>>>>>>>>> <camel:camelContext trace="true"
>>>>>>>>> xmlns="http://camel.apache.org/schema/osgi">
>>>>>>>>>
>>>>>>>>> <camel:route>
>>>>>>>>> <camel:from uri="cxfrs:bean:rsServer" /> // REST HTTP
>>>>>>>>> Service
>>>>>>>>> receiving the call from REST client and providing reply
>>>>>>>>> <camel:bean ref="service" method="getCustomer" />
>>>>>>>>> <camel:to uri="activemq:queue:IN"/>
>>>>>>>>> </camel:route>
>>>>>>>>>
>>>>>>>>> <camel:route>
>>>>>>>>> <camel:from uri="activemq:queue:IN" />
>>>>>>>>> <camel:to uri="cxfrs:bean:rsClient" /> // HTTP (internal
>>>>>>>>> client)
>>>>>>>>> who will generate HTTP reply using CXF - jaxrs:server component to
>>>>>>>>> cxfrs:bean:rsServer endpoint
>>>>>>>>> </camel:route>
>>>>>>>>>
>>>>>>>>> Do we have to create two POJOs (one for the request and the other
>>>>>>>>> for
>>>>>>>>> the
>>>>>>>>> reply ?
>>>>>>>>> If this is the case, how the method must be defined to provide the
>>>>>>>>> REST
>>>>>>>>> info
>>>>>>>>> (request, parameters, ...) to the camel endpoint (= camel bean) who
>>>>>>>>> will
>>>>>>>>> be
>>>>>>>>> in charge to retrieve by example info from DB ? idem but for the
>>>>>>>>> method
>>>>>>>>> who
>>>>>>>>> will be send back the reply to the client calling the REST service
>>>>>>>>> ?
>>>>>>>>>
>>>>>>>>> ex : Request
>>>>>>>>>
>>>>>>>>> @GET
>>>>>>>>> @Path("/customers/{id}/")
>>>>>>>>> public String getCustomer(@PathParam("id") String id) {
>>>>>>>>> return id;
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> ex: reply
>>>>>>>>>
>>>>>>>>> @GET
>>>>>>>>> @Path("/customers/{id}/")
>>>>>>>>> public Customer getCustomer(Customer customer) {
>>>>>>>>> return customer;
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Regards,
>>>>>>>>>
>>>>>>>>> Charles Moulliard
>>>>>>>>> Senior Enterprise Architect
>>>>>>>>> Apache Camel Committer
>>>>>>>>>
>>>>>>>>> *****************************
>>>>>>>>> blog : http://cmoulliard.blogspot.com
>>>>>>>>> twitter : http://twitter.com/cmoulliard
>>>>>>>>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>>>>>>>>
>>>>>>>>> Apache Camel Group :
>>>>>>>>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>
>>
>
Re: CXF - camel CXF
Posted by Charles Moulliard <cm...@gmail.com>.
@Willem,
An elegant alternative approach could be that the thread running the method
called in the REST service :
@GET
@Path("/incidents/{id}/")
public Incident getIncident(@PathParam("id") String id) {
long idNumber = Long.parseLong(id);
Incident i = incidents.get(idNumber);
return i;
}
is suspended and resumed when we receive through Camel route what the client
is expected to receive as reply. This could be achieved if we add a new
annotation @ProcessStatus to inform camel endpoint or CXF that we wait
exchange return from Camel route (where we call a POJO in charge by example
to make a DataBase request) before to provide back the reply to the RESTfull
client.
Regards,
Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer
*****************************
blog : http://cmoulliard.blogspot.com
twitter : http://twitter.com/cmoulliard
Linkedlin : http://www.linkedin.com/in/charlesmoulliard
Apache Camel Group :
http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
On Tue, Dec 1, 2009 at 10:40 AM, Willem Jiang <wi...@gmail.com>wrote:
> It should work, but you need to some additional work.
>
> As cxfrs producer uses the HttpClient API by default, it is different with
> the camel-cxf's client API, so you need to find some way to deal with the
> REST response object issue which you shows in CAMEL-2239.
>
> In camel-example-cxf , we have an example[1] to show how to provides a
> service which support soap request and REST at same time.
>
> [1]
> https://svn.apache.org/repos/asf/camel/trunk/examples/camel-example-cxf/src/main/java/org/apache/camel/example/cxf/jaxrs/CamelRouterBuilder.java
>
>
> Willem
>
> Charles Moulliard wrote:
>
>> Hi Willem,
>>
>> To come back to REST implementation between Camel - CXF, can you tell me
>> why
>> we cannot do the same thing (RESTfull services) that we can do for CXF web
>> service ?
>>
>> Here is the camel route that I use in my camel osgi tutorial (part2)
>>
>> <camel:route>
>> <camel:from uri="cxf:bean:reportIncident" />
>> <camel:setHeader headerName="origin">
>> <camel:constant>webservice</camel:constant>
>> </camel:setHeader>
>> <camel:convertBodyTo
>> type="org.apache.camel.example.reportincident.InputReportIncident" />
>> <camel:to uri="bean:webservice" />
>> <camel:inOnly uri="queuingservice:queue:in" />
>> <camel:transform>
>> <camel:method bean="feedback" method="setOk" />
>> </camel:transform>
>>
>> </camel:route>
>>
>> Charles Moulliard
>> Senior Enterprise Architect
>> Apache Camel Committer
>>
>> *****************************
>> blog : http://cmoulliard.blogspot.com
>> twitter : http://twitter.com/cmoulliard
>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>
>> Apache Camel Group :
>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>
>>
>> On Tue, Dec 1, 2009 at 3:41 AM, Willem Jiang <wi...@gmail.com>
>> wrote:
>>
>> Hi Charles,
>>>
>>> It really dependents on your use case.
>>>
>>> Here is an user case, if have bunch of back end (jaxrs:server) services,
>>> and you want to do a content based routing, you can user setup a camel
>>> cxfrsServer and let the client access this server. Then camel route will
>>> take care rest of things :)
>>>
>>>
>>> Willem
>>>
>>> Charles Moulliard wrote:
>>>
>>> If it makes no sense to use rsServer and rsClient both together in a
>>>> camel
>>>> route, what is the advantage to use a camel cxfrsServer endpoint over
>>>> the
>>>> jaxrs:server endpoint ?
>>>>
>>>> Regards,
>>>>
>>>> Charles Moulliard
>>>> Senior Enterprise Architect
>>>> Apache Camel Committer
>>>>
>>>> *****************************
>>>> blog : http://cmoulliard.blogspot.com
>>>> twitter : http://twitter.com/cmoulliard
>>>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>>>
>>>> Apache Camel Group :
>>>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>>>
>>>>
>>>> On Mon, Nov 30, 2009 at 4:26 PM, Willem Jiang <willem.jiang@gmail.com
>>>>
>>>>> wrote:
>>>>>
>>>> Oh, this test case just show how camel-cxfrs consumer and camel-cxfrs
>>>>
>>>>> producer work together.
>>>>>
>>>>> It is not easy to write a bunch of tests to verify a camel-cxfrs
>>>>> consumer
>>>>> can response different request in a short time, so why not we create a
>>>>> camel-cxfrs route in Camel to test the consumer and producer at the
>>>>> same
>>>>> time.
>>>>>
>>>>> Willem
>>>>>
>>>>>
>>>>> Charles Moulliard wrote:
>>>>>
>>>>> If you recommend to call directly the service from the POJO where we
>>>>>
>>>>>> have
>>>>>> added REST annotation, what is the purpose of this route presented as
>>>>>> an
>>>>>> example in camel-cxf test if the cxf:rsServer:bean:server endpoint can
>>>>>> directly answer to a GET/PUT,POST, ... call ?
>>>>>>
>>>>>> <route>
>>>>>> <cxf:rsServer:bean:server/>
>>>>>> <cxf:rsClient:bean:client/>
>>>>>> </route>
>>>>>>
>>>>>> Regards,
>>>>>>
>>>>>> Charles Moulliard
>>>>>> Senior Enterprise Architect
>>>>>> Apache Camel Committer
>>>>>>
>>>>>> *****************************
>>>>>> blog : http://cmoulliard.blogspot.com
>>>>>> twitter : http://twitter.com/cmoulliard
>>>>>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>>>>>
>>>>>> Apache Camel Group :
>>>>>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>>>>>
>>>>>>
>>>>>> On Mon, Nov 30, 2009 at 3:53 PM, Willem Jiang <willem.jiang@gmail.com
>>>>>>
>>>>>> wrote:
>>>>>>>
>>>>>>> Hi Charles,
>>>>>>
>>>>>> You don't need to use the camel cxfrs route all the time, if you have
>>>>>>> to
>>>>>>> retrieve the DB for the REST request.
>>>>>>>
>>>>>>> You just need to define a POJO with annotation, and use OR mapping
>>>>>>> framework to implement retrieve or update the data for your service.
>>>>>>> You
>>>>>>> don't need to let camel be involved ;)
>>>>>>>
>>>>>>> Willem
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Charles Moulliard wrote:
>>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> If camel is used in combination with CXF to handle REST services,
>>>>>>>> How
>>>>>>>> must
>>>>>>>> be designed the POJOs managing the REST services ?
>>>>>>>>
>>>>>>>> eg. camel spring config
>>>>>>>>
>>>>>>>> <cxf:rsServer id="rsServer" address="/camel-rest-example/"
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> serviceClass="org.apache.camel.example.reportincident.restful.ReportIncidentService"
>>>>>>>> />
>>>>>>>>
>>>>>>>> <cxf:rsClient id="rsClient" address="
>>>>>>>> http://localhost:8181/cxf/http/
>>>>>>>> "
>>>>>>>> />
>>>>>>>>
>>>>>>>> <camel:camelContext trace="true"
>>>>>>>> xmlns="http://camel.apache.org/schema/osgi">
>>>>>>>>
>>>>>>>> <camel:route>
>>>>>>>> <camel:from uri="cxfrs:bean:rsServer" /> // REST HTTP
>>>>>>>> Service
>>>>>>>> receiving the call from REST client and providing reply
>>>>>>>> <camel:bean ref="service" method="getCustomer" />
>>>>>>>> <camel:to uri="activemq:queue:IN"/>
>>>>>>>> </camel:route>
>>>>>>>>
>>>>>>>> <camel:route>
>>>>>>>> <camel:from uri="activemq:queue:IN" />
>>>>>>>> <camel:to uri="cxfrs:bean:rsClient" /> // HTTP (internal
>>>>>>>> client)
>>>>>>>> who will generate HTTP reply using CXF - jaxrs:server component to
>>>>>>>> cxfrs:bean:rsServer endpoint
>>>>>>>> </camel:route>
>>>>>>>>
>>>>>>>> Do we have to create two POJOs (one for the request and the other
>>>>>>>> for
>>>>>>>> the
>>>>>>>> reply ?
>>>>>>>> If this is the case, how the method must be defined to provide the
>>>>>>>> REST
>>>>>>>> info
>>>>>>>> (request, parameters, ...) to the camel endpoint (= camel bean) who
>>>>>>>> will
>>>>>>>> be
>>>>>>>> in charge to retrieve by example info from DB ? idem but for the
>>>>>>>> method
>>>>>>>> who
>>>>>>>> will be send back the reply to the client calling the REST service ?
>>>>>>>>
>>>>>>>> ex : Request
>>>>>>>>
>>>>>>>> @GET
>>>>>>>> @Path("/customers/{id}/")
>>>>>>>> public String getCustomer(@PathParam("id") String id) {
>>>>>>>> return id;
>>>>>>>> }
>>>>>>>>
>>>>>>>> ex: reply
>>>>>>>>
>>>>>>>> @GET
>>>>>>>> @Path("/customers/{id}/")
>>>>>>>> public Customer getCustomer(Customer customer) {
>>>>>>>> return customer;
>>>>>>>> }
>>>>>>>>
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>>
>>>>>>>> Charles Moulliard
>>>>>>>> Senior Enterprise Architect
>>>>>>>> Apache Camel Committer
>>>>>>>>
>>>>>>>> *****************************
>>>>>>>> blog : http://cmoulliard.blogspot.com
>>>>>>>> twitter : http://twitter.com/cmoulliard
>>>>>>>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>>>>>>>
>>>>>>>> Apache Camel Group :
>>>>>>>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>
>
Re: CXF - camel CXF
Posted by Willem Jiang <wi...@gmail.com>.
It should work, but you need to some additional work.
As cxfrs producer uses the HttpClient API by default, it is different
with the camel-cxf's client API, so you need to find some way to deal
with the REST response object issue which you shows in CAMEL-2239.
In camel-example-cxf , we have an example[1] to show how to provides a
service which support soap request and REST at same time.
[1]https://svn.apache.org/repos/asf/camel/trunk/examples/camel-example-cxf/src/main/java/org/apache/camel/example/cxf/jaxrs/CamelRouterBuilder.java
Willem
Charles Moulliard wrote:
> Hi Willem,
>
> To come back to REST implementation between Camel - CXF, can you tell me why
> we cannot do the same thing (RESTfull services) that we can do for CXF web
> service ?
>
> Here is the camel route that I use in my camel osgi tutorial (part2)
>
> <camel:route>
> <camel:from uri="cxf:bean:reportIncident" />
> <camel:setHeader headerName="origin">
> <camel:constant>webservice</camel:constant>
> </camel:setHeader>
> <camel:convertBodyTo
> type="org.apache.camel.example.reportincident.InputReportIncident" />
> <camel:to uri="bean:webservice" />
> <camel:inOnly uri="queuingservice:queue:in" />
> <camel:transform>
> <camel:method bean="feedback" method="setOk" />
> </camel:transform>
>
> </camel:route>
>
> Charles Moulliard
> Senior Enterprise Architect
> Apache Camel Committer
>
> *****************************
> blog : http://cmoulliard.blogspot.com
> twitter : http://twitter.com/cmoulliard
> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>
> Apache Camel Group :
> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>
>
> On Tue, Dec 1, 2009 at 3:41 AM, Willem Jiang <wi...@gmail.com> wrote:
>
>> Hi Charles,
>>
>> It really dependents on your use case.
>>
>> Here is an user case, if have bunch of back end (jaxrs:server) services,
>> and you want to do a content based routing, you can user setup a camel
>> cxfrsServer and let the client access this server. Then camel route will
>> take care rest of things :)
>>
>>
>> Willem
>>
>> Charles Moulliard wrote:
>>
>>> If it makes no sense to use rsServer and rsClient both together in a camel
>>> route, what is the advantage to use a camel cxfrsServer endpoint over the
>>> jaxrs:server endpoint ?
>>>
>>> Regards,
>>>
>>> Charles Moulliard
>>> Senior Enterprise Architect
>>> Apache Camel Committer
>>>
>>> *****************************
>>> blog : http://cmoulliard.blogspot.com
>>> twitter : http://twitter.com/cmoulliard
>>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>>
>>> Apache Camel Group :
>>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>>
>>>
>>> On Mon, Nov 30, 2009 at 4:26 PM, Willem Jiang <willem.jiang@gmail.com
>>>> wrote:
>>> Oh, this test case just show how camel-cxfrs consumer and camel-cxfrs
>>>> producer work together.
>>>>
>>>> It is not easy to write a bunch of tests to verify a camel-cxfrs consumer
>>>> can response different request in a short time, so why not we create a
>>>> camel-cxfrs route in Camel to test the consumer and producer at the same
>>>> time.
>>>>
>>>> Willem
>>>>
>>>>
>>>> Charles Moulliard wrote:
>>>>
>>>> If you recommend to call directly the service from the POJO where we
>>>>> have
>>>>> added REST annotation, what is the purpose of this route presented as an
>>>>> example in camel-cxf test if the cxf:rsServer:bean:server endpoint can
>>>>> directly answer to a GET/PUT,POST, ... call ?
>>>>>
>>>>> <route>
>>>>> <cxf:rsServer:bean:server/>
>>>>> <cxf:rsClient:bean:client/>
>>>>> </route>
>>>>>
>>>>> Regards,
>>>>>
>>>>> Charles Moulliard
>>>>> Senior Enterprise Architect
>>>>> Apache Camel Committer
>>>>>
>>>>> *****************************
>>>>> blog : http://cmoulliard.blogspot.com
>>>>> twitter : http://twitter.com/cmoulliard
>>>>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>>>>
>>>>> Apache Camel Group :
>>>>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>>>>
>>>>>
>>>>> On Mon, Nov 30, 2009 at 3:53 PM, Willem Jiang <willem.jiang@gmail.com
>>>>>
>>>>>> wrote:
>>>>>>
>>>>> Hi Charles,
>>>>>
>>>>>> You don't need to use the camel cxfrs route all the time, if you have
>>>>>> to
>>>>>> retrieve the DB for the REST request.
>>>>>>
>>>>>> You just need to define a POJO with annotation, and use OR mapping
>>>>>> framework to implement retrieve or update the data for your service.
>>>>>> You
>>>>>> don't need to let camel be involved ;)
>>>>>>
>>>>>> Willem
>>>>>>
>>>>>>
>>>>>>
>>>>>> Charles Moulliard wrote:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>>> If camel is used in combination with CXF to handle REST services, How
>>>>>>> must
>>>>>>> be designed the POJOs managing the REST services ?
>>>>>>>
>>>>>>> eg. camel spring config
>>>>>>>
>>>>>>> <cxf:rsServer id="rsServer" address="/camel-rest-example/"
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> serviceClass="org.apache.camel.example.reportincident.restful.ReportIncidentService"
>>>>>>> />
>>>>>>>
>>>>>>> <cxf:rsClient id="rsClient" address="http://localhost:8181/cxf/http/
>>>>>>> "
>>>>>>> />
>>>>>>>
>>>>>>> <camel:camelContext trace="true"
>>>>>>> xmlns="http://camel.apache.org/schema/osgi">
>>>>>>>
>>>>>>> <camel:route>
>>>>>>> <camel:from uri="cxfrs:bean:rsServer" /> // REST HTTP Service
>>>>>>> receiving the call from REST client and providing reply
>>>>>>> <camel:bean ref="service" method="getCustomer" />
>>>>>>> <camel:to uri="activemq:queue:IN"/>
>>>>>>> </camel:route>
>>>>>>>
>>>>>>> <camel:route>
>>>>>>> <camel:from uri="activemq:queue:IN" />
>>>>>>> <camel:to uri="cxfrs:bean:rsClient" /> // HTTP (internal
>>>>>>> client)
>>>>>>> who will generate HTTP reply using CXF - jaxrs:server component to
>>>>>>> cxfrs:bean:rsServer endpoint
>>>>>>> </camel:route>
>>>>>>>
>>>>>>> Do we have to create two POJOs (one for the request and the other for
>>>>>>> the
>>>>>>> reply ?
>>>>>>> If this is the case, how the method must be defined to provide the
>>>>>>> REST
>>>>>>> info
>>>>>>> (request, parameters, ...) to the camel endpoint (= camel bean) who
>>>>>>> will
>>>>>>> be
>>>>>>> in charge to retrieve by example info from DB ? idem but for the
>>>>>>> method
>>>>>>> who
>>>>>>> will be send back the reply to the client calling the REST service ?
>>>>>>>
>>>>>>> ex : Request
>>>>>>>
>>>>>>> @GET
>>>>>>> @Path("/customers/{id}/")
>>>>>>> public String getCustomer(@PathParam("id") String id) {
>>>>>>> return id;
>>>>>>> }
>>>>>>>
>>>>>>> ex: reply
>>>>>>>
>>>>>>> @GET
>>>>>>> @Path("/customers/{id}/")
>>>>>>> public Customer getCustomer(Customer customer) {
>>>>>>> return customer;
>>>>>>> }
>>>>>>>
>>>>>>>
>>>>>>> Regards,
>>>>>>>
>>>>>>> Charles Moulliard
>>>>>>> Senior Enterprise Architect
>>>>>>> Apache Camel Committer
>>>>>>>
>>>>>>> *****************************
>>>>>>> blog : http://cmoulliard.blogspot.com
>>>>>>> twitter : http://twitter.com/cmoulliard
>>>>>>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>>>>>>
>>>>>>> Apache Camel Group :
>>>>>>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>
Re: CXF - camel CXF
Posted by Charles Moulliard <cm...@gmail.com>.
Hi Willem,
To come back to REST implementation between Camel - CXF, can you tell me why
we cannot do the same thing (RESTfull services) that we can do for CXF web
service ?
Here is the camel route that I use in my camel osgi tutorial (part2)
<camel:route>
<camel:from uri="cxf:bean:reportIncident" />
<camel:setHeader headerName="origin">
<camel:constant>webservice</camel:constant>
</camel:setHeader>
<camel:convertBodyTo
type="org.apache.camel.example.reportincident.InputReportIncident" />
<camel:to uri="bean:webservice" />
<camel:inOnly uri="queuingservice:queue:in" />
<camel:transform>
<camel:method bean="feedback" method="setOk" />
</camel:transform>
</camel:route>
Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer
*****************************
blog : http://cmoulliard.blogspot.com
twitter : http://twitter.com/cmoulliard
Linkedlin : http://www.linkedin.com/in/charlesmoulliard
Apache Camel Group :
http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
On Tue, Dec 1, 2009 at 3:41 AM, Willem Jiang <wi...@gmail.com> wrote:
> Hi Charles,
>
> It really dependents on your use case.
>
> Here is an user case, if have bunch of back end (jaxrs:server) services,
> and you want to do a content based routing, you can user setup a camel
> cxfrsServer and let the client access this server. Then camel route will
> take care rest of things :)
>
>
> Willem
>
> Charles Moulliard wrote:
>
>> If it makes no sense to use rsServer and rsClient both together in a camel
>> route, what is the advantage to use a camel cxfrsServer endpoint over the
>> jaxrs:server endpoint ?
>>
>> Regards,
>>
>> Charles Moulliard
>> Senior Enterprise Architect
>> Apache Camel Committer
>>
>> *****************************
>> blog : http://cmoulliard.blogspot.com
>> twitter : http://twitter.com/cmoulliard
>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>
>> Apache Camel Group :
>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>
>>
>> On Mon, Nov 30, 2009 at 4:26 PM, Willem Jiang <willem.jiang@gmail.com
>> >wrote:
>>
>> Oh, this test case just show how camel-cxfrs consumer and camel-cxfrs
>>> producer work together.
>>>
>>> It is not easy to write a bunch of tests to verify a camel-cxfrs consumer
>>> can response different request in a short time, so why not we create a
>>> camel-cxfrs route in Camel to test the consumer and producer at the same
>>> time.
>>>
>>> Willem
>>>
>>>
>>> Charles Moulliard wrote:
>>>
>>> If you recommend to call directly the service from the POJO where we
>>>> have
>>>> added REST annotation, what is the purpose of this route presented as an
>>>> example in camel-cxf test if the cxf:rsServer:bean:server endpoint can
>>>> directly answer to a GET/PUT,POST, ... call ?
>>>>
>>>> <route>
>>>> <cxf:rsServer:bean:server/>
>>>> <cxf:rsClient:bean:client/>
>>>> </route>
>>>>
>>>> Regards,
>>>>
>>>> Charles Moulliard
>>>> Senior Enterprise Architect
>>>> Apache Camel Committer
>>>>
>>>> *****************************
>>>> blog : http://cmoulliard.blogspot.com
>>>> twitter : http://twitter.com/cmoulliard
>>>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>>>
>>>> Apache Camel Group :
>>>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>>>
>>>>
>>>> On Mon, Nov 30, 2009 at 3:53 PM, Willem Jiang <willem.jiang@gmail.com
>>>>
>>>>> wrote:
>>>>>
>>>> Hi Charles,
>>>>
>>>>> You don't need to use the camel cxfrs route all the time, if you have
>>>>> to
>>>>> retrieve the DB for the REST request.
>>>>>
>>>>> You just need to define a POJO with annotation, and use OR mapping
>>>>> framework to implement retrieve or update the data for your service.
>>>>> You
>>>>> don't need to let camel be involved ;)
>>>>>
>>>>> Willem
>>>>>
>>>>>
>>>>>
>>>>> Charles Moulliard wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>>> If camel is used in combination with CXF to handle REST services, How
>>>>>> must
>>>>>> be designed the POJOs managing the REST services ?
>>>>>>
>>>>>> eg. camel spring config
>>>>>>
>>>>>> <cxf:rsServer id="rsServer" address="/camel-rest-example/"
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> serviceClass="org.apache.camel.example.reportincident.restful.ReportIncidentService"
>>>>>> />
>>>>>>
>>>>>> <cxf:rsClient id="rsClient" address="http://localhost:8181/cxf/http/
>>>>>> "
>>>>>> />
>>>>>>
>>>>>> <camel:camelContext trace="true"
>>>>>> xmlns="http://camel.apache.org/schema/osgi">
>>>>>>
>>>>>> <camel:route>
>>>>>> <camel:from uri="cxfrs:bean:rsServer" /> // REST HTTP Service
>>>>>> receiving the call from REST client and providing reply
>>>>>> <camel:bean ref="service" method="getCustomer" />
>>>>>> <camel:to uri="activemq:queue:IN"/>
>>>>>> </camel:route>
>>>>>>
>>>>>> <camel:route>
>>>>>> <camel:from uri="activemq:queue:IN" />
>>>>>> <camel:to uri="cxfrs:bean:rsClient" /> // HTTP (internal
>>>>>> client)
>>>>>> who will generate HTTP reply using CXF - jaxrs:server component to
>>>>>> cxfrs:bean:rsServer endpoint
>>>>>> </camel:route>
>>>>>>
>>>>>> Do we have to create two POJOs (one for the request and the other for
>>>>>> the
>>>>>> reply ?
>>>>>> If this is the case, how the method must be defined to provide the
>>>>>> REST
>>>>>> info
>>>>>> (request, parameters, ...) to the camel endpoint (= camel bean) who
>>>>>> will
>>>>>> be
>>>>>> in charge to retrieve by example info from DB ? idem but for the
>>>>>> method
>>>>>> who
>>>>>> will be send back the reply to the client calling the REST service ?
>>>>>>
>>>>>> ex : Request
>>>>>>
>>>>>> @GET
>>>>>> @Path("/customers/{id}/")
>>>>>> public String getCustomer(@PathParam("id") String id) {
>>>>>> return id;
>>>>>> }
>>>>>>
>>>>>> ex: reply
>>>>>>
>>>>>> @GET
>>>>>> @Path("/customers/{id}/")
>>>>>> public Customer getCustomer(Customer customer) {
>>>>>> return customer;
>>>>>> }
>>>>>>
>>>>>>
>>>>>> Regards,
>>>>>>
>>>>>> Charles Moulliard
>>>>>> Senior Enterprise Architect
>>>>>> Apache Camel Committer
>>>>>>
>>>>>> *****************************
>>>>>> blog : http://cmoulliard.blogspot.com
>>>>>> twitter : http://twitter.com/cmoulliard
>>>>>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>>>>>
>>>>>> Apache Camel Group :
>>>>>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>
>
Re: CXF - camel CXF
Posted by Willem Jiang <wi...@gmail.com>.
Hi Charles,
It really dependents on your use case.
Here is an user case, if have bunch of back end (jaxrs:server) services,
and you want to do a content based routing, you can user setup a camel
cxfrsServer and let the client access this server. Then camel route will
take care rest of things :)
Willem
Charles Moulliard wrote:
> If it makes no sense to use rsServer and rsClient both together in a camel
> route, what is the advantage to use a camel cxfrsServer endpoint over the
> jaxrs:server endpoint ?
>
> Regards,
>
> Charles Moulliard
> Senior Enterprise Architect
> Apache Camel Committer
>
> *****************************
> blog : http://cmoulliard.blogspot.com
> twitter : http://twitter.com/cmoulliard
> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>
> Apache Camel Group :
> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>
>
> On Mon, Nov 30, 2009 at 4:26 PM, Willem Jiang <wi...@gmail.com>wrote:
>
>> Oh, this test case just show how camel-cxfrs consumer and camel-cxfrs
>> producer work together.
>>
>> It is not easy to write a bunch of tests to verify a camel-cxfrs consumer
>> can response different request in a short time, so why not we create a
>> camel-cxfrs route in Camel to test the consumer and producer at the same
>> time.
>>
>> Willem
>>
>>
>> Charles Moulliard wrote:
>>
>>> If you recommend to call directly the service from the POJO where we have
>>> added REST annotation, what is the purpose of this route presented as an
>>> example in camel-cxf test if the cxf:rsServer:bean:server endpoint can
>>> directly answer to a GET/PUT,POST, ... call ?
>>>
>>> <route>
>>> <cxf:rsServer:bean:server/>
>>> <cxf:rsClient:bean:client/>
>>> </route>
>>>
>>> Regards,
>>>
>>> Charles Moulliard
>>> Senior Enterprise Architect
>>> Apache Camel Committer
>>>
>>> *****************************
>>> blog : http://cmoulliard.blogspot.com
>>> twitter : http://twitter.com/cmoulliard
>>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>>
>>> Apache Camel Group :
>>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>>
>>>
>>> On Mon, Nov 30, 2009 at 3:53 PM, Willem Jiang <willem.jiang@gmail.com
>>>> wrote:
>>> Hi Charles,
>>>> You don't need to use the camel cxfrs route all the time, if you have to
>>>> retrieve the DB for the REST request.
>>>>
>>>> You just need to define a POJO with annotation, and use OR mapping
>>>> framework to implement retrieve or update the data for your service. You
>>>> don't need to let camel be involved ;)
>>>>
>>>> Willem
>>>>
>>>>
>>>>
>>>> Charles Moulliard wrote:
>>>>
>>>> Hi,
>>>>> If camel is used in combination with CXF to handle REST services, How
>>>>> must
>>>>> be designed the POJOs managing the REST services ?
>>>>>
>>>>> eg. camel spring config
>>>>>
>>>>> <cxf:rsServer id="rsServer" address="/camel-rest-example/"
>>>>>
>>>>>
>>>>>
>>>>> serviceClass="org.apache.camel.example.reportincident.restful.ReportIncidentService"
>>>>> />
>>>>>
>>>>> <cxf:rsClient id="rsClient" address="http://localhost:8181/cxf/http/"
>>>>> />
>>>>>
>>>>> <camel:camelContext trace="true"
>>>>> xmlns="http://camel.apache.org/schema/osgi">
>>>>>
>>>>> <camel:route>
>>>>> <camel:from uri="cxfrs:bean:rsServer" /> // REST HTTP Service
>>>>> receiving the call from REST client and providing reply
>>>>> <camel:bean ref="service" method="getCustomer" />
>>>>> <camel:to uri="activemq:queue:IN"/>
>>>>> </camel:route>
>>>>>
>>>>> <camel:route>
>>>>> <camel:from uri="activemq:queue:IN" />
>>>>> <camel:to uri="cxfrs:bean:rsClient" /> // HTTP (internal
>>>>> client)
>>>>> who will generate HTTP reply using CXF - jaxrs:server component to
>>>>> cxfrs:bean:rsServer endpoint
>>>>> </camel:route>
>>>>>
>>>>> Do we have to create two POJOs (one for the request and the other for
>>>>> the
>>>>> reply ?
>>>>> If this is the case, how the method must be defined to provide the REST
>>>>> info
>>>>> (request, parameters, ...) to the camel endpoint (= camel bean) who will
>>>>> be
>>>>> in charge to retrieve by example info from DB ? idem but for the method
>>>>> who
>>>>> will be send back the reply to the client calling the REST service ?
>>>>>
>>>>> ex : Request
>>>>>
>>>>> @GET
>>>>> @Path("/customers/{id}/")
>>>>> public String getCustomer(@PathParam("id") String id) {
>>>>> return id;
>>>>> }
>>>>>
>>>>> ex: reply
>>>>>
>>>>> @GET
>>>>> @Path("/customers/{id}/")
>>>>> public Customer getCustomer(Customer customer) {
>>>>> return customer;
>>>>> }
>>>>>
>>>>>
>>>>> Regards,
>>>>>
>>>>> Charles Moulliard
>>>>> Senior Enterprise Architect
>>>>> Apache Camel Committer
>>>>>
>>>>> *****************************
>>>>> blog : http://cmoulliard.blogspot.com
>>>>> twitter : http://twitter.com/cmoulliard
>>>>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>>>>
>>>>> Apache Camel Group :
>>>>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>>>>
>>>>>
>>>>>
>
Re: CXF - camel CXF
Posted by Charles Moulliard <cm...@gmail.com>.
If it makes no sense to use rsServer and rsClient both together in a camel
route, what is the advantage to use a camel cxfrsServer endpoint over the
jaxrs:server endpoint ?
Regards,
Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer
*****************************
blog : http://cmoulliard.blogspot.com
twitter : http://twitter.com/cmoulliard
Linkedlin : http://www.linkedin.com/in/charlesmoulliard
Apache Camel Group :
http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
On Mon, Nov 30, 2009 at 4:26 PM, Willem Jiang <wi...@gmail.com>wrote:
> Oh, this test case just show how camel-cxfrs consumer and camel-cxfrs
> producer work together.
>
> It is not easy to write a bunch of tests to verify a camel-cxfrs consumer
> can response different request in a short time, so why not we create a
> camel-cxfrs route in Camel to test the consumer and producer at the same
> time.
>
> Willem
>
>
> Charles Moulliard wrote:
>
>> If you recommend to call directly the service from the POJO where we have
>> added REST annotation, what is the purpose of this route presented as an
>> example in camel-cxf test if the cxf:rsServer:bean:server endpoint can
>> directly answer to a GET/PUT,POST, ... call ?
>>
>> <route>
>> <cxf:rsServer:bean:server/>
>> <cxf:rsClient:bean:client/>
>> </route>
>>
>> Regards,
>>
>> Charles Moulliard
>> Senior Enterprise Architect
>> Apache Camel Committer
>>
>> *****************************
>> blog : http://cmoulliard.blogspot.com
>> twitter : http://twitter.com/cmoulliard
>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>
>> Apache Camel Group :
>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>
>>
>> On Mon, Nov 30, 2009 at 3:53 PM, Willem Jiang <willem.jiang@gmail.com
>> >wrote:
>>
>> Hi Charles,
>>>
>>> You don't need to use the camel cxfrs route all the time, if you have to
>>> retrieve the DB for the REST request.
>>>
>>> You just need to define a POJO with annotation, and use OR mapping
>>> framework to implement retrieve or update the data for your service. You
>>> don't need to let camel be involved ;)
>>>
>>> Willem
>>>
>>>
>>>
>>> Charles Moulliard wrote:
>>>
>>> Hi,
>>>>
>>>> If camel is used in combination with CXF to handle REST services, How
>>>> must
>>>> be designed the POJOs managing the REST services ?
>>>>
>>>> eg. camel spring config
>>>>
>>>> <cxf:rsServer id="rsServer" address="/camel-rest-example/"
>>>>
>>>>
>>>>
>>>> serviceClass="org.apache.camel.example.reportincident.restful.ReportIncidentService"
>>>> />
>>>>
>>>> <cxf:rsClient id="rsClient" address="http://localhost:8181/cxf/http/"
>>>> />
>>>>
>>>> <camel:camelContext trace="true"
>>>> xmlns="http://camel.apache.org/schema/osgi">
>>>>
>>>> <camel:route>
>>>> <camel:from uri="cxfrs:bean:rsServer" /> // REST HTTP Service
>>>> receiving the call from REST client and providing reply
>>>> <camel:bean ref="service" method="getCustomer" />
>>>> <camel:to uri="activemq:queue:IN"/>
>>>> </camel:route>
>>>>
>>>> <camel:route>
>>>> <camel:from uri="activemq:queue:IN" />
>>>> <camel:to uri="cxfrs:bean:rsClient" /> // HTTP (internal
>>>> client)
>>>> who will generate HTTP reply using CXF - jaxrs:server component to
>>>> cxfrs:bean:rsServer endpoint
>>>> </camel:route>
>>>>
>>>> Do we have to create two POJOs (one for the request and the other for
>>>> the
>>>> reply ?
>>>> If this is the case, how the method must be defined to provide the REST
>>>> info
>>>> (request, parameters, ...) to the camel endpoint (= camel bean) who will
>>>> be
>>>> in charge to retrieve by example info from DB ? idem but for the method
>>>> who
>>>> will be send back the reply to the client calling the REST service ?
>>>>
>>>> ex : Request
>>>>
>>>> @GET
>>>> @Path("/customers/{id}/")
>>>> public String getCustomer(@PathParam("id") String id) {
>>>> return id;
>>>> }
>>>>
>>>> ex: reply
>>>>
>>>> @GET
>>>> @Path("/customers/{id}/")
>>>> public Customer getCustomer(Customer customer) {
>>>> return customer;
>>>> }
>>>>
>>>>
>>>> Regards,
>>>>
>>>> Charles Moulliard
>>>> Senior Enterprise Architect
>>>> Apache Camel Committer
>>>>
>>>> *****************************
>>>> blog : http://cmoulliard.blogspot.com
>>>> twitter : http://twitter.com/cmoulliard
>>>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>>>
>>>> Apache Camel Group :
>>>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>>>
>>>>
>>>>
>>
>
Re: CXF - camel CXF
Posted by Willem Jiang <wi...@gmail.com>.
Oh, this test case just show how camel-cxfrs consumer and camel-cxfrs
producer work together.
It is not easy to write a bunch of tests to verify a camel-cxfrs
consumer can response different request in a short time, so why not we
create a camel-cxfrs route in Camel to test the consumer and producer
at the same time.
Willem
Charles Moulliard wrote:
> If you recommend to call directly the service from the POJO where we have
> added REST annotation, what is the purpose of this route presented as an
> example in camel-cxf test if the cxf:rsServer:bean:server endpoint can
> directly answer to a GET/PUT,POST, ... call ?
>
> <route>
> <cxf:rsServer:bean:server/>
> <cxf:rsClient:bean:client/>
> </route>
>
> Regards,
>
> Charles Moulliard
> Senior Enterprise Architect
> Apache Camel Committer
>
> *****************************
> blog : http://cmoulliard.blogspot.com
> twitter : http://twitter.com/cmoulliard
> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>
> Apache Camel Group :
> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>
>
> On Mon, Nov 30, 2009 at 3:53 PM, Willem Jiang <wi...@gmail.com>wrote:
>
>> Hi Charles,
>>
>> You don't need to use the camel cxfrs route all the time, if you have to
>> retrieve the DB for the REST request.
>>
>> You just need to define a POJO with annotation, and use OR mapping
>> framework to implement retrieve or update the data for your service. You
>> don't need to let camel be involved ;)
>>
>> Willem
>>
>>
>>
>> Charles Moulliard wrote:
>>
>>> Hi,
>>>
>>> If camel is used in combination with CXF to handle REST services, How must
>>> be designed the POJOs managing the REST services ?
>>>
>>> eg. camel spring config
>>>
>>> <cxf:rsServer id="rsServer" address="/camel-rest-example/"
>>>
>>>
>>> serviceClass="org.apache.camel.example.reportincident.restful.ReportIncidentService"
>>> />
>>>
>>> <cxf:rsClient id="rsClient" address="http://localhost:8181/cxf/http/"
>>> />
>>>
>>> <camel:camelContext trace="true"
>>> xmlns="http://camel.apache.org/schema/osgi">
>>>
>>> <camel:route>
>>> <camel:from uri="cxfrs:bean:rsServer" /> // REST HTTP Service
>>> receiving the call from REST client and providing reply
>>> <camel:bean ref="service" method="getCustomer" />
>>> <camel:to uri="activemq:queue:IN"/>
>>> </camel:route>
>>>
>>> <camel:route>
>>> <camel:from uri="activemq:queue:IN" />
>>> <camel:to uri="cxfrs:bean:rsClient" /> // HTTP (internal
>>> client)
>>> who will generate HTTP reply using CXF - jaxrs:server component to
>>> cxfrs:bean:rsServer endpoint
>>> </camel:route>
>>>
>>> Do we have to create two POJOs (one for the request and the other for the
>>> reply ?
>>> If this is the case, how the method must be defined to provide the REST
>>> info
>>> (request, parameters, ...) to the camel endpoint (= camel bean) who will
>>> be
>>> in charge to retrieve by example info from DB ? idem but for the method
>>> who
>>> will be send back the reply to the client calling the REST service ?
>>>
>>> ex : Request
>>>
>>> @GET
>>> @Path("/customers/{id}/")
>>> public String getCustomer(@PathParam("id") String id) {
>>> return id;
>>> }
>>>
>>> ex: reply
>>>
>>> @GET
>>> @Path("/customers/{id}/")
>>> public Customer getCustomer(Customer customer) {
>>> return customer;
>>> }
>>>
>>>
>>> Regards,
>>>
>>> Charles Moulliard
>>> Senior Enterprise Architect
>>> Apache Camel Committer
>>>
>>> *****************************
>>> blog : http://cmoulliard.blogspot.com
>>> twitter : http://twitter.com/cmoulliard
>>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>>
>>> Apache Camel Group :
>>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>>
>>>
>
Re: CXF - camel CXF
Posted by Charles Moulliard <cm...@gmail.com>.
If you recommend to call directly the service from the POJO where we have
added REST annotation, what is the purpose of this route presented as an
example in camel-cxf test if the cxf:rsServer:bean:server endpoint can
directly answer to a GET/PUT,POST, ... call ?
<route>
<cxf:rsServer:bean:server/>
<cxf:rsClient:bean:client/>
</route>
Regards,
Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer
*****************************
blog : http://cmoulliard.blogspot.com
twitter : http://twitter.com/cmoulliard
Linkedlin : http://www.linkedin.com/in/charlesmoulliard
Apache Camel Group :
http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
On Mon, Nov 30, 2009 at 3:53 PM, Willem Jiang <wi...@gmail.com>wrote:
> Hi Charles,
>
> You don't need to use the camel cxfrs route all the time, if you have to
> retrieve the DB for the REST request.
>
> You just need to define a POJO with annotation, and use OR mapping
> framework to implement retrieve or update the data for your service. You
> don't need to let camel be involved ;)
>
> Willem
>
>
>
> Charles Moulliard wrote:
>
>> Hi,
>>
>> If camel is used in combination with CXF to handle REST services, How must
>> be designed the POJOs managing the REST services ?
>>
>> eg. camel spring config
>>
>> <cxf:rsServer id="rsServer" address="/camel-rest-example/"
>>
>>
>> serviceClass="org.apache.camel.example.reportincident.restful.ReportIncidentService"
>> />
>>
>> <cxf:rsClient id="rsClient" address="http://localhost:8181/cxf/http/"
>> />
>>
>> <camel:camelContext trace="true"
>> xmlns="http://camel.apache.org/schema/osgi">
>>
>> <camel:route>
>> <camel:from uri="cxfrs:bean:rsServer" /> // REST HTTP Service
>> receiving the call from REST client and providing reply
>> <camel:bean ref="service" method="getCustomer" />
>> <camel:to uri="activemq:queue:IN"/>
>> </camel:route>
>>
>> <camel:route>
>> <camel:from uri="activemq:queue:IN" />
>> <camel:to uri="cxfrs:bean:rsClient" /> // HTTP (internal
>> client)
>> who will generate HTTP reply using CXF - jaxrs:server component to
>> cxfrs:bean:rsServer endpoint
>> </camel:route>
>>
>> Do we have to create two POJOs (one for the request and the other for the
>> reply ?
>> If this is the case, how the method must be defined to provide the REST
>> info
>> (request, parameters, ...) to the camel endpoint (= camel bean) who will
>> be
>> in charge to retrieve by example info from DB ? idem but for the method
>> who
>> will be send back the reply to the client calling the REST service ?
>>
>> ex : Request
>>
>> @GET
>> @Path("/customers/{id}/")
>> public String getCustomer(@PathParam("id") String id) {
>> return id;
>> }
>>
>> ex: reply
>>
>> @GET
>> @Path("/customers/{id}/")
>> public Customer getCustomer(Customer customer) {
>> return customer;
>> }
>>
>>
>> Regards,
>>
>> Charles Moulliard
>> Senior Enterprise Architect
>> Apache Camel Committer
>>
>> *****************************
>> blog : http://cmoulliard.blogspot.com
>> twitter : http://twitter.com/cmoulliard
>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>
>> Apache Camel Group :
>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>
>>
>
Re: CXF - camel CXF
Posted by Willem Jiang <wi...@gmail.com>.
Hi Charles,
You don't need to use the camel cxfrs route all the time, if you have to
retrieve the DB for the REST request.
You just need to define a POJO with annotation, and use OR mapping
framework to implement retrieve or update the data for your service. You
don't need to let camel be involved ;)
Willem
Charles Moulliard wrote:
> Hi,
>
> If camel is used in combination with CXF to handle REST services, How must
> be designed the POJOs managing the REST services ?
>
> eg. camel spring config
>
> <cxf:rsServer id="rsServer" address="/camel-rest-example/"
>
> serviceClass="org.apache.camel.example.reportincident.restful.ReportIncidentService"
> />
>
> <cxf:rsClient id="rsClient" address="http://localhost:8181/cxf/http/" />
>
> <camel:camelContext trace="true"
> xmlns="http://camel.apache.org/schema/osgi">
>
> <camel:route>
> <camel:from uri="cxfrs:bean:rsServer" /> // REST HTTP Service
> receiving the call from REST client and providing reply
> <camel:bean ref="service" method="getCustomer" />
> <camel:to uri="activemq:queue:IN"/>
> </camel:route>
>
> <camel:route>
> <camel:from uri="activemq:queue:IN" />
> <camel:to uri="cxfrs:bean:rsClient" /> // HTTP (internal client)
> who will generate HTTP reply using CXF - jaxrs:server component to
> cxfrs:bean:rsServer endpoint
> </camel:route>
>
> Do we have to create two POJOs (one for the request and the other for the
> reply ?
> If this is the case, how the method must be defined to provide the REST info
> (request, parameters, ...) to the camel endpoint (= camel bean) who will be
> in charge to retrieve by example info from DB ? idem but for the method who
> will be send back the reply to the client calling the REST service ?
>
> ex : Request
>
> @GET
> @Path("/customers/{id}/")
> public String getCustomer(@PathParam("id") String id) {
> return id;
> }
>
> ex: reply
>
> @GET
> @Path("/customers/{id}/")
> public Customer getCustomer(Customer customer) {
> return customer;
> }
>
>
> Regards,
>
> Charles Moulliard
> Senior Enterprise Architect
> Apache Camel Committer
>
> *****************************
> blog : http://cmoulliard.blogspot.com
> twitter : http://twitter.com/cmoulliard
> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>
> Apache Camel Group :
> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>