Dear all,

I am using Axis 1.0 to build something like a Proxy for our internal web
services.
There are a few services on our network which I have generated client stubs
for using
WSDL2Java. One service I import defines the following types:

      <s:complexType name="Contact">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="ContactID"
type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string"
/>
          <s:element minOccurs="0" maxOccurs="1" name="TelephoneNumber"
type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="CompanyName"
type="s:string" />
        </s:sequence>
      </s:complexType>

and

      <s:complexType name="ContactDetail">
        <s:complexContent mixed="false">
          <s:extension base="s0:Contact">
            <s:sequence>
              <s:element minOccurs="0" maxOccurs="1" name="Address1"
type="s:string" />
              <s:element minOccurs="0" maxOccurs="1" name="Address2"
type="s:string" />
              <s:element minOccurs="0" maxOccurs="1" name="Address3"
type="s:string" />
              <s:element minOccurs="0" maxOccurs="1" name="City"
type="s:string" />
              <s:element minOccurs="0" maxOccurs="1" name="County"
type="s:string" />
              <s:element minOccurs="0" maxOccurs="1" name="PostCode"
type="s:string" />
            </s:sequence>
          </s:extension>
        </s:complexContent>

WSDL2Java imports this with no problem and creates 2 classes, Contact and
ContactDetail.

I then created my new service which re-exposes the service, using the
WSDL2Java generated
classes as return types. This works fine, but when I look at the .wsdl file
Java2WSDL generates
I see:

 <complexType name="ContactDetail">
   <complexContent>
     <extension base="tns1:Contact">
       <sequence /> 
     </extension>
   </complexContent>
</complexType>

(the definition for Contact is fine). If I remove Contact.getTypeDesc()
(note, from the base
class) then the wsdl is fine, but I have trouble deserialising
ContactDetails from the other web
service. I get the exception:

        org.xml.sax.SAXException: Invalid element in foo.ContactDetail -
ContactID

and my ContactDetail objects only contain data corresponding to Contact
instances
(i.e. name, tel, contactId and companyname).

Does anyone know why this happens and how I might get around it? I don't
want to define a
new class/type just so that it doesn't have a getTypeDesc() definition in it
for use on the
server side just to get my wsdl to include the extra type info.

Any help gratefully received,
Myles

Reply via email to