Anne,

I've modified my WSDL according to your advice and re-generated my client.

Happily, things are functioning.  Apparently the "type" vs. "xsi:type" issue 
does not cause an error with the Axis2 client.

Thank you,
Nate

-----Original Message-----
From: Anne Thomas Manes [mailto:[EMAIL PROTECTED]
Sent: Monday, March 24, 2008 6:26 PM
To: axis-user@ws.apache.org
Subject: Re: What might cause "Unexpected subelement return"?

When you modify the WSDL, specify type="ns0:Person" in place of the
type="xs:anyType".
(See the recommended fix in my last response)

Anne

On Mon, Mar 24, 2008 at 9:01 PM, Nate Roe <[EMAIL PROTECTED]> wrote:
>
>  Okay.  I will file these two issues tomorrow morning.  I will also attach a 
> zip of the files I used to recreate the issue.
>
>  How can I work around an improperly generated xsi:type though?
>
>  Modifying the WSDL by hand may solve the incorrect WSDL, but I'm not sure 
> how to approach the runtime issue.
>
>
>  Thank you,
>  Nate
>
>  -----Original Message-----
>  From: Anne Thomas Manes [mailto:[EMAIL PROTECTED]
>
>
> Sent: Monday, March 24, 2008 5:52 PM
>  To: axis-user@ws.apache.org
>  Subject: Re: What might cause "Unexpected subelement return"?
>
>  There are two different problems:
>  - one is in the WSDL generation for List<person>
>     (not specifying maxOccurs="unbounded" and specifying xs:anyType
>  rather than Person)
>  - the other is at runtime
>     (not generating the proper xsi:type attribute)
>
>  Please file two JIRAs.
>
>  Thanks,
>  Anne
>
>  On Mon, Mar 24, 2008 at 8:45 PM, Nate Roe <[EMAIL PROTECTED]> wrote:
>  > Anne,
>  >
>  >  Interesting.
>  >
>  >  My service is a POJO returning a List<Person>.  The WSDL is generated by 
> Axis2 automatically on deployment.  Here is the relevant method from the POJO 
> service:
>  >
>  >         public List<Person> getPeople(int numPeople)
>  >         {
>  >                 List<Person> list = new LinkedList<Person>();
>  >
>  >                 for (int i = 0; i < numPeople; i++)
>  >                 {
>  >                         list.add(createPerson(Integer.toString(i)));
>  >                 }
>  >
>  >                 return list;
>  >         }
>  >
>  >  Should I file a JIRA for this problem in general, or the "anyType" 
> problem specifically?
>  >
>  >  I will try using a modified WSDL to generate the client stub and see how 
> that goes.
>  >
>  >  Thank you,
>  >  Nate
>  >
>  >
>  >  -----Original Message-----
>  >  From: Anne Thomas Manes [mailto:[EMAIL PROTECTED]
>  >
>  > Sent: Monday, March 24, 2008 5:41 PM
>  >  To: axis-user@ws.apache.org
>  >
>  >
>  > Subject: Re: What might cause "Unexpected subelement return"?
>  >
>  >  Nate,
>  >
>  >  My guess is that Axis2 is barfing on the second <ns:return> element.
>  >  You did not declare maxOccurs="unbounded" in the "return" element type
>  >  definition:
>  >
>  >  <xs:element name="getPeopleResponse">
>  >                <xs:complexType>
>  >                    <xs:sequence>
>  >                        <xs:element minOccurs="0" name="return"
>  >  nillable="true" type="xs:anyType"/>
>  >                    </xs:sequence>
>  >                </xs:complexType>
>  >  </xs:element>
>  >
>  >  Also, is there some reason why you specified type="xs:anyType" rather
>  >  than type="ns0:Person"? Axis2 is generating an invalid "type"
>  >  attribute for each return element. The attribute should be "xsi:type"
>  >  rather than "type". Please file a JIRA for this problem.
>  >
>  >  Meanwhile, please modify the element declaration to this and try it again:
>  >
>  >  <xs:element name="getPeopleResponse">
>  >                <xs:complexType>
>  >                    <xs:sequence>
>  >                        <xs:element minOccurs="0" maxOccurs="unbounded"
>  >  name="return" nillable="true" type="ns0:Person"/>
>  >                    </xs:sequence>
>  >                </xs:complexType>
>  >  </xs:element>
>  >
>  >  Anne
>  >
>  >  On Mon, Mar 24, 2008 at 6:04 PM, Nate Roe <[EMAIL PROTECTED]> wrote:
>  >  >
>  >  >  I wonder if this is related to the Java packages created for my data 
> beans, or some kind of mistake during stub generation.  I don't understand 
> from looking at my WSDL and my SOAP messages how they mis-match.
>  >  >
>  >  >  I have managed to create a test case that I believe exemplifies this 
> problem.  For this I modified the calculator example.  I instead of 
> performing a calculation, my service now requires an integer.  In response to 
> this integer the service creates the specified number of Person instances, 
> each of which have one Address.
>  >  >
>  >  >  The WSDL:
>  >  >
>  >  >  <?xml version="1.0" encoding="UTF-8"?>
>  >  >  <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; 
> xmlns:axis2="http://quickstart.samples/"; 
> xmlns:ns1="http://calculate.vegas.com"; 
> xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"; 
> xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"; 
> xmlns:ns0="http://data.test.vegas.com/xsd"; 
> xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
> xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"; 
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; 
> xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"; 
> targetNamespace="http://quickstart.samples/";>
>  >  >     <wsdl:documentation>doCalculate</wsdl:documentation>
>  >  >     <wsdl:types>
>  >  >         <xs:schema xmlns:ax21="http://data.test.vegas.com/xsd"; 
> attributeFormDefault="qualified" elementFormDefault="qualified" 
> targetNamespace="http://data.test.vegas.com/xsd";>
>  >  >             <xs:complexType name="Person">
>  >  >                 <xs:sequence>
>  >  >                     <xs:element minOccurs="0" name="address" 
> nillable="true" type="ax21:Address"/>
>  >  >                     <xs:element minOccurs="0" name="name" 
> nillable="true" type="xs:string"/>
>  >  >                 </xs:sequence>
>  >  >             </xs:complexType>
>  >  >             <xs:complexType name="Address">
>  >  >                 <xs:sequence>
>  >  >                     <xs:element minOccurs="0" name="city" 
> nillable="true" type="xs:string"/>
>  >  >                     <xs:element minOccurs="0" name="street" 
> nillable="true" type="xs:string"/>
>  >  >                 </xs:sequence>
>  >  >             </xs:complexType>
>  >  >         </xs:schema>
>  >  >         <xs:schema xmlns:ns="http://calculate.vegas.com"; 
> attributeFormDefault="qualified" elementFormDefault="qualified" 
> targetNamespace="http://calculate.vegas.com";>
>  >  >             <xs:element name="getPersonResponse">
>  >  >                 <xs:complexType>
>  >  >                     <xs:sequence>
>  >  >                         <xs:element minOccurs="0" name="return" 
> nillable="true" type="ns0:Person"/>
>  >  >                     </xs:sequence>
>  >  >                 </xs:complexType>
>  >  >             </xs:element>
>  >  >             <xs:element name="getPeople">
>  >  >                 <xs:complexType>
>  >  >                     <xs:sequence>
>  >  >                         <xs:element minOccurs="0" name="numPeople" 
> type="xs:int"/>
>  >  >                     </xs:sequence>
>  >  >                 </xs:complexType>
>  >  >             </xs:element>
>  >  >             <xs:element name="getPeopleResponse">
>  >  >                 <xs:complexType>
>  >  >                     <xs:sequence>
>  >  >                         <xs:element minOccurs="0" name="return" 
> nillable="true" type="xs:anyType"/>
>  >  >                     </xs:sequence>
>  >  >                 </xs:complexType>
>  >  >             </xs:element>
>  >  >         </xs:schema>
>  >  >     </wsdl:types>
>  >  >     <wsdl:message name="getPeopleRequest">
>  >  >         <wsdl:part name="parameters" element="ns1:getPeople"/>
>  >  >     </wsdl:message>
>  >  >     <wsdl:message name="getPeopleResponse">
>  >  >         <wsdl:part name="parameters" element="ns1:getPeopleResponse"/>
>  >  >     </wsdl:message>
>  >  >     <wsdl:message name="getPersonRequest"/>
>  >  >     <wsdl:message name="getPersonResponse">
>  >  >         <wsdl:part name="parameters" element="ns1:getPersonResponse"/>
>  >  >     </wsdl:message>
>  >  >     <wsdl:portType name="doCalculatePortType">
>  >  >         <wsdl:operation name="getPeople">
>  >  >             <wsdl:input message="axis2:getPeopleRequest" 
> wsaw:Action="urn:getPeople"/>
>  >  >             <wsdl:output message="axis2:getPeopleResponse" 
> wsaw:Action="urn:getPeopleResponse"/>
>  >  >         </wsdl:operation>
>  >  >         <wsdl:operation name="getPerson">
>  >  >             <wsdl:input message="axis2:getPersonRequest" 
> wsaw:Action="urn:getPerson"/>
>  >  >             <wsdl:output message="axis2:getPersonResponse" 
> wsaw:Action="urn:getPersonResponse"/>
>  >  >         </wsdl:operation>
>  >  >     </wsdl:portType>
>  >  >     <wsdl:binding name="doCalculateSOAP11Binding" 
> type="axis2:doCalculatePortType">
>  >  >         <soap:binding transport="http://schemas.xmlsoap.org/soap/http"; 
> style="document"/>
>  >  >         <wsdl:operation name="getPeople">
>  >  >             <soap:operation soapAction="urn:getPeople" 
> style="document"/>
>  >  >             <wsdl:input>
>  >  >                 <soap:body use="literal"/>
>  >  >             </wsdl:input>
>  >  >             <wsdl:output>
>  >  >                 <soap:body use="literal"/>
>  >  >             </wsdl:output>
>  >  >         </wsdl:operation>
>  >  >         <wsdl:operation name="getPerson">
>  >  >             <soap:operation soapAction="urn:getPerson" 
> style="document"/>
>  >  >             <wsdl:input>
>  >  >                 <soap:body use="literal"/>
>  >  >             </wsdl:input>
>  >  >             <wsdl:output>
>  >  >                 <soap:body use="literal"/>
>  >  >             </wsdl:output>
>  >  >         </wsdl:operation>
>  >  >     </wsdl:binding>
>  >  >     <wsdl:binding name="doCalculateSOAP12Binding" 
> type="axis2:doCalculatePortType">
>  >  >         <soap12:binding 
> transport="http://schemas.xmlsoap.org/soap/http"; style="document"/>
>  >  >         <wsdl:operation name="getPeople">
>  >  >             <soap12:operation soapAction="urn:getPeople" 
> style="document"/>
>  >  >             <wsdl:input>
>  >  >                 <soap12:body use="literal"/>
>  >  >             </wsdl:input>
>  >  >             <wsdl:output>
>  >  >                 <soap12:body use="literal"/>
>  >  >             </wsdl:output>
>  >  >         </wsdl:operation>
>  >  >         <wsdl:operation name="getPerson">
>  >  >             <soap12:operation soapAction="urn:getPerson" 
> style="document"/>
>  >  >             <wsdl:input>
>  >  >                 <soap12:body use="literal"/>
>  >  >             </wsdl:input>
>  >  >             <wsdl:output>
>  >  >                 <soap12:body use="literal"/>
>  >  >             </wsdl:output>
>  >  >         </wsdl:operation>
>  >  >     </wsdl:binding>
>  >  >     <wsdl:binding name="doCalculateHttpBinding" 
> type="axis2:doCalculatePortType">
>  >  >         <http:binding verb="POST"/>
>  >  >         <wsdl:operation name="getPeople">
>  >  >             <http:operation location="doCalculate/getPeople"/>
>  >  >             <wsdl:input>
>  >  >                 <mime:content type="text/xml" part="getPeople"/>
>  >  >             </wsdl:input>
>  >  >             <wsdl:output>
>  >  >                 <mime:content type="text/xml" part="getPeople"/>
>  >  >             </wsdl:output>
>  >  >         </wsdl:operation>
>  >  >         <wsdl:operation name="getPerson">
>  >  >             <http:operation location="doCalculate/getPerson"/>
>  >  >             <wsdl:input>
>  >  >                 <mime:content type="text/xml" part="getPerson"/>
>  >  >             </wsdl:input>
>  >  >             <wsdl:output>
>  >  >                 <mime:content type="text/xml" part="getPerson"/>
>  >  >             </wsdl:output>
>  >  >         </wsdl:operation>
>  >  >     </wsdl:binding>
>  >  >     <wsdl:service name="doCalculate">
>  >  >         <wsdl:port name="doCalculateSOAP11port_http" 
> binding="axis2:doCalculateSOAP11Binding">
>  >  >             <soap:address 
> location="http://localhost:8080/axis2/services/doCalculate"/>
>  >  >         </wsdl:port>
>  >  >         <wsdl:port name="doCalculateSOAP12port_http" 
> binding="axis2:doCalculateSOAP12Binding">
>  >  >             <soap12:address 
> location="http://localhost:8080/axis2/services/doCalculate"/>
>  >  >         </wsdl:port>
>  >  >         <wsdl:port name="doCalculateHttpport" 
> binding="axis2:doCalculateHttpBinding">
>  >  >             <http:address 
> location="http://localhost:8080/axis2/services/doCalculate"/>
>  >  >         </wsdl:port>
>  >  >     </wsdl:service>
>  >  >  </wsdl:definitions>
>  >  >
>  >  >
>  >  >  The Request:
>  >  >
>  >  >  <?xml version='1.0' encoding='UTF-8'?>
>  >  >  <soapenv:Envelope 
> xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope";>
>  >  >   <soapenv:Body>
>  >  >     <ns2:getPeople xmlns:ns2="http://calculate.vegas.com";>
>  >  >       <ns2:numPeople>5</ns2:numPeople>
>  >  >     </ns2:getPeople>
>  >  >   </soapenv:Body>
>  >  >  </soapenv:Envelope>
>  >  >
>  >  >
>  >  >  The Response:
>  >  >
>  >  >  <?xml version='1.0' encoding='UTF-8'?>
>  >  >  <soapenv:Envelope 
> xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope";>
>  >  >  <soapenv:Body>
>  >  >   <ns:getPeopleResponse xmlns:ns="http://calculate.vegas.com"; 
> xmlns:ax21="http://data.test.vegas.com/xsd";>
>  >  >   <ns:return type="com.vegas.test.data.Person">
>  >  >     <ax21:address type="com.vegas.test.data.Address">
>  >  >       <ax21:city>Las Vegas</ax21:city>
>  >  >       <ax21:street>12345 Pecos Road</ax21:street>
>  >  >     </ax21:address>
>  >  >     <ax21:name>Jeff Doe 0</ax21:name>
>  >  >   </ns:return>
>  >  >   <ns:return type="com.vegas.test.data.Person">
>  >  >     <ax21:address type="com.vegas.test.data.Address">
>  >  >       <ax21:city>Las Vegas</ax21:city>
>  >  >       <ax21:street>12345 Pecos Road</ax21:street>
>  >  >     </ax21:address>
>  >  >     <ax21:name>Jeff Doe 1</ax21:name>
>  >  >   </ns:return>
>  >  >   <ns:return type="com.vegas.test.data.Person">
>  >  >     <ax21:address type="com.vegas.test.data.Address">
>  >  >       <ax21:city>Las Vegas</ax21:city>
>  >  >       <ax21:street>12345 Pecos Road</ax21:street>
>  >  >     </ax21:address>
>  >  >     <ax21:name>Jeff Doe 2</ax21:name>
>  >  >   </ns:return>
>  >  >   <ns:return type="com.vegas.test.data.Person">
>  >  >     <ax21:address type="com.vegas.test.data.Address">
>  >  >       <ax21:city>Las Vegas</ax21:city>
>  >  >       <ax21:street>12345 Pecos Road</ax21:street>
>  >  >     </ax21:address>
>  >  >     <ax21:name>Jeff Doe 3</ax21:name>
>  >  >   </ns:return>
>  >  >   <ns:return type="com.vegas.test.data.Person">
>  >  >     <ax21:address type="com.vegas.test.data.Address">
>  >  >       <ax21:city>Las Vegas</ax21:city>
>  >  >       <ax21:street>12345 Pecos Road</ax21:street>
>  >  >     </ax21:address>
>  >  >     <ax21:name>Jeff Doe 4</ax21:name>
>  >  >   </ns:return>
>  >  >   </ns:getPeopleResponse>
>  >  >  </soapenv:Body>
>  >  >  </soapenv:Envelope>
>  >  >
>  >  >
>  >  >  I generated the stubs using the following command:
>  >  >
>  >  >  wsdl2java -uri http://localhost:8080/axis2/services/doCalculate?wsdl 
> -p com.vegas.test -u
>  >  >
>  >  >
>  >  >  Is there some obvious cause that I've overlooked?
>  >  >
>  >  >  Thank you,
>  >  >  Nate Roe
>  >  >
>  >  >
>  >  >  -----Original Message-----
>  >  >  From: Anne Thomas Manes [mailto:[EMAIL PROTECTED]
>  >  >  Sent: Saturday, March 22, 2008 5:45 AM
>  >  >  To: axis-user@ws.apache.org
>  >  >
>  >  >
>  >  > Subject: Re: What might cause "Unexpected subelement return"?
>  >  >
>  >  >  Nate,
>  >  >
>  >  >  The message indicates that the unexpected subelement is called 
> "return".
>  >  >  Look at your WSDL to determine what the expected message structure
>  >  >  should be, and compare it to the actual message returned.
>  >  >
>  >  >  Anne
>  >  >
>  >  >  On Fri, Mar 21, 2008 at 5:04 PM, Nate Roe <[EMAIL PROTECTED]> wrote:
>  >  >  >
>  >  >  >  I have tested a few theories about the cause of this exception, but 
> so far they've come up negative.
>  >  >  >
>  >  >  >  Is there a way to get Axis2 to tell me which specific subelement 
> was unexpected?
>  >  >  >
>  >  >  >  Thanks,
>  >  >  >  Nate Roe
>  >  >  >
>  >  >  >
>  >  >  >
>  >  >  >  -----Original Message-----
>  >  >  >  From: Nate Roe [mailto:[EMAIL PROTECTED]
>  >  >  >  Sent: Thursday, March 20, 2008 5:59 PM
>  >  >  >  To: 'axis-user@ws.apache.org'
>  >  >  >  Subject: What might cause "Unexpected subelement return"?
>  >  >  >
>  >  >  >  I am using Axis2 v1.3 and Rampart v1.3 on JBossAS v4.0.5 running on 
> Java 1.6.0_03.
>  >  >  >
>  >  >  >  I'm deploying a POJO service.  Responses from this service cause an 
> ADBExceptoion: "Unexpected subelement return".
>  >  >  >
>  >  >  >  The subelements in this case are child objects, collections, etc.
>  >  >  >
>  >  >  >  What are some causes of this exception?  Unfortunately I cannot 
> share SOAP/WSDL corresponding to this specific problem.  I hope that this 
> problem has some known causes that I can look into.  If I cannot identify the 
> cause in this way then I will try to write some smaller, sharable 
> demonstration.
>  >  >  >
>  >  >  >  I found JIRA #1746, but it was closed more than a year ago: 
> http://issues.apache.org/jira/browse/AXIS2-1746
>  >  >  >
>  >  >  >  Thanks,
>  >  >  >  Nate Roe
>  >  >  >
>  >  >  >  
> ---------------------------------------------------------------------
>  >  >  >  To unsubscribe, e-mail: [EMAIL PROTECTED]
>  >  >  >  For additional commands, e-mail: [EMAIL PROTECTED]
>  >  >  >
>  >  >  >
>  >  >  >  
> ---------------------------------------------------------------------
>  >  >  >  To unsubscribe, e-mail: [EMAIL PROTECTED]
>  >  >  >  For additional commands, e-mail: [EMAIL PROTECTED]
>  >  >  >
>  >  >  >
>  >  >
>  >  >  ---------------------------------------------------------------------
>  >  >  To unsubscribe, e-mail: [EMAIL PROTECTED]
>  >  >  For additional commands, e-mail: [EMAIL PROTECTED]
>  >  >
>  >  >
>  >  >  ---------------------------------------------------------------------
>  >  >  To unsubscribe, e-mail: [EMAIL PROTECTED]
>  >  >  For additional commands, e-mail: [EMAIL PROTECTED]
>  >  >
>  >  >
>  >
>  >  ---------------------------------------------------------------------
>  >  To unsubscribe, e-mail: [EMAIL PROTECTED]
>  >  For additional commands, e-mail: [EMAIL PROTECTED]
>  >
>  >
>  >  ---------------------------------------------------------------------
>  >  To unsubscribe, e-mail: [EMAIL PROTECTED]
>  >  For additional commands, e-mail: [EMAIL PROTECTED]
>  >
>  >
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: [EMAIL PROTECTED]
>  For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: [EMAIL PROTECTED]
>  For additional commands, e-mail: [EMAIL PROTECTED]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to