An outside client is sending the following array encoding for an argument to a method, and Axis is not deserializing it. ( See error return w/stack trace below )

<trackIDs SOAP-ENC:arrayType="xsd:ur-type[1]" xsi:type="SOAP-ENC:Array">
<item_0 xsi:type="xsd:string">3888197206</item_0>
</trackIDs>

If I change the arrayType from xsd:ur-type to xsd:string and resend the message with TCPMonitor, the server deserializes it successfully.

This appears to be true for all array types; the ur-type[] encoding is not being deserialized by Axis.

Q) Is this valid encoding for an arrayType? I see many examples of this, and it does work with Apache SOAP.

Q) What can I do on the server side to get this to deserialize properly?

The client code that generates this array encoding is not under my control.


<faultcode xmlns:ns1="http://xml.apache.org/axis/";>ns1:Server.userException</ faultcode>
<faultstring>org.xml.sax.SAXException: No deserializer defined for array type {http://www.w3.org/2001/XMLSchema}ur-type</faultstring>
<detail>
<ns2:stackTrace xmlns:ns2="http://xml.apache.org/axis/";>org.xml.sax.SAXException: No deserializer defined for array type {http://www.w3.org/2001/XMLSchema}ur-type
at org.apache.axis.encoding.ser.ArrayDeserializer.onStartElement(ArrayDeser ializer.java:257)
at org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl. java:394)
at org.apache.axis.encoding.DeserializationContextImpl.startElement(Deseria lizationContextImpl.java:906)
at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java: 200)
at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.j ava:684)
at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:207)
at org.apache.axis.message.RPCElement.getParams(RPCElement.java:265)
at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.ja va:190)
at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:276 )
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.j ava:71)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:156)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:126)
at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:437)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:316)
at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:701)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.j ava:335)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:193)
at com.nika.axis.AxisActionFilter.doFilter(Unknown Source)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:213)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv e.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.ja va:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4 72)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv e.java:201)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.ja va:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4 72)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:234 4)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java :164)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.ja va:566)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherVa lve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.ja va:564)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java :170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.ja va:564)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462 )
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.ja va:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4 72)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:163)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.ja va:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4 72)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.j ava:1011)
at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java: 1106)
at java.lang.Thread.run(Thread.java:484)
</ns2:stackTrace>

Reply via email to