[ 
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]

Reply via email to