I've written a web service with Axis2 1.6.2 with a request that extends another type, with a request element that looks like this in its .xsd:
<xsd:element name="requestName"> <xsd:complexType> <xsd:complexContent> <xsd:extension base="requestBaseType"> <xsd:sequence> <xsd:element name="param1" type="xsd:int" minOccurs="1" maxOccurs="1" /> <xsd:element name="param2" type="xsd:string" minOccurs="1" maxOccurs="1" /> <xsd:element name="param3" type="xsd:int" minOccurs="0" maxOccurs="1" /> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:complexType name="requestBaseType"> <xsd:sequence> <xsd:element name="baseTypeParam1" type="xsd:string" minOccurs="0" maxOccurs="1" /> </xsd:sequence> </xsd:complexType> Sending requests to this web service works just fine if I send the requests from SoapUI or similar, but if I send the same request via GET from a browser I get this error: <faultstring>org.apache.axis2.databinding.ADBException: Unexpected subelement {http://campusm.gw.com/campusm}requestName</faultstring> It's saying there's an unexpected element of a type that is the correct request type, even though in a GET request that request object is implicit. If I stop it extending requestBaseType, it works fine in both the browser and SoapUI. Here's the xsd definition that fixes the problem: <xsd:element name="requestName"> <xsd:complexType> <xsd:sequence> <xsd:element name="baseTypeParam1" type="xsd:string" minOccurs="0" maxOccurs="1" /> <xsd:element name="param1" type="xsd:int" minOccurs="1" maxOccurs="1" /> <xsd:element name="param2" type="xsd:string" minOccurs="1" maxOccurs="1" /> <xsd:element name="param3" type="xsd:int" minOccurs="0" maxOccurs="1" /> </xsd:sequence> </xsd:complexType> </xsd:element> Here's an example of the GET request I send in the browser that gets this error: http://localhost:8080/path/to/webservice?baseTypeParam1=stuff¶m1=12¶m2=thing¶m3=13 Here's an example of the request I send from SoapUI that works: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cam="http://campusm.gw.com/campusm"> <soapenv:Header/> <soapenv:Body> <cam:requestName> <cam:baseTypeParam1>stuff</cam:baseTypeParam1> <cam:param1>12</cam:param1> <cam:param2>thing</cam:param2> <cam:param3>13</cam:param3> </cam:requestName> </soapenv:Body> </soapenv:Envelope> I need the request to extend a type so that I can have multiple web services sending a large common subset of their request parameters to the same function in my Java code. This would allow the function to take a parameter of the base request type, and have each web service just pass its request into that function without any conversion or worring about the individual parameters at that point. I also need to be able to call the web services with CURL, which is not possible if the web services won't work with a GET request. This seems to be a bug with Axis2. Is this a known issue and will it be fixed? Best regards, Mike -- campusM: http://www.campusM.com Email: mike.ha...@ombiel.com Tel: 01902 837451