Hi Claus,

I did follow this camel example & set up a timer 'from' end-point which my
processor 'catched'.

My will is to query this 'catched' data by sending it to a different
end-point such as a service provider.

Therefore, i deployed two SU's in my servicemix: One for the camel routing
(timer example) & two is for 

the HTTP servicemix provider which i want to invoke in the proceesor.

My question seems simple as long as an API exists for it:

When my Processor class is instansiated than the process() method is
invoked:

public void process(Exchange exchange) throws Exception {

The exchange.getIn() consist my 'from' end-point data (=the timer).

I need the API to fetch the Http servicemix provider end-point & to send
hime a request with this data.

One extra small question: Do i need to replace my provider SU with a camel
http producer SU?

Thanks.

Claus Ibsen-2 wrote:
> 
> Hi
> 
> Yeah its a bit mixed up since Camel and ServiceMix have classes with
> common name: Endpoint, Exchange etc.
> 
> All the code I have shown assumes pure Camel code.
> 
> I advice to check the ServceMix docu about using Camel in ServiceMix.
> And get a basic example running. Such as this example
> http://servicemix.apache.org/camel-example.html
> 
> You could use that as a starting point to get Camel invoking your HTTP
> server. Just let the timer start it.
> Then later your can connect using SMX instead of the camel timer.
> 
> 
> 
> On Sat, Jan 10, 2009 at 12:53 PM, Liav Ezer <liav.e...@gmail.com> wrote:
>>
>> Hi Claus again,
>>
>> I addition to what i asked in my previouse response here is a question
>> regarding the producer snippet which you gave in your last answer:
>>
>> I indeed wrote the following in my process() method:
>>
>> ProducerTemplate producer =
>>                         
>> exchange.getCamelContext().createProducerTemplate();
>>                            Object response =
>>                         
>> producer.sendBody("http://myserver.com/myapp?foo=bar";, "Liav Camel
>> POC");
>>
>> but i don't have the camel context at hand (saying "The method
>> getCamelContext() is undefined for the type Exchange").
>>  & also do i need to deploy a camel http producer su instead of an http
>> service mix provider?
>>
>> Claus Ibsen-2 wrote:
>>>
>>> Hi
>>>
>>> When you are working with ServiceMix you must use the JBI component in
>>> Camel
>>> http://activemq.apache.org/camel/jbi.html
>>>
>>> So your endpoints should starting with "jbi:XXXX"
>>>
>>> And ServiceMix has some Camel docu here:
>>> http://servicemix.apache.org/servicemix-camel.html
>>>
>>> Could you take a look at this docu a bit. There might be some help
>>> there.
>>>
>>> Try to get something more easier working with SMX and Camel and then
>>> later do the stuff you want with the dynamic add a camel context.
>>>
>>>
>>> On Sat, Jan 10, 2009 at 12:39 PM, Liav Ezer <liav.e...@gmail.com> wrote:
>>>>
>>>> Hi Claus,
>>>>
>>>> I read your tutorial & learnt from it. Thanks. I adopted the cxf
>>>> framework
>>>> for now.
>>>>
>>>> Regarding my project (as stated above in snippets):
>>>>
>>>> I planted the following camel routing logic at my processor class:
>>>>
>>>> process method - with camel:
>>>>
>>>> public void process(Exchange exchange) throws Exception {
>>>>
>>>>  CamelContext camel = new DefaultCamelContext();
>>>>  camel.start();
>>>>
>>>>  Component component = (Component)
>>>> camel.getComponent("http-provider-su");
>>>>
>>>>  Endpoint endpoint = (Endpoint) ((org.apache.camel.Component)
>>>> component).createEndpoint("provider:com.amdocs.oxp.esb");
>>>>
>>>>  exchange.getIn().setBody("Liav testing here!");
>>>>
>>>>  Producer producer = ((org.apache.camel.Endpoint)
>>>> endpoint).createProducer();
>>>>
>>>>  producer.start();
>>>>  producer.process(exchange);
>>>>  producer.stop();
>>>>
>>>>  //System.out.println(exchange.getIn().toString() + "process activated
>>>> by
>>>> SU");
>>>> }
>>>>
>>>> And got the following exception while SA's jar was deployed:
>>>>
>>>> ERROR - DeadLetterChannel              - Failed delivery for
>>>> exchangeId:
>>>> ID-LIAVE02/1885-1231586726193/0-0. On delivery attemp
>>>> java.lang.NullPointerException
>>>>        at
>>>> org.apache.servicemix.tutorial.camel.MyProcessor.process(MyProcessor.java:33)
>>>> at
>>>> org.apache.camel.impl.ProcessorEndpoint.onExchange(ProcessorEndpoint.java:92)
>>>>        at
>>>> org.apache.camel.impl.ProcessorEndpoint$1.process(ProcessorEndpoint.java:66)
>>>>        at
>>>> org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorT
>>>>        at
>>>> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:75)
>>>>        at
>>>> org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:146)
>>>>        at
>>>> org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:90)
>>>>        at
>>>> org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
>>>>        at org.apache.camel.processor.Pipeline.process(Pipeline.java:85)
>>>>        at
>>>> org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:39)
>>>>        at
>>>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:41)
>>>>        at
>>>> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:66)
>>>>        at
>>>> org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:91)
>>>>        at
>>>> org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:48)
>>>>        at java.util.TimerThread.mainLoop(Timer.java:512)
>>>>        at java.util.TimerThread.run(Timer.java:462)
>>>>
>>>> Be advise that line 33 is:Endpoint endpoint = (Endpoint)
>>>> ((org.apache.camel.Component)
>>>> component).createEndpoint("provider:com.amdocs.oxp.esb");
>>>>
>>>> My questions:
>>>>
>>>> 1. As bolded above i "fetched" my provider su component by staing it's
>>>> name
>>>> - is it correct?
>>>>
>>>> 2. I used the following servicemix object (not camel's) since i work
>>>> with
>>>> servicemix provider endpoint. That's the reason for all the casting in
>>>> my
>>>> code:
>>>> import org.apache.servicemix.jbi.deployment.Component;
>>>> import org.apache.servicemix.jbi.framework.Endpoint;
>>>>
>>>> Is it correct?
>>>>
>>>> Thank again,
>>>> Liav Ezer.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> Claus Ibsen-2 wrote:
>>>>>
>>>>> Hi
>>>>>
>>>>> You can use the producer template to call an external http server and
>>>>> get the response.
>>>>>
>>>>> See this tutorial:
>>>>> http://activemq.apache.org/camel/tutorial-axis-camel.html
>>>>>
>>>>> From the section - integrating Camel
>>>>>
>>>>> Its kinda the same but its just uses the producer template to save a
>>>>> file. Its the same API for using any of the camel components.
>>>>>
>>>>> Little sidenote:
>>>>> And since you use InOut you should use: requestBody instread of
>>>>> sendBody. However Camel is not to stricky about this yet so if you use
>>>>> a send instead of request then it should work as well.
>>>>>
>>>>> The demo shows how to inject a producer template from spring into your
>>>>> bean class = your processor. when you have this template you can call
>>>>> the external http server and get the response using the requestBody
>>>>> method.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Thu, Jan 8, 2009 at 1:46 PM, Liav Ezer <liav.e...@gmail.com> wrote:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> Here is my camel-context:
>>>>>>
>>>>>>  <camelContext id="camel"
>>>>>> xmlns="http://activemq.apache.org/camel/schema/spring";>
>>>>>>    <package>org.apache.servicemix.tutorial.camel</package>
>>>>>>  </camelContext>
>>>>>>
>>>>>>  <bean id="myProcessor"
>>>>>> class="org.apache.servicemix.tutorial.camel.MyProcessor"/>
>>>>>>
>>>>>> Here is my RouteBuilder java file:
>>>>>>
>>>>>> public class MyRouteBuilder extends RouteBuilder {
>>>>>>        public void configure() {
>>>>>>       
>>>>>> from("timer://tutorial?fixedRate=true&delay=3000&period=10000")
>>>>>>                .setBody(constant(".....................Liav Camel
>>>>>> POC......................."))
>>>>>>                        .to("myProcessor");
>>>>>>
>>>>>>    }
>>>>>> }
>>>>>>
>>>>>> Here is my processor java file:
>>>>>> public class MyProcessor implements Processor {
>>>>>>          public void process(Exchange exchange) throws Exception {
>>>>>>              //WANT TO INITIATE A CALL TO http pROVIDER END POINT &
>>>>>> PASS
>>>>>> THE
>>>>>> 'FROM'
>>>>>>                  // PARAMETRS RECIEVED PROIRE TO THE PROCESSOR
>>>>>> INVOKE.
>>>>>> }
>>>>>> }
>>>>>>
>>>>>> Thanks.
>>>>>> --
>>>>>> View this message in context:
>>>>>> http://www.nabble.com/How-do-i-call-an-HTTP-Provider-end-pont-from-the-process-method--tp21351142s22882p21351142.html
>>>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> /Claus Ibsen
>>>>> Apache Camel Committer
>>>>> Blog: http://davsclaus.blogspot.com/
>>>>>
>>>>>
>>>>
>>>> --
>>>> View this message in context:
>>>> http://www.nabble.com/How-do-i-call-an-HTTP-Provider-end-pont-from-the-process-method--tp21351142s22882p21387207.html
>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>>
>>> /Claus Ibsen
>>> Apache Camel Committer
>>> Blog: http://davsclaus.blogspot.com/
>>>
>>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/How-do-i-call-an-HTTP-Provider-end-pont-from-the-process-method--tp21351142s22882p21387318.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
> 
> 
> 
> -- 
> 
> /Claus Ibsen
> Apache Camel Committer
> Blog: http://davsclaus.blogspot.com/
> 
> 

-- 
View this message in context: 
http://www.nabble.com/How-do-i-call-an-HTTP-Provider-end-pont-from-the-process-method--tp21351142s22882p21388391.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to