You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by mta38 <mt...@orange-ftgroup.com> on 2008/12/18 13:56:23 UTC

Camel - CXf - Web service - seda

Hi all,
New route, new problem…:-(
I try to route message from a front end web service to back ends web
service.
The following snippet describe front end and back end web service message

Front end main request message
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cli="http://www.example.org/Client/">
   <soapenv:Header/>
   <soapenv:Body>
      <cli:soldeClient>
         <cli:idClient>CLIENT_VALUE</cli:idClient>
      </cli:soldeClient>
   </soapenv:Body>
</soapenv:Envelope>

Back end expected request
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cli="http://www.example.org/ClientInternet/">
   <soapenv:Header/>
   <soapenv:Body>
      <cli:soldeClientInternet>
         <cli:idClient>CLIENT_VALUE</cli:idClient>
      </cli:soldeClientInternet>
   </soapenv:Body>
</soapenv:Envelope>

My route is the following

<camelContext id="camelContext"
xmlns="http://activemq.apache.org/camel/schema/spring">

			<route>
			<from uri="direct:start" /> 
			<process ref="correlationProcessor"/>
			<to uri="seda:clientRequest"/>
			</route>
		
		<!-- main request must be adapted before to be send to back end  -->
		<route>
			<from uri="seda: clientRequest " />
			<process ref="fixeProcessor"/>
			<to uri="cxf:bean:endpointFixeProvider"/>
			<to uri="seda:providerResponseQueue" />
		</route>


<route>
			<from uri="seda:providerResponseQueue " />
			<process ref="translator" />
			<to uri="direct:start"/>
		</route>

Where cxf endpoint is define like that:

<cxf:cxfEndpoint id="endpointFixeProvider" 
serviceClass="org.example.clientfixe.ClientFixe"
		address="http://localhost:9001/ClientFixeSOAP"
		wsdlURL="wsdl/ClientFixe-1.0.wsdl" endpointName="s:ClientFixeSOAP"
		serviceName="s:ClientFixe" 	xmlns:s="http://www.example.org/ClientFixe/">
		<cxf:properties>
			<entry key="dataFormat" value="MESSAGE"></entry>
		</cxf:properties>
		<cxf:features>
		  <!--   Enables logging of SOAP messages. --> 
			<logging xmlns="http://cxf.apache.org/core" />
		</cxf:features>
	</cxf:cxfEndpoint>

 In fact I have more than one back-end web service, but I think that my
problem is the same for all, that why I describe only one.

My processor "fixeProcessor" transform main request to adapt it for back-end
web service request.

So when send main request from my application I have the following stack
trace

ERROR : [seda:providerFixeRequest thread:3] DeadLetterChannel             
==> Failed delivery for exchangeId: ID-XXXXXXXXX/4245-1229603765806/0-2. On
delivery attempt: 0 caught: org.apache.cxf.binding.soap.SoapFault: Fault
occurred while processing.
org.apache.cxf.binding.soap.SoapFault: Fault occurred while processing.
	at
org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:70)
	at
org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:35)
	at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220)
	at
org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:96)
	at
org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69)
	at
org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)
	at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220)
	at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:633)
	at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2064)
	at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1942)
	at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1867)
	at
org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47)
	at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:170)
	at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
	at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:595)
	at
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
	at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220)
	at
org.apache.camel.component.cxf.invoker.CxfClient.invokeWithMessageStream(CxfClient.java:132)
	at
org.apache.camel.component.cxf.invoker.CxfClient.dispatch(CxfClient.java:75)
	at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:242)
	at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:166)
	at
org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:43)
	at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:75)
	at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:63)
	at
org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:172)
	at
org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:93)
	at org.apache.camel.processor.Pipeline.process(Pipeline.java:115)
	at org.apache.camel.processor.Pipeline.process(Pipeline.java:89)
	at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:63)
	at
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:65)
	at org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:69)
	at java.lang.Thread.run(Thread.java:595)

There are a few days that I deals with this problem and I think I will kill
the computer ! >-(
Any help are welcome
Mta38

-- 
View this message in context: http://www.nabble.com/Camel---CXf---Web-service---seda-tp21072230s22882p21072230.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Re: Camel - CXf - Web service - seda

Posted by Willem Jiang <wi...@gmail.com>.
Hi,
Did your back end web service will response a soap fault message?
If so, you need turn off the default error handle like this

<camelContext id="camel"
xmlns="http://activemq.apache.org/camel/schema/spring">
    <route errorHandlerRef="noErrorHandler">
      <from uri="cxf:bean:routerEndpoint" />
      <to uri="cxf:bean:serviceEndpoint" />
    </route>
   </camelContext>

   <bean id="noErrorHandler"
class="org.apache.camel.builder.NoErrorHandlerBuilder"/>

Willem

mta38 wrote:
> Hi all,
> New route, new problem…:-(
> I try to route message from a front end web service to back ends web
> service.
> The following snippet describe front end and back end web service message
> 
> Front end main request message
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:cli="http://www.example.org/Client/">
>    <soapenv:Header/>
>    <soapenv:Body>
>       <cli:soldeClient>
>          <cli:idClient>CLIENT_VALUE</cli:idClient>
>       </cli:soldeClient>
>    </soapenv:Body>
> </soapenv:Envelope>
> 
> Back end expected request
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:cli="http://www.example.org/ClientInternet/">
>    <soapenv:Header/>
>    <soapenv:Body>
>       <cli:soldeClientInternet>
>          <cli:idClient>CLIENT_VALUE</cli:idClient>
>       </cli:soldeClientInternet>
>    </soapenv:Body>
> </soapenv:Envelope>
> 
> My route is the following
> 
> <camelContext id="camelContext"
> xmlns="http://activemq.apache.org/camel/schema/spring">
> 
> 			<route>
> 			<from uri="direct:start" /> 
> 			<process ref="correlationProcessor"/>
> 			<to uri="seda:clientRequest"/>
> 			</route>
> 		
> 		<!-- main request must be adapted before to be send to back end  -->
> 		<route>
> 			<from uri="seda: clientRequest " />
> 			<process ref="fixeProcessor"/>
> 			<to uri="cxf:bean:endpointFixeProvider"/>
> 			<to uri="seda:providerResponseQueue" />
> 		</route>
> 
> 
> <route>
> 			<from uri="seda:providerResponseQueue " />
> 			<process ref="translator" />
> 			<to uri="direct:start"/>
> 		</route>
> 
> Where cxf endpoint is define like that:
> 
> <cxf:cxfEndpoint id="endpointFixeProvider" 
> serviceClass="org.example.clientfixe.ClientFixe"
> 		address="http://localhost:9001/ClientFixeSOAP"
> 		wsdlURL="wsdl/ClientFixe-1.0.wsdl" endpointName="s:ClientFixeSOAP"
> 		serviceName="s:ClientFixe" 	xmlns:s="http://www.example.org/ClientFixe/">
> 		<cxf:properties>
> 			<entry key="dataFormat" value="MESSAGE"></entry>
> 		</cxf:properties>
> 		<cxf:features>
> 		  <!--   Enables logging of SOAP messages. --> 
> 			<logging xmlns="http://cxf.apache.org/core" />
> 		</cxf:features>
> 	</cxf:cxfEndpoint>
> 
>  In fact I have more than one back-end web service, but I think that my
> problem is the same for all, that why I describe only one.
> 
> My processor "fixeProcessor" transform main request to adapt it for back-end
> web service request.
> 
> So when send main request from my application I have the following stack
> trace
> 
> ERROR : [seda:providerFixeRequest thread:3] DeadLetterChannel             
> ==> Failed delivery for exchangeId: ID-XXXXXXXXX/4245-1229603765806/0-2. On
> delivery attempt: 0 caught: org.apache.cxf.binding.soap.SoapFault: Fault
> occurred while processing.
> org.apache.cxf.binding.soap.SoapFault: Fault occurred while processing.
> 	at
> org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:70)
> 	at
> org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:35)
> 	at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220)
> 	at
> org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:96)
> 	at
> org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69)
> 	at
> org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)
> 	at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220)
> 	at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:633)
> 	at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2064)
> 	at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1942)
> 	at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1867)
> 	at
> org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47)
> 	at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:170)
> 	at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
> 	at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:595)
> 	at
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
> 	at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220)
> 	at
> org.apache.camel.component.cxf.invoker.CxfClient.invokeWithMessageStream(CxfClient.java:132)
> 	at
> org.apache.camel.component.cxf.invoker.CxfClient.dispatch(CxfClient.java:75)
> 	at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:242)
> 	at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:166)
> 	at
> org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:43)
> 	at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:75)
> 	at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:63)
> 	at
> org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:172)
> 	at
> org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:93)
> 	at org.apache.camel.processor.Pipeline.process(Pipeline.java:115)
> 	at org.apache.camel.processor.Pipeline.process(Pipeline.java:89)
> 	at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:63)
> 	at
> org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:65)
> 	at org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:69)
> 	at java.lang.Thread.run(Thread.java:595)
> 
> There are a few days that I deals with this problem and I think I will kill
> the computer ! >-(
> Any help are welcome
> Mta38
>