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]