axis-c-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alastair FETTES" <afet...@mdacorporation.com>
Subject RE: [Axis] Null message contents with AXISCPP
Date Tue, 08 Aug 2006 23:22:14 GMT
Hi Adrian,

I'm much happier now with that multi-ref situation worked out.  For one
thing we have a layer on top of our w/s architecture that removes
redundancies in the data and thus the benefits from using multi-ref
aren't very high.  Much more importantly though is the fact that
disabling multirefs solved the first of my problems.  The second problem
is still causing me a wee bit of grief.

The basic idea is I am trying to make my XML more efficient by using
attributes as opposed to elements.  It also follows my own/our coding
guidelines for XML and the general rule of thumb when authoring XML.
When I convert our data holders from element to attributes though, I get
the second problem.

The following is a message that causes a SoapFaultException with the
message "Cannot deserialize the requested element".  

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
        <fooResponse
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
            <returnMessage attr1="foo" attr2="bar" attr3="hello world" 
                xsi:type="ns1:fooOutputType" 
                xmlns:ns1="http://www.foo.com/"/>
        </fooResponse>
    </soapenv:Body>
</soapenv:Envelope>

This is the schema that causes the problem:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.foo.com/"
xmlns:foo="http://www.foo.com/">
    <xs:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>

    <xs:complexType name="fooType">
        <xs:sequence/>
        <xs:attribute name="attr1" type="xs:string"/>
        <xs:attribute name="attr2" type="xs:string"/>
        <xs:attribute name="attr3" type="xs:string"/>
    </xs:complexType>
</xs:schema>

Referred to by the following WSDL messages:
...
<wsdl:message name="fooMessageFromStringRequest">
    <wsdl:part name="inputMessage" type="xs:string"/>
</wsdl:message>
<wsdl:message name="fooMessageFromStringResponse">
    <wsdl:part name="returnMessage" type="foo:fooType"/>
</wsdl:message>
    
<wsdl:message name="fooStringFromMessageRequest">
    <wsdl:part name="inputMessage" type="foo:fooType"/>
</wsdl:message>
<wsdl:message name="fooStringFromMessageResponse">
    <wsdl:part name="returnMessage" type="xs:string"/>
</wsdl:message>
...
<wsdl:operation name="fooMessageFromString"
parameterOrder="inputMessage">
    <wsdl:input message="foo:fooMessageFromStringRequest"/>
    <wsdl:output message="foo:fooMessageFromStringResponse"/>
</wsdl:operation>
<wsdl:operation name="fooStringFromMessage"
parameterOrder="inputMessage">
    <wsdl:input message="foo:fooStringFromMessageRequest"/>
    <wsdl:output message="foo:fooStringFromMessageResponse"/>
</wsdl:operation>
...

Client is an executable Axis-C++ application.  Server is Axis-Java
hosted on Tomcat.  Server does not have a problem at all.  Axis-CPP
causes the problems.

When fooMessageFromString() is called, I get an SoapFaultException.
When I call fooStringFromMessage() I get an unhandled exception (note: I
am handling AxisException, SoapFaultException and OtherFaultException in
my try/catch block).

Have you ever seen problems such as this before?

Thanks,
Alastair

This e-mail and any attachments are intended solely for the use of the
intended recipient(s) and may contain legally privileged, proprietary
and/or confidential information.  Any use, disclosure, dissemination,
distribution or copying of this e-mail and any attachments for any
purposes that have not been specifically authorized by the sender is
strictly prohibited.  If you are not the intended recipient, please
immediately notify the sender by reply e-mail and permanently delete all
copies and attachments.

The entire content of this e-mail is for "information purposes" only and
should not be relied upon by the recipient in any way unless otherwise
confirmed in writing by way of letter or facsimile.


-----Original Message-----
From: Adrian Dick [mailto:adrian.dick@uk.ibm.com] 
Sent: Monday, August 07, 2006 1:36 AM
To: Apache AXIS C User List
Subject: Re: [Axis] Null message contents with AXISCPP

Hi,

In reference to your first problem.  I notice your response SOAP message
is
making use of multi-ref.
Unfortunately, this isn't currently supported by Axis C++.

You don't mention which server you're using, but if it's Axis Java, you
can
disable multi-ref using the WSDD file (see
http://ws.apache.org/axis/java/reference.html#GlobalAxisConfiguration ).



What specific problems are you seeing when using attributes? Do you have
any error messages?

Regards,
Adrian
_______________________________________
Adrian Dick (adrian.dick@uk.ibm.com)


"Alastair FETTES" <afettes@mdacorporation.com> wrote on 04/08/2006
23:55:20:

> I'm currently having a problem running the Axis-C 1.6b.
>
> All environment settings have been set as appropriate and I am able to
> run *simple* methods.  I.e. The "echoString" test case works for me
(see
> attached wsdl).  I am correctly able to send the value out and
retrieve
> the mssage back.  However, when I try to run more complex services I
run
> into problems.  I.e.  "echoMessageFromString" (see attached wsdl).
>
> Attached is a copy of my WSDL.  Server side is java and I have tested
it
> through the URL interface and visibily inspected the response XML to
be
> the following:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>     <soapenv:Body>
>
>         <echoMessageFromStringResponse
>
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
>             <returnMessage href="#id0"/>
>         </echoMessageFromStringResponse>
>
>         <multiRef id="id0" soapenc:root="0"
>
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>         xsi:type="ns1:messageOutputType"
>         xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>         xmlns:ns1="http://foo.com/">
>             <attr3 xsi:type="xsd:string">my attribute value 3</attr3>
>             <attr4 xsi:type="xsd:string">my attribute value 4</attr4>
>         </multiRef>
>     </soapenv:Body>
> </soapenv:Envelope>
>
> This is as expected therefore I am not worried about the java-server
> side (other than the lack of default namespace and the foo.com
namespace
> declared top level).  The problem lies on the cpp-client side.
>
> The following bit of (generated) code always returns null:
> messageOutputType* foo::echoMessageFromString(xsd__string Value0)
> {
>     ...
>     pReturn = (messageOutputType *) m_pCall->getCmplxObject(
>         (void *) Axis_DeSerialize_messageOutputType,
>         (void *) Axis_Create_messageOutputType,
>         (void *) Axis_Delete_messageOutputType,
>         "returnMessage",
>         0);
>     ...
> }
>
> Another problem is when I switch from using child elements to
attributes
> for transfer of data.  I run into problems that Axis is unable to
> serialize/deserialize the messages in this case.  The following is an
> example of a schema type that I have encountered this problem with:
>
>     <xs:complexType name="messageOutputType">
>         <xs:sequence/>
>         <xs:attribute name="attr3" type="xs:string"/>
>         <xs:attribute name="attr4" type="xs:string"/>
>     </xs:complexType>
>
> All problems are occuring on the CPP side mind you.  To sum up what
this
> means is I'm able to pass strings and other simple types back and
forth
> but not (slightly) more complex messages, rending the CPP side useless
> for me.  I could use Axis2 but have had no luck with code generation
on
> that side (see [Axis2] Code generation to C email from 2/8/2006).
>
> Any help would be most appreciated.
>
> Cheers,
> Alastair
>
> This e-mail and any attachments are intended solely for the use of the
> intended recipient(s) and may contain legally privileged, proprietary
> and/or confidential information.  Any use, disclosure, dissemination,
> distribution or copying of this e-mail and any attachments for any
> purposes that have not been specifically authorized by the sender is
> strictly prohibited.  If you are not the intended recipient, please
> immediately notify the sender by reply e-mail and permanently delete
all
> copies and attachments.
>
> The entire content of this e-mail is for "information purposes" only
and
> should not be relied upon by the recipient in any way unless otherwise
> confirmed in writing by way of letter or facsimile.
> [attachment "example.wsdl" deleted by Adrian Dick/UK/IBM]
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-c-user-help@ws.apache.org


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




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


Mime
View raw message