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.

Reply via email to