I was wondering if anyone has tested interoperability with .NET for passing arrays. I had an EJB service which was deployed using axis. The method required an array of string parameter. When I called it from .NET client, it defined the array as separate element and referenced it from the method body. It seems like Axis as well as soap 2.2 do not handle that. The particular error I got from the server was that no deserializer found for ref element.
I could provide actual messages if needed. Thanks, _______________________________________________ Waqar Sadiq EDS EIT EASI - Enterprise Consultant MS: H3-4C-22 5400 Legacy Drive Plano, Texas 75024 phone: +01-972-797-8408 (8-837) e-mail: [EMAIL PROTECTED] fax: +01-972-605-4071 _______________________________________________ -----Original Message----- From: Sam Ruby [mailto:[EMAIL PROTECTED]] Sent: Tuesday, February 05, 2002 6:06 PM To: [EMAIL PROTECTED] Subject: Re: AXIS/SOAP Interop Test Summary R J Scheuerle Jr wrote: > > You indicated yesterday that a change was made to Apache SOAP to > register array types. I am concerned that they will run across this same > problem...and from last night's test it appears that they did. > See SOAP echoStructArray for SOAP RMI. Also, the SOAP echoStructArray > call failed when calling Apache SOAP and Apache AXIS! > > It would be nice to see the SOAP wire dumps for these cases. The SOAP echoStructArray failed that night as I had updated the client but not the server. Since then I had difficultly running Axis with the latest Tomcat for a classloader/javax issue that I finally tracked down. My feeling at the moment is that the wire dumps attached below are both (1) consistent with the WSDL definition, and (2) able to be produced by an appropriately configured Apache SOAP installation out in the field without any code mods. The topic of what Axis should send is certainly up for discussion, but in my mind it is clear that the following datastreams should be accepted. Ass sent by Apache SOAP: POST /axis/servlet/AxisServlet HTTP/1.0 Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: 1539 SOAPAction: "http://soapinterop.org/" <?xml version='1.0' encoding='UTF-8'?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd ="http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Body> <ns1:echoStructArray xmlns:ns1="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <inputStructArray xmlns:ns2="http://soapinterop.org/xsd" xsi:type="ns2:ArrayOfSOAPStruct" xmlns:ns3="http://schemas.xmlsoap.org/soap/encoding/" ns3:arrayType="ns2:SOAPStruct[5]"> <item xsi:type="ns2:SOAPStruct"> <varInt xsi:type="xsd:int">5</varInt> <varFloat xsi:type="xsd:float">5.55555</varFloat> <varString xsi:type="xsd:string">cinqo</varString> </item> <item xsi:type="ns2:SOAPStruct"> <varInt xsi:type="xsd:int">4</varInt> <varFloat xsi:type="xsd:float">4.4444</varFloat> <varString xsi:type="xsd:string">quattro</varString> </item> <item xsi:type="ns2:SOAPStruct"> <varInt xsi:type="xsd:int">3</varInt> <varFloat xsi:type="xsd:float">3.333</varFloat> <varString xsi:type="xsd:string">tres</varString> </item> <item xsi:type="ns2:SOAPStruct"> <varInt xsi:type="xsd:int">2</varInt> <varFloat xsi:type="xsd:float">2.22</varFloat> <varString xsi:type="xsd:string">duet</varString> </item> <item xsi:type="ns2:SOAPStruct"> <varInt xsi:type="xsd:int">1</varInt> <varFloat xsi:type="xsd:float">1.1</varFloat> <varString xsi:type="xsd:string">un</varString> </item> </inputStructArray> </ns1:echoStructArray> </SOAP-ENV:Body> </SOAP-ENV:Envelope> As returned by Apache SOAP: POST /soap/servlet/rpcrouter HTTP/1.0 Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: 1539 SOAPAction: "http://soapinterop.org/" HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: 1491 Date: Tue, 05 Feb 2002 23:47:52 GMT Server: Apache Tomcat/4.1-dev (HTTP/1.1 Connector) Set-Cookie: JSESSIONID=C6D0D8C32FBE4F0A28DF7C08ABA800B4;Path=/soap <?xml version='1.0' encoding='UTF-8'?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd ="http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Body> <ns1:echoStructArrayResponse xmlns:ns1="http://soapinterop.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <return xmlns:ns2="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:Array" xmlns:ns3="http://soapinterop.org/xsd" ns2:arrayType ="ns3:SOAPStruct[5]"> <item xsi:type="ns3:SOAPStruct"> <varInt xsi:type="xsd:int">5</varInt> <varFloat xsi:type="xsd:float">5.55555</varFloat> <varString xsi:type="xsd:string">cinqo</varString> </item> <item xsi:type="ns3:SOAPStruct"> <varInt xsi:type="xsd:int">4</varInt> <varFloat xsi:type="xsd:float">4.4444</varFloat> <varString xsi:type="xsd:string">quattro</varString> </item> <item xsi:type="ns3:SOAPStruct"> <varInt xsi:type="xsd:int">3</varInt> <varFloat xsi:type="xsd:float">3.333</varFloat> <varString xsi:type="xsd:string">tres</varString> </item> <item xsi:type="ns3:SOAPStruct"> <varInt xsi:type="xsd:int">2</varInt> <varFloat xsi:type="xsd:float">2.22</varFloat> <varString xsi:type="xsd:string">duet</varString> </item> <item xsi:type="ns3:SOAPStruct"> <varInt xsi:type="xsd:int">1</varInt> <varFloat xsi:type="xsd:float">1.1</varFloat> <varString xsi:type="xsd:string">un</varString> </item> </return> </ns1:echoStructArrayResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> As returned by Apache Axis: HTTP/1.1 500 Internal Server Error Content-Type: text/xml; charset=utf-8 Content-Length: 3917 Date: Tue, 05 Feb 2002 23:49:08 GMT Server: Apache Tomcat/4.1-dev (HTTP/1.1 Connector) <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd ="http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Body> <SOAP-ENV:Fault> <SOAP-ENV:faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Server.userException</SOAP-ENV:f aultcode> <SOAP-ENV:faultstring>org.xml.sax.SAXException: Deserializing parameter 'inputStructArray': could not find deserializer for type http://soapinterop.org/xsd:ArrayOfSOAPStruct</SOAP-ENV:faultstring> <SOAP-ENV:detail> <ns2:stackTrace xmlns:ns2="http://xml.apache.org/axis/">org.xml.sax.SAXException: Deserializing parameter 'inputStructArray': could not find deserializer for type http://soapinterop.org/xsd:ArrayOfSOAPStruct at org.apache.axis.message.RPCHandler.onStartChild(Unknown Source) at org.apache.axis.encoding.DeserializationContextImpl.startElement(Unknown Source) at org.apache.axis.message.SAX2EventRecorder.replay(Unknown Source) at org.apache.axis.message.MessageElement.publishToHandler(Unknown Source) at org.apache.axis.message.RPCElement.deserialize(Unknown Source) at org.apache.axis.message.RPCElement.getParams(Unknown Source) at org.apache.axis.providers.java.RPCProvider.processMessage(Unknown Source) at org.apache.axis.providers.java.JavaProvider.invoke(Unknown Source) at org.apache.axis.strategies.InvocationStrategy.visit(Unknown Source) at org.apache.axis.SimpleChain.doVisiting(Unknown Source) at org.apache.axis.SimpleChain.invoke(Unknown Source) at org.apache.axis.server.AxisServer.invoke(Unknown Source) at org.apache.axis.transport.http.AxisServlet.doPost(Unknown Source) at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Unknown Source) at org.apache.catalina.core.ApplicationFilterChain.doFilter(Unknown Source) at org.apache.catalina.core.StandardWrapperValve.invoke(Unknown Source) at org.apache.catalina.core.StandardPipeline.invokeNext(Unknown Source) at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source) at org.apache.catalina.core.ContainerBase.invoke(Unknown Source) at org.apache.catalina.core.StandardContextValve.invoke(Unknown Source) at org.apache.catalina.core.StandardPipeline.invokeNext(Unknown Source) at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source) at org.apache.catalina.core.ContainerBase.invoke(Unknown Source) at org.apache.catalina.core.StandardContext.invoke(Unknown Source) at org.apache.catalina.core.StandardHostValve.invoke(Unknown Source) at org.apache.catalina.core.StandardPipeline.invokeNext(Unknown Source) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(Unknown Source) at org.apache.catalina.core.StandardPipeline.invokeNext(Unknown Source) at org.apache.catalina.valves.ErrorReportValve.invoke(Unknown Source) at org.apache.catalina.core.StandardPipeline.invokeNext(Unknown Source) at org.apache.catalina.valves.AccessLogValve.invoke(Unknown Source) at org.apache.catalina.core.StandardPipeline.invokeNext(Unknown Source) at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source) at org.apache.catalina.core.ContainerBase.invoke(Unknown Source) at org.apache.catalina.core.StandardEngineValve.invoke(Unknown Source) at org.apache.catalina.core.StandardPipeline.invokeNext(Unknown Source) at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source) at org.apache.catalina.core.ContainerBase.invoke(Unknown Source) at org.apache.catalina.connector.http.HttpProcessor.process(Unknown Source) at org.apache.catalina.connector.http.HttpProcessor.run(Unknown Source) at java.lang.Thread.run(Thread.java:484) </ns2:stackTrace> </SOAP-ENV:detail> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope> - Sam Ruby