You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-user@axis.apache.org by Mark Dostie <do...@telus.net> on 2011/04/08 22:21:48 UTC

MTOM and Axis2/C with WSDL2C usage

Hi all,

I am using Axis2/C and the WSDL2C tool to generate stubs for use in a
message exchange using MTOM/XOP. Ihave run into an issue where in the client
I have set the optimized "TRUE" and the server is sending a MTOM/OPTIMIZED
message back like this:

<RetrieveDocumentSetResponse xmlns="urn:ihe:iti:xds-b:2007" xmlns:
rs="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0"
xmlns:rim="urn:oasis:names:tc:eb
xml-regrep:xsd:rim:3.0"><rs:RegistryResponse
status="urn:oasis:names:tc:ebxml-re
grep:ResponseStatusType:Success"/><DocumentResponse><RepositoryUniqueId>1.2.
3</R
epositoryUniqueId><DocumentUniqueId>1.2.826.0.1.3680043.2.1611.1.4.2148.1771
8.39
79.18915.43165</DocumentUniqueId><mimeType>text/plain</mimeType><Document><x
op:I
nclude xmlns:xop="http://www.w3.org/2004/08/xop/include"
href="cid:e34decf3-f502
-40ae-8c8c-67f84bedd45b@example.jaxws.sun.com"></xop:Include></Document></Do
cume
ntResponse></RetrieveDocumentSetResponse>

In the <Document> tag you can see the XOP:Include statement. This is causing
the generated stub to fail when it is deserialzing this message. There does
not seem to be any generated code to check for the XOP include.

In the WSDL schema, document is defined as:
<xs:element name="Document" type="xs:base64Binary"/>

In the adb_DocumentResponse_type0.c file generated from WSDL it has the
following code:

element_qname = axutil_qname_create(env, "Document",
"urn:ihe:iti:xds-b:2007", NULL);


                           if (
                                (current_node   && current_element &&
(axutil_qname_equals(element_qname, env, qname))))
                           {
                              if( current_node   && current_element &&
(axutil_qname_equals(element_qname, env, qname)))
                              {
                                is_early_node_valid = AXIS2_TRUE;
                              }


                                      text_value =
axiom_element_get_text(current_element, env, current_node);
                                      if(text_value != NULL)


And the text_value is NULL because there is no text (its expected the binary
to be inline) inside that tag. This generates an error and the
deserialization stops immediately instead of looking in the multipart MIME
to get the document back. (plain text)

Any suggestions?

Thanks,
Mark


---------------------------------------------------------------------
To unsubscribe, e-mail: c-user-unsubscribe@axis.apache.org
For additional commands, e-mail: c-user-help@axis.apache.org