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.