Axis2 says missing header, but MessageID is not required.
---------------------------------------------------------
Key: AXIS2-4529
URL: https://issues.apache.org/jira/browse/AXIS2-4529
Project: Axis 2.0 (Axis2)
Issue Type: Bug
Components: Addressing, transports
Affects Versions: 1.5
Environment: Sending from a .NET WCF client to a Axis2 1.5 service.
Reporter: Christian Uldall Pedersen
Priority: Critical
I get the following error when sending from a .NET client to an Axis2 1.5 service:
2009-10-12 11:07:05,630 ERROR - 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.AddressingValidationHandler.checkMessageIDHeader(AddressingValidationHandler.java:161)
at org.apache.axis2.handlers.addressing.AddressingValidationHandler.invoke(AddressingValidationHandler.java:52)
at org.apache.axis2.engine.Phase.invoke(Phase.java:318)
at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:251)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:160)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:167)
at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:142)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
I have looked at the SOAP messages and the difference between a Axis2 1.5 client and a .NET
client seems to be a WS-Addressing MessageID header which is not present on .NET.
The specification states:
/wsa:MessageID
This OPTIONAL element (of type xs:anyURI) conveys the [message id] property. This element
MUST be present if wsa:ReplyTo or wsa:FaultTo is present.
There is no ReplyTo present, so the header should be optional.
I have attached the Axis2 1.5 message that works, and the .NET one that doesn't.
The problem is caused by changing from a SOAPActionBasedDispatcher to a RequestURIOperationDispatcher:
<phaseOrder type="InFlow">
<!-- System predefined phases -->
<phase name="Transport">
<handler name="RequestURIBasedDispatcher"
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">
<order phase="Transport"/>
</handler>
<handler name="SOAPActionBasedDispatcher"
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher">
<order phase="Transport"/>
</handler>
to
<phaseOrder type="InFlow">
<!-- System predefined phases -->
<phase name="Transport">
<handler name="RequestURIBasedDispatcher"
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">
<order phase="Transport"/>
</handler>
<handler name="RequestURIOperationDispatcher"
class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher">
<order phase="Transport"/>
</handler>
I have attached the new axis2.xml and services.xml
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
|