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]