You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@tuscany.apache.org by Mitchell Ratisher <mi...@shutterfly.com> on 2010/02/23 03:54:17 UTC

Tuscany 1.6 integration with WSO2 ESB

Has anyone been able to integrate Tuscany with the WSO2 ESB?  The intent is to have the ESB sitting as a proxy between Tuscany instances.  The Tuscany Tours sample app has been divided between the instances, so one instance calls to the other to do searches, using the default WS binding, e.g.:

<binding.ws uri="http://mitch-linux.corp.shutterfly.com:8280/services/HotelSearch" />


Of course, that's the URI for the WSO2 ESB acting as a proxy for the hotel search.  I've run into two problems while doing this:

1.  Tuscany puts information needed to support a callback into the SOAP header.  Unfortunately, WSO2 is seeing fit to strip all that out before passing the message on.  I've posted to the WSO2 forums for help, see http://wso2.org/forum/thread/9337 for all the fun XML.  For anyone who hasn't bothered to intercept traffic between instances, its interesting to see what goes in the request.

2.  WSO2 (or rather the Axis engine)  doesn't like the lack of a wsa:Action tag in the SOAP header (wsa=http://www.w3.org/2005/08/addressing).  Tuscany is including a SOAP Action http header, but not the tag in the SOAP header xml.  See the stack trace below.  I went thru the Axis 2 1.5.1 source and concluded the missing wsa:Action tag is what triggered the error.  Putting the tage in myself and manually posting leads to the problem described in item #1.  I'm actually not clear where the fault lies here:
    a.  Tuscany for failing to include the header
    b.  WSO2 for insisting on having it when it apparently isn't needed
    c.  Me for not knowing how to configure Axis
    d.  Nobody really, its just one of those interop issues that hasn't been thought all the way thru. 

Anyway, I'd appreciate any guidance I can get here.  I'm kind of a REST lover, so this is the biggest dose of SOAP I've gotten in a while.  Still, I figured passing Tuscany's SOAP messages thru an ESB was something even a beginner could get right.



[2010-02-22 18:25:31,542] ERROR - AxisEngine A required header representing a Message Addressing Property is not present
org.apache.axis2.AxisFault: A required header representing a Message Addressing Property is not present
	at org.apache.axis2.addressing.AddressingFaultsHelper.triggerAddressingFault(AddressingFaultsHelper.java:373)
	at org.apache.axis2.addressing.AddressingFaultsHelper.triggerMessageAddressingRequiredFault(AddressingFaultsHelper.java:299)
	at org.apache.axis2.handlers.addressing.AddressingInHandler.checkForMandatoryHeaders(AddressingInHandler.java:289)
	at org.apache.axis2.handlers.addressing.AddressingInHandler.extractAddressingInformation(AddressingInHandler.java:274)
	at org.apache.axis2.handlers.addressing.AddressingInHandler.invoke(AddressingInHandler.java:153)
	at org.apache.axis2.engine.Phase.invoke(Phase.java:318)
	at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:256)
	at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:165)
	at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:167)
	at org.apache.synapse.transport.nhttp.ServerWorker.processEntityEnclosingMethod(ServerWorker.java:349)
	at org.apache.synapse.transport.nhttp.ServerWorker.run(ServerWorker.java:239)
	at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58)


Mitch Ratisher

Re: Tuscany 1.6 integration with WSO2 ESB

Posted by Blue Diamond <gv...@gmail.com>.
Hi Mitch,

My thoughts:

1. There is a way to disable WS-Addressing requirement on WSO2 servers (ESB,
WSAS whatever) I guess. You may try that.
2. Having said "1", I am not convinced with WSO2 ESB stripping off unknown
elements of the SOAP message, basically modifying the SOAP message. The
proxy should just forward the request as long as the WSDL is understood by
the proxy service. Either there should be a way to configure to send the
message "AS IS" to the target service or its a bug!
3. I don't know much about TUSCANY's support for WS-Addressing. Try using
"wsa:EndpointReference" attribute in <binding.ws> as mentioned in
http://tuscany.apache.org/sca-java-bindingws.html.

Thanks & Regards,
Anil

On Tue, Feb 23, 2010 at 8:24 AM, Mitchell Ratisher
<mi...@shutterfly.com>wrote:

>
> Has anyone been able to integrate Tuscany with the WSO2 ESB?  The intent is
> to have the ESB sitting as a proxy between Tuscany instances.  The Tuscany
> Tours sample app has been divided between the instances, so one instance
> calls to the other to do searches, using the default WS binding, e.g.:
>
> <binding.ws uri="
> http://mitch-linux.corp.shutterfly.com:8280/services/HotelSearch" />
>
>
> Of course, that's the URI for the WSO2 ESB acting as a proxy for the hotel
> search.  I've run into two problems while doing this:
>
> 1.  Tuscany puts information needed to support a callback into the SOAP
> header.  Unfortunately, WSO2 is seeing fit to strip all that out before
> passing the message on.  I've posted to the WSO2 forums for help, see
> http://wso2.org/forum/thread/9337 for all the fun XML.  For anyone who
> hasn't bothered to intercept traffic between instances, its interesting to
> see what goes in the request.
>
> 2.  WSO2 (or rather the Axis engine)  doesn't like the lack of a wsa:Action
> tag in the SOAP header (wsa=http://www.w3.org/2005/08/addressing).
>  Tuscany is including a SOAP Action http header, but not the tag in the SOAP
> header xml.  See the stack trace below.  I went thru the Axis 2 1.5.1 source
> and concluded the missing wsa:Action tag is what triggered the error.
>  Putting the tage in myself and manually posting leads to the problem
> described in item #1.  I'm actually not clear where the fault lies here:
>    a.  Tuscany for failing to include the header
>    b.  WSO2 for insisting on having it when it apparently isn't needed
>    c.  Me for not knowing how to configure Axis
>    d.  Nobody really, its just one of those interop issues that hasn't been
> thought all the way thru.
>
> Anyway, I'd appreciate any guidance I can get here.  I'm kind of a REST
> lover, so this is the biggest dose of SOAP I've gotten in a while.  Still, I
> figured passing Tuscany's SOAP messages thru an ESB was something even a
> beginner could get right.
>
>
>
> [2010-02-22 18:25:31,542] ERROR - AxisEngine A required header representing
> a Message Addressing Property is not present
> org.apache.axis2.AxisFault: A required header representing a Message
> Addressing Property is not present
>        at
> org.apache.axis2.addressing.AddressingFaultsHelper.triggerAddressingFault(AddressingFaultsHelper.java:373)
>        at
> org.apache.axis2.addressing.AddressingFaultsHelper.triggerMessageAddressingRequiredFault(AddressingFaultsHelper.java:299)
>        at
> org.apache.axis2.handlers.addressing.AddressingInHandler.checkForMandatoryHeaders(AddressingInHandler.java:289)
>        at
> org.apache.axis2.handlers.addressing.AddressingInHandler.extractAddressingInformation(AddressingInHandler.java:274)
>        at
> org.apache.axis2.handlers.addressing.AddressingInHandler.invoke(AddressingInHandler.java:153)
>        at org.apache.axis2.engine.Phase.invoke(Phase.java:318)
>        at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:256)
>        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:165)
>        at
> org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:167)
>        at
> org.apache.synapse.transport.nhttp.ServerWorker.processEntityEnclosingMethod(ServerWorker.java:349)
>        at
> org.apache.synapse.transport.nhttp.ServerWorker.run(ServerWorker.java:239)
>        at
> org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58)
>
>
> Mitch Ratisher
>