[ 
https://issues.apache.org/jira/browse/AXIS2-5112?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13080887#comment-13080887
 ] 

Alberto Bovo commented on AXIS2-5112:
-------------------------------------

Thanks Andreas, you are right. 
Looking at the sinffed message, it's easy to see how the <xop> tag builded with 
WSO2 library introduces spurious blank spaces.
We are now sure that the problem is at WSO2 library side, and not at axis2.


####WSO2####
"........
            <xdsb:Document id="Document01">

<xop:Include href="cid:[email protected]" 
xmlns:xop="http://www.w3.org/2004/08/xop/include"/></xdsb:Document> 
........."

####AXIS2####
".......
            <xdsb:Document id="Document01"><xop:Include 
href="cid:1.urn:uuid:[email protected]" 
xmlns:xop="http://www.w3.org/2004/08/xop/include"; /></xdsb:Document> 
........."

Thanks again,
    Alberto

> Unable to retrieve a document attached in a SOAP MTOM/XOP message sended by 
> WSO2 library
> ----------------------------------------------------------------------------------------
>
>                 Key: AXIS2-5112
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5112
>             Project: Axis2
>          Issue Type: Bug
>          Components: Integration, mtompolicy, transports
>    Affects Versions: 1.5.3, 1.5.4, 1.5.5, 1.6.0
>         Environment: Linux Ubuntu 9.04 / 9.10 / 10.04 / 10.10 (32bit)
>            Reporter: Alberto Bovo
>              Labels: mtom, web-service, wso, xop
>
> Using a axis2 Web Service, when trying to retrieve a document attached in a 
> SOAP MTOM/XOP message builded using WSO2 php library get  this error:
> org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException: 
> Expected xop:Include as the sole child of an element information item (see 
> section 3.2 of http://www.w3.org/TR/xop10/)
> This is due to the fact that the  element (<xdsb:Document id="Document01">   
> </xdsb:Document>)  (OMElement obtained after axis2 processing)  that should 
> contains the base64 value of document, is empty. But observing the same 
> message sniffed from wireshark (protocol analyzer) it seems that the Document 
> is present.
> I am worried about which library is the guilty for this problem: "WSO2" or 
> "axis2"?
> ######Sniffed Message from the network using WIRESHARK:
> POST /axis2/services/Repository HTTP/1.1
> User-Agent: Axis2/C
> Content-Length: 16132
> Content-Type: multipart/related; 
> boundary=MIMEBoundary11a26594-bf65-1e01-28a8-000c29c7ee2b; 
> type="application/xop+xml"; 
> start="<[email protected]>"; 
> start-info="application/soap+xml"; 
> charset="UTF-8";action="urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b"
> Host: 192.168.1.13:9090
> --MIMEBoundary11a26594-bf65-1e01-28a8-000c29c7ee2b
> content-transfer-encoding: binary
> content-id: <[email protected]>
> content-type: application/xop+xml; charset=UTF-8; type="application/soap+xml";
> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope";>
>     <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing";>
>         <wsa:To>http://192.168.1.13:9090/axis2/services/Repository</wsa:To>
>         
> <wsa:Action>urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b</wsa:Action>
>         <wsa:MessageID>11a188fe-bf65-1e01-28a6-000c29c7ee2b</wsa:MessageID>
>     </soapenv:Header>
>     <soapenv:Body>
>         <xdsb:ProvideAndRegisterDocumentSetRequest 
> xmlns:xdsb="urn:ihe:iti:xds-b:2007">
>              <lcm:SubmitObjectsRequest 
> ...........varius..xml........</lcm:SubmitObjectsRequest>
>             <xdsb:Document id="Document01">
> <xop:Include href="cid:[email protected]" 
> xmlns:xop="http://www.w3.org/2004/08/xop/include"/></xdsb:Document>
>         </xdsb:ProvideAndRegisterDocumentSetRequest>
>     </soapenv:Body>
> </soapenv:Envelope>
> --MIMEBoundary11a26594-bf65-1e01-28a8-000c29c7ee2b
> content-transfer-encoding: binary
> content-id: <[email protected]>
> content-type: application/octet-stream
> This is my document.
> It is great!
> --MIMEBoundary11a26594-bf65-1e01-28a8-000c29c7ee2b--
> ######OMElement retrieved inside the web-service axis2code:
> <xdsb:ProvideAndRegisterDocumentSetRequest 
> xmlns:xdsb="urn:ihe:iti:xds-b:2007">
>      <lcm:SubmitObjectsRequest 
> ...........varius..xml........</lcm:SubmitObjectsRequest>
>     <xdsb:Document id="Document01">
>     </xdsb:Document>
> </xdsb:ProvideAndRegisterDocumentSetRequest>
> I try to send (in SOAP MTOM/XOP) a similar message with another client using 
> AXIS2 library and I retrieve CORRECTLY the document attached.
>  
> ######Sniffed Message from the network using WIRESHARK:
> POST /axis2/services/Repository HTTP/1.1
> Content-Type: multipart/related; 
> boundary=MIMEBoundaryurn_uuid_DE91A0BD9A7540ADAE1312549954960; 
> type="application/xop+xml"; 
> start="<0.urn:uuid:[email protected]>"; 
> start-info="application/soap+xml"; 
> action="urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b"
> User-Agent: Axis2
> Host: 192.168.1.13:9090
> Transfer-Encoding: chunked
> 20f1
> --MIMEBoundaryurn_uuid_DE91A0BD9A7540ADAE1312549954960
> Content-Type: application/xop+xml; charset=UTF-8; type="application/soap+xml"
> Content-Transfer-Encoding: binary
> Content-ID: <0.urn:uuid:[email protected]>
> <?xml version='1.0' encoding='UTF-8'?>
> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope";>
>     <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing";>
>         <wsa:To 
> soapenv:mustUnderstand="true">http://192.168.1.13:9090/axis2/services/Repository</wsa:To>
>         <wsa:MessageID 
> soapenv:mustUnderstand="true">urn:uuid:DE91A0BD9A7540ADAE1312549954954</wsa:MessageID>
>         <wsa:Action 
> soapenv:mustUnderstand="true">urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b</wsa:Action>
>     </soapenv:Header>
>     <soapenv:Body>
>         <xdsb:ProvideAndRegisterDocumentSetRequest 
> xmlns:xdsb="urn:ihe:iti:xds-b:2007">
>              <lcm:SubmitObjectsRequest 
> ...........varius..xml........</lcm:SubmitObjectsRequest>
>             <xdsb:Document id="Document01"><xop:Include 
> href="cid:1.urn:uuid:[email protected]" 
> xmlns:xop="http://www.w3.org/2004/08/xop/include"; /></xdsb:Document>
>         </xdsb:ProvideAndRegisterDocumentSetRequest>
>     </soapenv:Body>
> </soapenv:Envelope>
> 11c
> --MIMEBoundaryurn_uuid_DE91A0BD9A7540ADAE1312549954960
> Content-Type: text/plain
> Content-Transfer-Encoding: binary
> Content-ID: <1.urn:uuid:[email protected]>
> This is my document.
> It is great!
> --MIMEBoundaryurn_uuid_DE91A0BD9A7540ADAE1312549954960--
> 0
> ######OMElement retrieved inside the web-service axis2code:
> <xdsb:ProvideAndRegisterDocumentSetRequest 
> xmlns:xdsb="urn:ihe:iti:xds-b:2007">
>     <lcm:SubmitObjectsRequest 
> ...........varius..xml........</lcm:SubmitObjectsRequest>
>     <xdsb:Document 
> id="Document01">VGhpcyBpcyBteSBkb2N1bWVudC4KCkl0IGlzIGdyZWF0IQoK</xdsb:Document>
> </xdsb:ProvideAndRegisterDocumentSetRequest>
> This is the simple WSDL of the axis2 web service:
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; 
> xmlns:axis2="http://service/ws/xds/iti/a_thon/it/"; 
> xmlns:ns1="http://org.apache.axis2/xsd";
> xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl";
> xmlns:http="http://schemas.xmlsoap.org/wsdl/http/";
> xmlns:ns0="http://service/ws/xds/iti/a_thon/it/xsd";
> xmlns:xs="http://www.w3.org/2001/XMLSchema";
> xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/";
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
> xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/";
> xmlns:ihe="urn:ihe:iti:xds-b:2007"
> xmlns:rs="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0"
> xmlns:lcm="urn:oasis:names:tc:ebxml-regrep:xsd:lcm:3.0"
> xmlns:query="urn:oasis:names:tc:ebxml-regrep:xsd:query:3.0"
> name="DocumentRepository"
> targetNamespace="http://service/ws/xds/iti/a_thon/it/";>
>     <wsdl:types>
>         <xs:schema xmlns:ns="http://service/ws/xds/iti/a_thon/it/xsd"; 
> attributeFormDefault="qualified" elementFormDefault="qualified" 
> targetNamespace="http://service/ws/xds/iti/a_thon/it/xsd";>
>             <xs:element name="ProvideAndRegisterDocumentSet" type="xs:string">
>             </xs:element>
>             <xs:element name="ProvideAndRegisterDocumentSetResponse" 
> type="xs:string">
>             </xs:element>
>         </xs:schema>
>     </wsdl:types>
>     <wsdl:message name="ProvideAndRegisterDocumentSetRequest">
>         <wsdl:part name="parameters" 
> element="ns0:ProvideAndRegisterDocumentSet"/>
>     </wsdl:message>
>     <wsdl:message name="ProvideAndRegisterDocumentSetResponse">
>         <wsdl:part name="parameters" 
> element="ns0:ProvideAndRegisterDocumentSetResponse"/>
>     </wsdl:message>
>     <wsdl:portType name="RepositoryPortType">
>         <wsdl:operation name="ProvideAndRegisterDocumentSet">
>             <wsdl:input message="axis2:ProvideAndRegisterDocumentSetRequest" 
>             wsaw:Action="urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b"/>
>             <wsdl:output 
> message="axis2:ProvideAndRegisterDocumentSetResponse" 
>             
> wsaw:Action="urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-bResponse"/>
>         </wsdl:operation>
>     </wsdl:portType>
>     <wsdl:binding name="RepositorySOAP12Binding" 
> type="axis2:RepositoryPortType">
>         <soap12:binding transport="http://schemas.xmlsoap.org/soap/http"; 
> style="document"/>
>         <wsdl:operation name="ProvideAndRegisterDocumentSet">
>             <soap12:operation 
> soapAction="urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b" 
> style="document"/>
>             <wsdl:input>
>                 <soap12:body use="literal"/>
>             </wsdl:input>
>             <wsdl:output>
>                 <soap12:body use="literal"/>
>             </wsdl:output>
>         </wsdl:operation>
>     </wsdl:binding>
>     <wsdl:service name="Repository">
>         <wsdl:port name="RepositorySOAP12port_http" 
> binding="axis2:RepositorySOAP12Binding">
>             <soap12:address 
> location="http://localhost:8080/axis2/services/Repository"/>
>         </wsdl:port>
>     </wsdl:service>
> </wsdl:definitions>
> axis2 Web Service Class
> public class WebService
>  {
>     public OMElement ProvideAndRegisterDocumentSet(OMElement request)
>     {
>         OMElement risp = null;
>         try
>         {
>         System.out.println("ProvideAndRegisterDocumentSet START --");
>         exploreRequest(request);
>         FileOutputStream out = new FileOutputStream(new 
> File("/home/user/Scrivania/SERVER/requestafterAxis2.txt"));
>         request.serialize(out);
>         risp= request;
>         System.out.println("ProvideAndRegisterDocumentSet STOP --");
>         }
>         catch(Exception ex)
>         {
>             System.err.println("ERRROR!");
>             ex.printStackTrace();
>         }
>         return risp;
>     }
>     private void exploreRequest(OMElement request)
>     {
>         Iterator it = request.getChildElements();
>         while (it.hasNext())
>         {
>             OMNode node = (OMNode) it.next(); 
>             OMElement element;
>             OMText text;
>             if (node.getType() == OMNode.ELEMENT_NODE)
>             {
>                 //System.out.println("NODE ELEMENT");
>                 element = (OMElement) node;
>                 if (element.getLocalName().equals("Document"))
>                 {
>                     text = (OMText) element.getFirstOMChild();
>                     System.out.println("TEXT"+ text.getText());
>                     DataHandler actualDH;
>                     actualDH = (DataHandler) text.getDataHandler();
>                     /**
>                      * Recupera Documento
>                      */
>                     String contentType = actualDH.getContentType();
>                     System.out.println("contentType = " + contentType);
>                     BufferedInputStream bis = null;
>                     BufferedOutputStream bos = null;
>                     try
>                     {
>                         bis = new 
> BufferedInputStream(actualDH.getInputStream());
>                         File file = new 
> File("/home/user/Scrivania/SERVER/documento.pdf");
>                         FileOutputStream out = new FileOutputStream(file);
>                         actualDH.writeTo(out);
>                     } catch (final IOException ex) {
>                         System.out.println("IOException.");
>                         ex.printStackTrace();
>                         //throw e;
>                     }
>                 }                    
>                 exploreRequest(element);
>             }
>         }
>     }
> }

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to