DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16846>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16846 Error in deserialization Summary: Error in deserialization Product: Axis Version: 1.0 Platform: PC OS/Version: Windows NT/2K Status: NEW Severity: Critical Priority: Other Component: Serialization/Deserialization AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] I have come across what I believe to be a bug in the DeserializationContextImpl object. For background: I've got a thin soap client that is hitting an XML/A service on a machine to get some OLAP information. Right now I am just doing a basic query to get a list of data sources. The request goes over fine and tcpmon shows everything is returned fine (and I have validated the returned XML) but Axis keeps blowing up with: [java] org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. It appears to blow up on the <TDP/><MDP/> tags. Don't know why though since the XML is valid. That is why I assume it is an Axis error. If someone could get back to me as soon as possible that would be great. I can't seem to find a way around this and I need it working in two days... Thanks! Here is the returned XML: <?xml version="1.0"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:DiscoverResponse xmlns:m="urn:schemas-microsoft-com:xml-analysis"> <return SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <root xmlns="urn:schemas-microsoft-com:xml-analysis:rowset" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:schema xmlns="urn:schemas-microsoft-com:xml-analysis:rowset" targetNamespace="urn:schemas-microsoft-com:xml-analysis:rowset" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft- com:xml-sql" elementFormDefault="qualified"> <xsd:element name="root"> <xsd:complexType> <xsd:sequence minOccurs="0" maxOccurs="unbounded"> <xsd:element name="row" type="row"/></xsd:sequence></xsd:complexType></xsd:element> <xsd:complexType name="row"> <xsd:choice maxOccurs="unbounded" minOccurs="0"> <xsd:element name="DataSourceName" type="xsd:string" sql:field="DataSourceName"/> <xsd:element name="DataSourceDescription" type="xsd:string" sql:field="DataSourceDescription"/> <xsd:element name="URL" type="xsd:string" sql:field="URL"/> <xsd:element name="DataSourceInfo" type="xsd:string" sql:field="DataSourceInfo"/> <xsd:element name="ProviderName" type="xsd:string" sql:field="ProviderName"/> <xsd:element name="ProviderType" sql:field="ProviderType"> <xsd:complexType> <xsd:sequence maxOccurs="unbounded" minOccurs="0"> <xsd:any processContents="lax" maxOccurs="unbounded"/></xsd:sequence></xsd:complexType></xsd:element> <xsd:element name="AuthenticationMode" sql:type="xsd:string" sql:field="AuthenticationMode"/></xsd:choice></xsd:complexType></xsd:schema> <row> <DataSourceName>Local Analysis Server</DataSourceName> <DataSourceDescription>Microsoft Analysis Server 2000 on local machine</DataSourceDescription> <URL>http://localhost/xmla/msxisapi.dll</URL> <DataSourceInfo>Provider=MSOLAP;Data Source=local</DataSourceInfo> <ProviderName>Microsoft XML for Analysis</ProviderName> <ProviderType><TDP/><MDP/><DMP/></ProviderType> <AuthenticationMode>Unauthenticated</AuthenticationMode></row></root></return></ m:DiscoverResponse></SOAP-ENV:Body></SOAP-ENV:Envelope> Here is my code: package com.symbol.pps.analysis.test; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.Constants; import org.apache.axis.encoding.ser.BeanSerializerFactory; import org.apache.axis.encoding.ser.BeanDeserializerFactory; import javax.xml.namespace.QName; public class TestClient { public static void main(String [] args) { try { Service service = new Service(); Call call = (Call) service.createCall(); System.out.println("Adding Parameters"); call.addParameter("RequestType", org.apache.axis.Constants.XSD_STRING, javax.xml.rpc.ParameterMode.IN); call.addParameter("Properties", org.apache.axis.Constants.XSD_STRING, javax.xml.rpc.ParameterMode.IN); call.addParameter("Restrictions", org.apache.axis.Constants.XSD_STRING, javax.xml.rpc.ParameterMode.IN); call.addParameter("Result", org.apache.axis.Constants.XSD_STRING, javax.xml.rpc.ParameterMode.OUT); call.setReturnType(org.apache.axis.Constants.XSD_STRING); call.setTargetEndpointAddress( new java.net.URL ("http://localhost:8080/xmla/msxisapi.dll") ); call.setOperationName( new QName("urn:schemas-microsoft-com:xml- analysis","Discover") ); System.out.println("Setting Properties"); call.setProperty(call.SOAPACTION_USE_PROPERTY, Boolean.TRUE); call.setProperty(call.SOAPACTION_URI_PROPERTY, "urn:schemas-microsoft-com:xml- analysis:Discover"); System.out.println("Invoking"); // I think I have to write a custom deserializer to get this to work (I think) Object obj = call.invoke( new Object[] { "DISCOVER_DATASOURCES", "", "" } ); System.out.println("Sent msg', got '" + obj.toString() + "'"); } catch (Exception e) { //e.printStackTrace(); System.err.println(e.toString()); } } } And lastly here is a debug dump from Axis: test.connection: [java] Adding Parameters [java] Setting Properties [java] Invoking [java] Enter: DeserializationContextImpl::startElement(http://schemas.xmlso ap.org/soap/envelope/, Envelope) [java] Enter: DeserializationContextImpl::startElement(http://schemas.xmlso ap.org/soap/envelope/, Body) [java] Enter: DeserializationContextImpl::startElement(urn:schemas-microsof t-com:xml-analysis, DiscoverResponse) [java] Enter: DeserializationContextImpl::startElement(, return) [java] Enter: DeserializationContextImpl::startElement(urn:schemas-microsof t-com:xml-analysis:rowset, root) [java] Enter: DeserializationContextImpl::startElement(http://www.w3.org/20 01/XMLSchema, schema) [java] Enter: DeserializationContextImpl::startElement(http://www.w3.org/20 01/XMLSchema, element) [java] Enter: DeserializationContextImpl::startElement(http://www.w3.org/20 01/XMLSchema, complexType) [java] Enter: DeserializationContextImpl::startElement(http://www.w3.org/20 01/XMLSchema, sequence) [java] Enter: DeserializationContextImpl::startElement(http://www.w3.org/20 01/XMLSchema, element) [java] Enter: DeserializationContextImpl::startElement(http://www.w3.org/20 01/XMLSchema, complexType) [java] Enter: DeserializationContextImpl::startElement(http://www.w3.org/20 01/XMLSchema, choice) [java] Enter: DeserializationContextImpl::startElement(http://www.w3.org/20 01/XMLSchema, element) [java] Enter: DeserializationContextImpl::startElement(http://www.w3.org/20 01/XMLSchema, element) [java] Enter: DeserializationContextImpl::startElement(http://www.w3.org/20 01/XMLSchema, element) [java] Enter: DeserializationContextImpl::startElement(http://www.w3.org/20 01/XMLSchema, element) [java] Enter: DeserializationContextImpl::startElement(http://www.w3.org/20 01/XMLSchema, element) [java] Enter: DeserializationContextImpl::startElement(http://www.w3.org/20 01/XMLSchema, element) [java] Enter: DeserializationContextImpl::startElement(http://www.w3.org/20 01/XMLSchema, complexType) [java] Enter: DeserializationContextImpl::startElement(http://www.w3.org/20 01/XMLSchema, sequence) [java] Enter: DeserializationContextImpl::startElement(http://www.w3.org/20 01/XMLSchema, any) [java] Enter: DeserializationContextImpl::startElement(http://www.w3.org/20 01/XMLSchema, element) [java] Enter: DeserializationContextImpl::startElement(urn:schemas-microsof t-com:xml-analysis:rowset, row) [java] Enter: DeserializationContextImpl::startElement(urn:schemas-microsof t-com:xml-analysis:rowset, DataSourceName) [java] Enter: DeserializationContextImpl::startElement(urn:schemas-microsof t-com:xml-analysis:rowset, DataSourceDescription) [java] Enter: DeserializationContextImpl::startElement(urn:schemas-microsof t-com:xml-analysis:rowset, URL) [java] Enter: DeserializationContextImpl::startElement(urn:schemas-microsof t-com:xml-analysis:rowset, DataSourceInfo) [java] Enter: DeserializationContextImpl::startElement(urn:schemas-microsof t-com:xml-analysis:rowset, ProviderName) [java] Enter: DeserializationContextImpl::startElement(urn:schemas-microsof t-com:xml-analysis:rowset, ProviderType) [java] Enter: DeserializationContextImpl::startElement(urn:schemas-microsof t-com:xml-analysis:rowset, TDP) [java] Feb 6, 2003 10:26:42 AM org.apache.axis.client.Call invoke [java] SEVERE: Exception: [java] Enter: DeserializationContextImpl::startElement(urn:schemas-microsof t-com:xml-analysis:rowset, MDP) [java] org.xml.sax.SAXException: SimpleDeserializer encountered a child ele ment, which is NOT expected, in something it was trying to deserialize. [java] at org.apache.axis.encoding.ser.SimpleDeserializer.onStartChild( SimpleDeserializer.java:188) [java] Enter: DeserializationContextImpl::startElement(urn:schemas-microsof t-com:xml-analysis:rowset, DMP) [java] at org.apache.axis.encoding.DeserializationContextImpl.startElem ent(DeserializationContextImpl.java:894) [java] at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRec order.java:200) [java] at org.apache.axis.message.MessageElement.publishToHandler(Messa geElement.java:684) [java] Enter: DeserializationContextImpl::startElement(urn:schemas-microsof t-com:xml-analysis:rowset, AuthenticationMode) [java] at org.apache.axis.message.RPCElement.deserialize(RPCElement.jav a:241) [java] at org.apache.axis.message.RPCElement.getParams(RPCElement.java: 265) [java] at org.apache.axis.client.Call.invoke(Call.java:1871) [java] at org.apache.axis.client.Call.invoke(Call.java:1777) [java] Enter: DeserializationContextImpl::startElement(urn:schemas-microsof t-com:xml-analysis, DiscoverResponse) [java] Enter: DeserializationContextImpl::startElement(, return) [java] at org.apache.axis.client.Call.invoke(Call.java:1315) [java] at com.symbol.pps.analysis.test.TestClient.main(Unknown Source) [java] Enter: DeserializationContextImpl::startElement(urn:schemas-microsof t-com:xml-analysis:rowset, root) [java] org.xml.sax.SAXException: SimpleDeserializer encountered a child ele ment, which is NOT expected, in something it was trying to deserialize.
