You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by "Cid, Jose" <Jo...@avocent.com> on 2005/05/03 21:25:09 UTC

FW: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.

 

________________________________

From: Cid, Jose 
Sent: Monday, May 02, 2005 5:24 PM
To: 'axis-user@ws.apache.org'
Subject: SimpleDeserializer encountered a child element, which is NOT
expected, in something it was trying to deserialize.


Can anyone shed some light as to what may be going on here. I am use
axis 1.2RC3. Multiref is false (server-config.wsdd).
 
A snippet of my client code is shown below:
 

...
      Service svc = (Service) serviceMap.get( SERVICE_INSTANCE );
      String szServiceAddress = (String) serviceMap.get( SERVICE_ADDRESS
);
      String szNameSpace = (String) serviceMap.get( SERVICE_NAME_SPACE
);
      String szPortName = (String) serviceMap.get( SERVICE_PORT_NAME );
 
      Call call = (Call) svc.createCall(  );
      call.setProperty( Call.SESSION_MAINTAIN_PROPERTY, new Boolean(
true ) );
 
      call.setTargetEndpointAddress( szServiceAddress );
      call.setOperationName( new QName( szNameSpace, "getUnitDetail" )
);
      call.setPortTypeName( new QName( szNameSpace, szPortName ) );
 
      Properties sessionProperties = getSession(  );
 
      if ( sessionProperties != null )
      { // Using previous session
 
         String szCookie = sessionProperties.getProperty( SESSION_COOKIE
);
 
         if ( szCookie != null )
         {
            call.setProperty( HTTPConstants.HEADER_COOKIE, szCookie );
         }
      }
 

      Object[] aObj = null;
 
      Object someObj = call.invoke( aObj );
 
      // =====> Also tried to invoke it this way...
      //GetUnitDetailResponse gudResponse = (GetUnitDetailResponse)
call.invoke( aObj );
...
 

===> to server:
 
GET //axis/services/UnitServiceApi?wsdl HTTP/1.1
User-Agent: Java/1.4.2_06
Host: localhost:8090
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
 

===> from server:
 
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=utf-8
Transfer-Encoding: chunked
Date: Mon, 02 May 2005 20:59:26 GMT
 
1803
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
targetNamespace="http://dsview.avocent.com/server/webservices/units
<http://dsview.avocent.com/server/webservices/units> " 
      xmlns:apachesoap="http://xml.apache.org/xml-soap
<http://xml.apache.org/xml-soap> " 
      xmlns:impl="http://dsview.avocent.com/server/webservices/units
<http://dsview.avocent.com/server/webservices/units> " 
      xmlns:intf="http://dsview.avocent.com/server/webservices/units
<http://dsview.avocent.com/server/webservices/units> " 
      xmlns:tns1="urn:units:webservices:server:dsview:avocent:com" 
      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/
<http://schemas.xmlsoap.org/wsdl/> " 
      xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/
<http://schemas.xmlsoap.org/wsdl/soap/> " 
      xmlns:xsd="http://www.w3.org/2001/XMLSchema
<http://www.w3.org/2001/XMLSchema> ">
 
<!--WSDL created by Apache Axis version: 1.2RC3
 
Built on Feb 28, 2005 (10:15:14 EST)-->
 
 <wsdl:types>
  <schema elementFormDefault="qualified" 
 
targetNamespace="urn:units:webservices:server:dsview:avocent:com" 
          xmlns="http://www.w3.org/2001/XMLSchema
<http://www.w3.org/2001/XMLSchema> ">
 
   <element name="getUnitDetail">
    <complexType>
     <sequence>
      <element name="unitId" type="xsd:unsignedInt"/>
      <element name="unitType" type="xsd:unsignedInt"/>
     </sequence>
    </complexType>
   </element>
   <complexType name="UnitDetail">
    <sequence>
     <element name="UnitId" nillable="true" type="xsd:string"/>
     <element name="Name" nillable="true" type="xsd:string"/>
     <element name="Address" nillable="true" type="xsd:string"/>
     <element name="Type" nillable="true" type="xsd:string"/>
    </sequence>
   </complexType>
   <element name="getUnitDetailResponse">
    <complexType>
     <sequence>
      <element name="return" nillable="true" type="tns1:UnitDetail"/>
     </sequence>
    </complexType>
   </element>
   <element name="getUnitList">
    <complexType>
     <sequence>
      <element name="unitType" type="xsd:unsignedInt"/>
     </sequence>
    </complexType>
   </element>
   <complexType name="ArrayOfUnitDetail">
    <sequence>
     <element maxOccurs="unbounded" minOccurs="0" name="item"
type="tns1:UnitDetail"/>
    </sequence>
   </complexType>
   <element name="getUnitListResponse">
    <complexType>
     <sequence>
      <element name="return" nillable="true"
type="tns1:ArrayOfUnitDetail"/>
     </sequence>
    </complexType>
   </element>
   <element name="doAction">
    <complexType>
     <sequence>
      <element name="unitId" type="xsd:unsignedInt"/>
      <element name="unitType" type="xsd:unsignedInt"/>
      <element name="actionReq" type="xsd:unsignedInt"/>
     </sequence>
    </complexType>
   </element>
   <complexType name="UnitStatusInfo">
    <sequence>
     <element name="UnitId" nillable="true" type="xsd:string"/>
     <element name="Status" nillable="true" type="xsd:string"/>
    </sequence>
   </complexType>
   <element name="doActionResponse">
    <complexType>
     <sequence>
      <element name="return" nillable="true"
type="tns1:UnitStatusInfo"/>
     </sequence>
    </complexType>
   </element>
  </schema>
 </wsdl:types>
 
   <wsdl:message name="getUnitListRequest">
 
      <wsdl:part element="tns1:getUnitList" name="getUnitList"/>
 
   </wsdl:message>
 
   <wsdl:message name="getUnitDetailRequest">
 
      <wsdl:part element="tns1:getUnitDetail" name="getUnitDetail"/>
 
   </wsdl:message>
 
   <wsdl:message name="doActionRequest">
 
      <wsdl:part element="tns1:doAction" name="doAction"/>
 
   </wsdl:message>
 
   <wsdl:message name="getUnitDetailResponse">
 
      <wsdl:part element="tns1:getUnitDetailResponse"
name="getUnitDetailResponse"/>
 
   </wsdl:message>
 
   <wsdl:message name="doActionResponse">
 
      <wsdl:part element="tns1:doActionResponse"
name="doActionResponse"/>
 
   </wsdl:message>
 
   <wsdl:message name="getUnitListResponse">
 
      <wsdl:part element="tns1:getUnitListResponse"
name="getUnitListResponse"/>
 
   </wsdl:message>
 
   <wsdl:portType name="UnitPortTypes">
 
      <wsdl:operation name="getUnitDetail"
parameterOrder="getUnitDetail">
 
         <wsdl:input message="impl:getUnitDetailRequest"
name="getUnitDetailRequest"/>
 
         <wsdl:output message="impl:getUnitDetailResponse"
name="getUnitDetailResponse"/>
 
      </wsdl:operation>
 
      <wsdl:operation name="getUnitList" parameterOrder="getUnitList">
 
         <wsdl:input message="impl:getUnitListRequest"
name="getUnitListRequest"/>
 
         <wsdl:output message="impl:getUnitListResponse"
name="getUnitListResponse"/>
 
      </wsdl:operation>
 
      <wsdl:operation name="doAction" parameterOrder="doAction">
 
         <wsdl:input message="impl:doActionRequest"
name="doActionRequest"/>
 
         <wsdl:output message="impl:doActionResponse"
name="doActionResponse"/>
 
      </wsdl:operation>
 
   </wsdl:portType>
 
   <wsdl:binding name="UnitServiceApiSoapBinding"
type="impl:UnitPortTypes">
 
      <wsdlsoap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/
<http://schemas.xmlsoap.org/soap/http"/> >
 
      <wsdl:operation name="getUnitDetail">
 
         <wsdlsoap:operation soapAction=""/>
 
         <wsdl:input name="getUnitDetailRequest">
 
            <wsdlsoap:body use="literal"/>
 
         </wsdl:input>
 
         <wsdl:output name="getUnitDetailResponse">
 
            <wsdlsoap:body use="literal"/>
 
         </wsdl:output>
 
      </wsdl:operation>
 
      <wsdl:operation name="getUnitList">
 
         <wsdlsoap:operation soapAction=""/>
 
         <wsdl:input name="getUnitListRequest">
 
            <wsdlsoap:body use="literal"/>
 
         </wsdl:input>
 
         <wsdl:output name="getUnitListResponse">
 
            <wsdlsoap:body use="literal"/>
 
         </wsdl:output>
 
      </wsdl:operation>
 
      <wsdl:operation name="doAction">
 
         <wsdlsoap:operation soapAction=""/>
 
         <wsdl:input name="doActionRequest">
 
            <wsdlsoap:body use="literal"/>
 
         </wsdl:input>
 
         <wsdl:output name="doActionResponse">
 
            <wsdlsoap:body use="literal"/>
 
         </wsdl:output>
 
      </wsdl:operation>
 
   </wsdl:binding>
 
   <wsdl:service name="UnitServiceInterface">
 
      <wsdl:port binding="impl:UnitServiceApiSoapBinding"
name="UnitServiceApi">
 
         <wsdlsoap:address
location="http://localhost:8090//axis/services/UnitServiceApi"/
<http://localhost:8090//axis/services/UnitServiceApi"/> >
 
      </wsdl:port>
 
   </wsdl:service>
 
</wsdl:definitions>
 
 
 
===> The method invocation:
 
------sent:
 
POST //axis/services/UnitServiceApi HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipart/related,
text/*
User-Agent: Axis/1.2RC3
Host: localhost:8090
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: ""
Content-Length: 410
 
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/
<http://schemas.xmlsoap.org/soap/envelope/> " 
                  xmlns:xsd="http://www.w3.org/2001/XMLSchema
<http://www.w3.org/2001/XMLSchema> " 
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
<http://www.w3.org/2001/XMLSchema-instance> ">
  <soapenv:Body>
    <ns1:getUnitDetail
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/
<http://schemas.xmlsoap.org/soap/encoding/> " 
       xmlns:ns1="http://dsview.avocent.com/server/webservices/units"/
<http://dsview.avocent.com/server/webservices/units"/> >
  </soapenv:Body>
</soapenv:Envelope>
 

------Returned:
 
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=utf-8
Date: Mon, 02 May 2005 20:59:39 GMT
Connection: close
 
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/
<http://schemas.xmlsoap.org/soap/envelope/> " 
                  xmlns:xsd="http://www.w3.org/2001/XMLSchema
<http://www.w3.org/2001/XMLSchema> " 
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
<http://www.w3.org/2001/XMLSchema-instance> ">
  <soapenv:Body>
    <getUnitDetailResponse
xmlns="urn:units:webservices:server:dsview:avocent:com">
      <return>
        <UnitId>anID</UnitId>
        <Name>aName</Name>
        <Address>1.2.3.4</Address>
        <Type>someType</Type>
      </return>
    </getUnitDetailResponse>
  </soapenv:Body>
</soapenv:Envelope>
 

Problem is in my client code I get exception:
 
No Sessions.  Create using Authentication.
AxisFault
 faultCode:
{http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: org.xml.sax.SAXException: SimpleDeserializer encountered a
child element, which is NOT expected, in something it was trying to
deserialize.
 faultActor: 
 faultNode: 
 faultDetail: 
 {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(SimpleDeser
ializer.java:145)
 at
org.apache.axis.encoding.DeserializationContext.startElement(Deserializa
tionContext.java:1035)
 at
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:
165)
 at
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.j
ava:1140)
 at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:347)
 at org.apache.axis.message.RPCElement.getParams(RPCElement.java:386)
 at org.apache.axis.client.Call.invoke(Call.java:2437)
 at org.apache.axis.client.Call.invoke(Call.java:2336)
 at org.apache.axis.client.Call.invoke(Call.java:1793)
 at JClient2.JClient2.getUnitDetail(JClient2.java:561)
 at JClient2.JClient2.mainMenu(JClient2.java:270)
 at JClient2.JClient2.main(JClient2.java:695)
 
 {http://xml.apache.org/axis/}hostname:SUN-JOSECID
 
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:2440)
 at org.apache.axis.client.Call.invoke(Call.java:2336)
 at org.apache.axis.client.Call.invoke(Call.java:1793)
 at JClient2.JClient2.getUnitDetail(JClient2.java:561)
 at JClient2.JClient2.mainMenu(JClient2.java:270)
 at JClient2.JClient2.main(JClient2.java:695)
Caused by: 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(SimpleDeser
ializer.java:145)
 at
org.apache.axis.encoding.DeserializationContext.startElement(Deserializa
tionContext.java:1035)
 at
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:
165)
 at
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.j
ava:1140)
 at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:347)
 at org.apache.axis.message.RPCElement.getParams(RPCElement.java:386)
 at org.apache.axis.client.Call.invoke(Call.java:2437)
 ... 5 more
 
When I use the following code snippet everything is OK:
 
      UnitPortTypes binding;
 
      String epAddr =
"http://sun-josecid:8090/axis/services/UnitServiceApi";
      String wsdlAddr = epAddr + "?wsdl";
 
      GetUnitDetailResponse gudResponse;
 
      URL wsdlUrl = new URL( wsdlAddr );
 
      binding = new UnitServiceInterfaceLocator(  ).getUnitServiceApi(
wsdlUrl );
      gudResponse = binding.getUnitDetail( gud );

By the way, with the following code above, when I make a call to a
method that returns an array, example,
 
  gulResponse = binding.getUnitList( gul );
 
The "gulResponse" returned always contains exactly 1 row of a possible 5
that should be returned. Also, the
returned row is always the last row of the table.
 
any help is much appreciated.
 
Jose Cid