Martin, The WSDL was generated automatically by Axis2 through a POJO deployment. Therefore, mistakes in the WSDL must originate from Axis2, yes? I did not, myself, choose any particular namespace. This is why I filed the JIRA after Anne clarified the source of my problem (https://issues.apache.org/jira/browse/AXIS2-3655.)
I did manually modify the generated WSDL to correct the maximum occurrences of the returned collection. (I did not change the namespace of the port type, though.) This modification, and specifying the appropriate type instead of "xs:anyType" turns out to be a suitable temporary resolution to my "Unxepected subelement return" problem. Thank you, Nate Roe -----Original Message----- From: Martin Gainty [mailto:[EMAIL PROTECTED] Sent: Tuesday, March 25, 2008 7:56 PM To: Nate Roe Subject: Re: What might cause "Unexpected subelement return"? I dont see xsi:type in the wsdl besides which there is no declaration of xmlns:xsi in your declarations and yet Im still seeing aberrant code in the generated HttpBinding specifically - <xs:schema xmlns:ax23="http://quickstart.samples/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://quickstart.samples/xsd"> - <xs:complexType name="DoCalculateStub$GetPeople"> - <xs:sequence> <xs:element minOccurs="0" name="MY_QNAME" nillable="true" type="xs:anyType" /> </xs:sequence> </xs:complexType> I did notice a hardcoded assignment of 'axis2' instead of 'ns0' <wsdl:binding name="doCalculateHttpBinding" type="axis2:doCalculatePortType"> could I ask why your defaulting the namespace to axis2 is used instead of ns0 ? I implemented ComplexTypes with namespace ns0 instead of axis2 and I has no aberrant generated WSDL I can attach this working WSDL Martin ----- Original Message ----- From: "Nate Roe" <[EMAIL PROTECTED]> To: <[email protected]> Sent: Tuesday, March 25, 2008 5:46 PM Subject: RE: What might cause "Unexpected subelement return"? 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: [email protected] 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: [email protected] > 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: [email protected] > > > > > > 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: [email protected] > > > > > > > > > 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: '[email protected]' > > > > 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] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
