Hi,
you are saying it does not support rpc/literal. I believe you, but it
works for some parameter types like int or string. Whatever.
I tried Axis 1.2. beta 2.
I runs faster (at least my subjective feeling)
I made it use wrapped style:
call.setOperationStyle(Style.WRAPPED);
and
<service name="ComplexService" provider="java:RPC" style="wrapped">
The same error happens:
org.xml.sax.SAXException: SimpleDeserializer encountered a child
element, which is NOT expected, in something it was trying to
deserialize.
at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
at org.apache.axis.client.Call.invoke(Call.java:2421)
at org.apache.axis.client.Call.invoke(Call.java:2317)
at org.apache.axis.client.Call.invoke(Call.java:1774)
request:
<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><echoSimpleValue
xmlns=""><arg0 xsi:type="ns1:SimpleValue"
xmlns:ns1="urn:ComplexService"><field1
xsi:type="xsd:string">cc</field1><field2
xsi:type="xsd:string">dd</field2></arg0></echoSimpleValue></soapenv:Body></soapenv:Envelope>
response:
<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><echoSimpleValueResponse
xmlns=""><echoSimpleValueReturn><field1>cc</field1><field2>dd</field2></echoSimpleValueReturn></echoSimpleValueResponse></soapenv:Body></soapenv:Envelope>
again it cannot deserialize on the client. it can deserialize the same
value on the server (I debugged it)
any help appreciated.
christian campo
On Tue, 3 Aug 2004 11:08:26 -0400, Anne Thomas Manes <[EMAIL PROTECTED]> wrote:
> Axis does not support rpc/literal. It supports rpc/encoded or
> document/literal styles only. If you would like to use an rpc style
> programming interface and generate doc/literal messages, you should use the
> Axis "wrapped" style. (You should also use Axis 1.2 if you want to use
> literal encoding.)
>
> Anne
>
>
>
> -----Original Message-----
> From: Christian Campo [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, August 03, 2004 9:34 AM
> To: [EMAIL PROTECTED]
> Subject: convert rpc/encoded to rpc/literal
>
> Hi,
>
> (I feel kind of stupid with this question, because I use Axis for quit
> some time now, but can't figure out this problem).
>
> I have a working sample that uses the BeanSerializer and uses
> rpc/encoding. The client uses the Call object (not codegeneration
> involved) and the service simply echos the received object.
> The passed object simply contains two String objects with setter and
> getters and a constructor with no parameters.
> Everything works fine.
>
> Now I try to convert the service to a different message style. I tried
> various styles which all sort of produce the same message.
>
> I changed the wsdd file to include the style:
> <service name="ComplexService" provider="java:RPC" style="rpc"
> use="literal">
>
> And I changed the client program to use Literal as format:
> call.setOperationUse(Use.LITERAL);
>
> Now the call from client to server works (it receives the object), the
> object is returned (looks good) and then the client tries to
> deserialize it and says:
> ----------------------------------------------------------------------------
> ------------------------------------------------------
> {http://xml.apache.org/axis/}stackTrace: org.xml.sax.SAXException:
> SimpleDeserializer encountered a child element, which is NOT expected,
> in something it was trying to deserialize.
> at
> org.apache.axis.encoding.ser.SimpleDeserializer.onStartChild(SimpleDeseriali
> zer.java:189)
> at
> org.apache.axis.encoding.DeserializationContextImpl.startElement(Deserializa
> tionContextImpl.java:963)
> at
> org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:198)
> at
> org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:
> 722)
> at
> org.apache.axis.message.RPCElement.deserialize(RPCElement.java:233)
> at org.apache.axis.message.RPCElement.getParams(RPCElement.java:347)
> at org.apache.axis.client.Call.invoke(Call.java:2272)
> at org.apache.axis.client.Call.invoke(Call.java:2171)
> at org.apache.axis.client.Call.invoke(Call.java:1691)
> ----------------------------------------------------------------------------
> ------------------------------------------------------
> I am using Axis 1.1.
> The request SOAP message looks like this:
> ----------------------------------------------------------------------------
> ------------------------------------------------------
> <?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>
> <echoSimpleValue xmlns="">
> <arg0>
> <field1>cc</field1>
> <field2>dd</field2>
> </arg0>
> </echoSimpleValue>
> </soapenv:Body>
> </soapenv:Envelope>
> Here is what the server replied:
> ----------------------------------------------------------------------------
> ------------------------------------------------------
> <?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>
> <echoSimpleValueResponse xmlns="">
> <echoSimpleValueReturn>
> <field1>cc</field1>
> <field2>dd</field2>
> </echoSimpleValueReturn>
> </echoSimpleValueResponse>
> </soapenv:Body>
> </soapenv:Envelope>
> ----------------------------------------------------------------------------
> ------------------------------------------------------
> The problem seems to be that the SimpleDeserializer is used instead of
> the BeanDeserializer. All this is quit clear. However the Axis Engine
> on the server was able to deserialize it. Why didn't it also have the
> same kind of problems ?
> And if it didn't have them through some magic, why does the
> deserialization fail on the client ??
> Any idea somebody ?
> thanks
> --
> christian campo (gmail.com)
>
>
--
christian campo (gmail.com)