When sending WS-addressing headers to a BC-SOAP consumes endpoint, the WSA namespace MUST end with a trailing "/" (like in xmlns:wsa="http://www.w3.org/2005/08/addressing/" ).
If, instead, no "/" is provided (like in xmlns:wsa="http://www.w3.org/2005/08/addressing"), an axis fault is thrown.
Examples follow: the ONLY difference in the request message being a "/" at the end of the WSA namespace...
The problem is, that Axis2 clients generate WSA namespaces without trailing "/" when WSA is activated... so when an Axis2 client (with WSA activated) tries to contact a Petals endpoint, it simply fails !
Note that this problem (or at least something similar) had been pointed out a long time ago (Feb. 2008), here:
http://mail-archive.ow2.org/petals-users/2008-02/msg00024.html
Looks like the issue is still there ?
Successful exchange:
--------------------
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing/">
<wsa:To>http://localhost:8888/petals/services/NoAuthentification</wsa:To>
<wsa:MessageID>urn:uuid:725595239BF6E311C51289837850575</wsa:MessageID>
<wsa:Action>verifierAuth</wsa:Action></soapenv:Header>
<soapenv:Body><ns1:verifierAuth xmlns:ns1="http://ws.air.defense.gouv.fr/"><arg0><uid>bob</uid><pwd>petals</pwd></arg0></ns1:verifierAuth></soapenv:Body></soapenv:Envelope>
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns3:verifierAuthResponse xmlns:ns3="http://ws.air.defense.gouv.fr/" xmlns:ns2="http://webdef.air.defense.gouv.fr/" xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><return><out>false</out></return></ns3:verifierAuthResponse></soapenv:Body></soapenv:Envelope>
Unsuccessful exchange:
----------------------
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
<wsa:To>http://localhost:8888/petals/services/NoAuthentification</wsa:To>
<wsa:MessageID>urn:uuid:725595239BF6E311C51289837850575</wsa:MessageID>
<wsa:Action>verifierAuth</wsa:Action></soapenv:Header>
<soapenv:Body><ns1:verifierAuth xmlns:ns1="http://ws.air.defense.gouv.fr/"><arg0><uid>bob</uid><pwd>petals</pwd></arg0></ns1:verifierAuth></soapenv:Body></soapenv:Envelope>
?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"><wsa:Action>http://www.w3.org/2005/08/addressing/fault</wsa:Action><wsa:RelatesTo>urn:uuid:725595239BF6E311C51289837850575</wsa:RelatesTo><wsa:FaultDetail><wsa:ProblemAction><wsa:Action>verifierAuth</wsa:Action></wsa:ProblemAction></wsa:FaultDetail></soapenv:Header><soapenv:Body><soapenv:Fault xmlns:wsa="http://www.w3.org/2005/08/addressing"><faultcode>wsa:ActionNotSupported</faultcode><faultstring>The [action] cannot be processed at the receiver.</faultstring><detail><Exception>org.apache.axis2.AxisFault: The [action] cannot be processed at the receiver.
at org.apache.axis2.addressing.AddressingFaultsHelper.triggerAddressingFault(AddressingFaultsHelper.java:373)
at org.apache.axis2.addressing.AddressingFaultsHelper.triggerActionNotSupportedFault(AddressingFaultsHelper.java:336)
at org.apache.axis2.handlers.addressing.AddressingValidationHandler.checkAction(AddressingValidationHandler.java:149)
at org.apache.axis2.handlers.addressing.AddressingValidationHandler.invoke(AddressingValidationHandler.java:55)
at org.apache.axis2.engine.Phase.invoke(Phase.java:317)
at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:264)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:163)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:133)
at org.ow2.petals.binding.soap.listener.incoming.servlet.SoapServlet.doPost(SoapServlet.java:122)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:320)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:730)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
</Exception></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope>
A parameter soap:enable-wsa is added to the jbi.xml of a SU consume. The WSA-Addressing is disabled by default. To enable it, set the parameter to true.