camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sergey Beryozkin <sberyoz...@gmail.com>
Subject Re: Rest client
Date Wed, 25 Jul 2012 21:21:56 GMT
Hi
On 25/07/12 20:00, bitter geek wrote:
> Hi Sergey,
>
> I'm quite new to Camel, still trying to get my head around a few concepts.
>

Well, even though a CXFRS component has been around for few years now, I 
haven't had any contributions done, very minor ones, it really works 
thanks to all the work from Willem. Also, I've had a very limited 
exposure to working with Camel recently - I look forward to working with 
it more but to be honest I have to catch up myself too

> How do you create a CXFR producer? Or for that matter, how do you
> specify what type of producer to create?
This is FAQ, please review the tutorials/books. I believe you typically 
start from something, say from "direct:something", if the producer is at 
the top of the route, and they you say 
from("direct:something").to("cxfrs://somebeanOrsomeaddres"), etc
>
> Does this have anything to do with the header
> CxfConstants.CAMEL_CXF_RS_USING_HTTP_API as shown below?
>
AFAIK, CxfConstants.CAMEL_CXF_RS_USING_HTTP_API is typically redundant
given it's a default value. It's a CXFRS-specific configuration property 
so it does not affect the way producers are picked up

Cheers, Sergey

> Thanks!
>
> Exchange exchange = template.send("direct://proxy", new Processor() {
>      public void process(Exchange exchange) throws Exception {
>          exchange.setPattern(ExchangePattern.InOut);
>          Message inMessage = exchange.getIn();
>          setupDestinationURL(inMessage);
>          // set the operation name
>          inMessage.setHeader(CxfConstants.OPERATION_NAME, "getCustomer");
>          // using the proxy client API
>          inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_USING_HTTP_API,
> Boolean.FALSE);
>          // set a customer header
>          inMessage.setHeader("key", "value");
>          // set the parameters , if you just have one parameter
>          // camel will put this object into an Object[] itself
>          inMessage.setBody("123");
>      }
> });
>
> On 7/25/12, Sergey Beryozkin<sberyozkin@gmail.com>  wrote:
>> On 25/07/12 09:30, bitter geek wrote:
>>> Hi Sergey,
>>>
>>> Can you elaborate on how to use CXF RS endpoint without using the
>>> producer?
>>>
>>
>> The CXFRS producer is a component built on top of the CXF RS client
>> code, however you do not have to use it in order to talk to a RS service
>> given the way that service is implemented is not important (could be
>> CXFRS on the other end or could be a PHP-based web app),
>> Here are some links:
>>
>> http://camel.apache.org/restlet.html
>> http://camel.apache.org/jetty.html
>> http://camel.apache.org/http.html
>>
>> Try one of those (I haven't tried). In meantime we'll work on getting
>> the CXFRS client component thread-safe
>>
>> Sergey
>>
>>> You help is much appreciated.
>>>
>>> Thanks,
>>>
>>> Bing
>>>
>>> On 7/24/12, Sergey Beryozkin<sberyozkin@gmail.com>   wrote:
>>>> I lost your private email,
>>>>
>>>> the CXF RS endpoint is safe, only the producer is not right now
>>>>
>>>> Cheers, Sergey
>>>>
>>>> On 24/07/12 15:00, Sergey Beryozkin wrote:
>>>>> Hi
>>>>> On 24/07/12 14:52, bitter geek wrote:
>>>>>> Hi All,
>>>>>>
>>>>>> I'm a bit confused with the sample code for creating rest endpoint.
>>>>>>
>>>>>> I do not have access to the rest service class but only want to create
>>>>>> a rest endpoint to use with camel.
>>>>>>
>>>>>> Do I only need to create rsClient tag? If so, what class do I put
>>>>>> there for serviceClass? Why does it need a serviceClass if this
>>>>>> endpoint is just used to make an http request?
>>>>>>
>>>>> I believe this option is there to make a proxy based invocation, for
>>>>> the
>>>>> produce/consumes types be derived from specific operations available
on
>>>>> the service class.
>>>>>
>>>>> However, the cxf rs producer is not thread safe right now.
>>>>> So I'd recommend you try one of the other Camel HTTP components which
>>>>> can make outbound calls till we get it fixed (http, jetty, etc - I'm
>>>>> assuming they are thread-safe on the client side), or please experiment
>>>>> with embedding direct thread-safe cxf jaxrs/web client references into
>>>>> the root
>>>>>
>>>>> Sergey
>>>>>
>>>>>> In addition, how do I get hold of this endpoint in Java?
>>>>>>
>>>>>> Thanks a lot for your help!
>>>>>>
>>>>>> Bing
>>>>>>
>>>>>> /////////////////////////////////////////////////////
>>>>>> <!-- Defined the server endpoint to create the cxf-rs consumer
-->
>>>>>> <cxf:rsServer id="rsServer"
>>>>>> address="http://localhost:${CXFTestSupport.port1}/CxfRsRouterTest/route"
>>>>>> serviceClass="org.apache.camel.component.cxf.jaxrs.testbean.CustomerService"
>>>>>>
>>>>>> loggingFeatureEnabled="true" loggingSizeLimit="20"/>
>>>>>>
>>>>>> <!-- Defined the client endpoint to create the cxf-rs consumer
-->
>>>>>> <cxf:rsClient id="rsClient"
>>>>>> address="http://localhost:${CXFTestSupport.port2}/CxfRsRouterTest/rest"
>>>>>> serviceClass="org.apache.camel.component.cxf.jaxrs.testbean.CustomerService"
>>>>>>
>>>>>> loggingFeatureEnabled="true" />
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Sergey Beryozkin
>>>>
>>>> Talend Community Coders
>>>> http://coders.talend.com/
>>>>
>>>> Blog: http://sberyozkin.blogspot.com
>>>>
>>
>>
>> --
>> Sergey Beryozkin
>>
>> Talend Community Coders
>> http://coders.talend.com/
>>
>> Blog: http://sberyozkin.blogspot.com
>>

Mime
View raw message