[
https://issues.apache.org/jira/browse/AXIS2-3384?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12629171#action_12629171
]
Martin Hierhager commented on AXIS2-3384:
-----------------------------------------
I have the same problem.
I use Axis2 in the version 1.4.1 on the client side. The web-service on the
server side runs under CXF 2.1.1. All known bugs with Axis2-interoperability in
CXF (CXF-606 and CXF-596) seem to be fixed.
I did some hotfix: in the class
org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder I changed the
following method:
public DataHandler getDataHandler(String blobContentID) throws OMException {
// change beginns
String strEncoded = "";
try {
strEncoded = URLEncoder.encode(blobContentID, "UTF-8");
strEncoded = strEncoded.replaceAll("%40", "@");
} catch (UnsupportedEncodingException oEx) {
oEx.printStackTrace();
}
DataHandler dataHandler =
attachments.getDataHandler(strEncoded);
// DataHandler dataHandler = attachments.getDataHandler(blobContentID);
// change ends
if (dataHandler == null) {
throw new OMException(
"Referenced Attachment not found in the MIME Message.
ContentID:"
+ blobContentID);
}
return dataHandler;
}
Then it works. I'm not sure, if this is a good workaround...
Maybe you can tell me, how a "stripped down test" for you should look like?
A fix for this problem would be great.
Thanks,
Martin
> 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, Sun JDK 1.5.0.12
> 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]