CXF and Axis2 interop: MTOM
---------------------------
Key: AXIS2-3384
URL: https://issues.apache.org/jira/browse/AXIS2-3384
Project: Axis 2.0 (Axis2)
Issue Type: Bug
Affects Versions: 1.3
Environment: Windows XP, JBoss
Reporter: Mike Barlotta
I am working on getting an Axis2 1.3 MTOM client to work with a Java service
written using CXF 2.0.3.
I have been trying to get an Axis2 client to receive an MTOM response back from
my service, having been able to successfully send an MTOM value in the request.
Axis2 gives me this error on the SOAP response:
org.apache.axiom.om.OMException: org.apache.axiom.om.OMException: Referenced
Attachment not found in the MIME Message. ContentID:[EMAIL
PROTECTED]://cxf.apache.org/
at org.apache.axiom.om.impl.llom.OMTextImpl.getText(OMTextImpl.java:228)
at org.apache.axiom.om.impl.llom.OMTextImpl.writeOutput(OMTextImpl.java:212)
at
org.apache.axiom.om.impl.llom.OMTextImpl.internalSerializeLocal(OMTextImpl.java:390)
at
org.apache.axiom.om.impl.llom.OMTextImpl.internalSerialize(OMTextImpl.java:200)
at
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:772)
at
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:756)
at
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:772)
at
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:756)
at
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:772)
at
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:756)
at org.apache.axiom.om.impl.llom.OMNodeImpl.serialize(OMNodeImpl.java:345)
at org.apache.axiom.om.impl.llom.OMElementImpl.toString(OMElementImpl.java:913)
at java.lang.String.valueOf(String.java:2615)
at java.lang.StringBuilder.append(StringBuilder.java:116)
at
com.bah.hello.HeyWorld_Axis2_Client.test_WS_HeyWorld(HeyWorld_Axis2_Client.java:69)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at junit.framework.TestCase.runTest(TestCase.java:164)
at junit.framework.TestCase.runBare(TestCase.java:130)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:120)
at junit.framework.TestSuite.runTest(TestSuite.java:230)
at junit.framework.TestSuite.run(TestSuite.java:225)
at
org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: org.apache.axiom.om.OMException: Referenced Attachment not found in
the MIME Message. ContentID:[EMAIL PROTECTED]://cxf.apache.org/
at
org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder.getDataHandler(MTOMStAXSOAPModelBuilder.java:106)
at org.apache.axiom.om.impl.llom.OMTextImpl.getDataHandler(OMTextImpl.java:324)
at org.apache.axiom.om.impl.llom.OMTextImpl.getInputStream(OMTextImpl.java:338)
at org.apache.axiom.om.impl.llom.OMTextImpl.getText(OMTextImpl.java:226)
... 32 more
This issue I am having also seems related to the error experienced with this
posting and issue (which appear to be fixed on CXF side):
http://www.nabble.com/URL-Encoded-ContentIDs-cause-interop-problems-with-Axis2-tf3639780.html#a10164676
http://issues.apache.org/jira/browse/CXF-596
Using TCPMON here is the partial SOAP response from CXF:
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Body><ns1:sayHeyResponse
xmlns:ns1="http://hello.bah.com/"><return><name>Hey Axis2
Client</name><binaryData><xop:Include
xmlns:xop="http://www.w3.org/2004/08/xop/include"
href="cid:b11231ac-cfd1-434f-8f87-29bbcbb2c71c@http%3A%2F%2Fcxf.apache.org%2F"/>
</binaryData></return></ns1:sayHeyResponse></soap:Body></soap:Envelope>
------=_Part_0_2698425.1196702522207
Content-Type: content/type
Content-Transfer-Encoding: binary
Content-ID: <[EMAIL PROTECTED]>
At first I thought the problem might be related to the "<" and ">" surrounding
the content id value but it seems that Axis2 also handles the content id in
this manner in the request. I also noticed that the content-id in the SOAP
response header sent by CXF has the forward slashes encoded, but the content-id
as reported by Axis2 in the Exception is not.
Axis2: [EMAIL PROTECTED]://cxf.apache.org/
CXF: <[EMAIL PROTECTED]>
It looks like Axis2 is searching incorrectly for the Content-ID value since an
exact String match would not occur due to the encoding, and after examining the
source in a debugger found that may be the case:
org.apache.axiom.attachments.Attachments class in the getDataHandler (line 270)
if (attachmentsMap.containsKey(blobContentID)) { (line 272)
blobContentId had the following value:
[EMAIL PROTECTED]://cxf.apache.org/
attachmentsMap has the following value:
[EMAIL PROTECTED]@1d709a5, [EMAIL PROTECTED]@14b84c7]
Thanks,
Mike
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]