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

Reply via email to