You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by stevenmaring <st...@gmail.com> on 2009/06/03 21:01:56 UTC

creating a pipeline starting with a WebServiceProvider

I like the simplicity afforded by the camel transport with CXF.  However, I'm
stuck with Tomcat instead of Jetty, so from what I understand I need to
create a WebServiceProvider and use the servlet transport.

My end goals is basically a pipeline that looks like this:

--> web service --> jms queue --> pojo --> jms queue --> web service client
-->

... but I don't see a way to create a route that would take the body of my
soap message and pass it on to the queue after the first step.  Do I need to
just start a new route using a ProducerTemplate from my pojo that processes
the soap request?


	<camel:camelContext id="camel">
		<camel:route>
                      <camel:from uri="cxf:bean:voiceRequestSOAPEndpoint"/>
                      <camel:to
uri="bean:voiceRequestSOAPProcessor?method=processSOAPRequest"/>
               </camel:route>
	</camel:camelContext>

	<bean id="voiceRequestSOAPProcessor"
class="com.ess.tts.voicerequest.provider.VoiceRequestSOAPProcessor" />

   	<cxf:cxfEndpoint id="voiceRequestSOAPEndpoint"
	       
serviceClass="com.ess.tts.voicerequest.provider.VoiceRequestProvider"
		address="http://localhost:8080/voicing/voiceRequestSOAP"
   		      wsdlURL="wsdl/voiceRequest.wsdl"
   		      endpointName="s:voiceRequestSOAPEndpoint"
   		      serviceName="s:voiceRequestSOAPService"
   	      	xmlns:s="http://tts.ess.com/voiceRequest/"/>

If that is the case, that I need to start a new route, then is this
WebServiceProvider approach really buying me anything with Camel?  It seems
to me that creating a jaxws WebService endpoint with the CXF jaxws spring
configuration is a bit more straight-forward (no SOAP envelope
manipulation). http://cwiki.apache.org/CXF20DOC/jax-ws-configuration.html

Am I wrong in this thinking or am I missing something fundamental here?

Thanks.

-Steve Maring
-- 
View this message in context: http://www.nabble.com/creating-a-pipeline-starting-with-a-WebServiceProvider-tp23857321p23857321.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Re: creating a pipeline starting with a WebServiceProvider

Posted by Willem Jiang <wi...@gmail.com>.
Hi Steve

The solution depends on what you want to do with the soap message.
If you just want to leverage the Tomcat servlet transport and don't want
to get touch with SOAP message, you don't have to use the
WebServiceProvider.

You can create the camel context with the Pipeline that you want create
in the ServiceImpl and export this ServiceImpl as a Web Services. Claus
wrote a great tutorial for it[1] and you may take a look :)

[1] http://cwiki.apache.org/CAMEL/tutorial-example-reportincident-part5.html

Willem

stevenmaring wrote:
> I like the simplicity afforded by the camel transport with CXF.  However, I'm
> stuck with Tomcat instead of Jetty, so from what I understand I need to
> create a WebServiceProvider and use the servlet transport.
> 
> My end goals is basically a pipeline that looks like this:
> 
> --> web service --> jms queue --> pojo --> jms queue --> web service client
> -->
> 
> ... but I don't see a way to create a route that would take the body of my
> soap message and pass it on to the queue after the first step.  Do I need to
> just start a new route using a ProducerTemplate from my pojo that processes
> the soap request?
> 
> 
> 	<camel:camelContext id="camel">
> 		<camel:route>
>                       <camel:from uri="cxf:bean:voiceRequestSOAPEndpoint"/>
>                       <camel:to
> uri="bean:voiceRequestSOAPProcessor?method=processSOAPRequest"/>
>                </camel:route>
> 	</camel:camelContext>
> 
> 	<bean id="voiceRequestSOAPProcessor"
> class="com.ess.tts.voicerequest.provider.VoiceRequestSOAPProcessor" />
> 
>    	<cxf:cxfEndpoint id="voiceRequestSOAPEndpoint"
> 	       
> serviceClass="com.ess.tts.voicerequest.provider.VoiceRequestProvider"
> 		address="http://localhost:8080/voicing/voiceRequestSOAP"
>    		      wsdlURL="wsdl/voiceRequest.wsdl"
>    		      endpointName="s:voiceRequestSOAPEndpoint"
>    		      serviceName="s:voiceRequestSOAPService"
>    	      	xmlns:s="http://tts.ess.com/voiceRequest/"/>
> 
> If that is the case, that I need to start a new route, then is this
> WebServiceProvider approach really buying me anything with Camel?  It seems
> to me that creating a jaxws WebService endpoint with the CXF jaxws spring
> configuration is a bit more straight-forward (no SOAP envelope
> manipulation). http://cwiki.apache.org/CXF20DOC/jax-ws-configuration.html
> 
> Am I wrong in this thinking or am I missing something fundamental here?
> 
> Thanks.
> 
> -Steve Maring