If he uses nillable="true" in the Schema, it might work?
-jeff

-----Original Message-----
From: Anne Thomas Manes [mailto:[EMAIL PROTECTED] 
Sent: Friday, March 02, 2007 4:04 PM
To: axis-user@ws.apache.org
Subject: Re: Issue with Axis when sending abstract class to .NET
webservice

In the message that generates the fault, you send an empty <Address/>
element.
That's not allowed:

----- SoapRequest at 2/27/2007 2:01:13 PM -----
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
  <soapenv:Body>
    <GetAdmin xmlns="urn:emp:service">
      <ns1:person xmlns:ns1="urn:emp:data">
        <ns1:Name>Hello World</ns1:Name>
        <ns1:Age>12</ns1:Age>
        <ns1:Address />
      </ns1:person>
    </GetAdmin>
  </soapenv:Body>
</soapenv:Envelope>

On 3/2/07, David Elliott <[EMAIL PROTECTED]> wrote:
>
> I am sending a concrete type: HomeAddress that is derived from
Address.
>  The place holder in the class is the abstract type.
>
>  This is the Java Client code being performed.
>
>  HomeAddress homeAddress = new HomeAddress();
> homeAddress.setHouseNumber("123 Main Street");
>
>  Person person = new Person();
> person.setAge(12);
> person.setName("Hello World");
> person.setAddress(homeAddress);
>
>  IEmployeeServiceProxy service = new IEmployeeServiceProxy();
> admin = service.getAdmin(person);
>
>
> Dave
>
>  ________________________________
>
>  > Date: Fri, 2 Mar 2007 09:11:03 -0500
> > From: [EMAIL PROTECTED]
> > To: axis-user@ws.apache.org
> > Subject: Re: Issue with Axis when sending abstract class to .NET
> webservice
>
> >
> > David,
> >
> > You cannot send an element of an abstract type. Your choices:
> > - don't send the <Address/> element (requires minOccurs="0")
> > - define it as a concrete type
> >
> > Anne
> >
> > On 3/1/07, David Elliott <[EMAIL PROTECTED]> wrote:
> > >
> > > I am testing some interoperability between a Java Client using
Axis and
> > > a .NET ASMX Webservice and am experiencing a problem and was
wondering
> > > if anyone has an idea of what is going on.
> > >
> > > If I have a class that contains a data member that is abstract and
try
> to
> > > pass a
> > > derived class type into the webservice, an XML error is generated.
If I
> > > receive the
> > > same exact structure from the webservice all works as expected.
> > >
> > > I have a full .NET webservice and java client that will
demonstrate the
> > > issue if
> > > anyone wants the code.
> > >
> > > I am including the soap messages that are received on the service.
> > > The class definition follows the SOAP Messages.
> > >
> > > Thanks,
> > > Dave
> > >
> > > WebbertSolutions[at]hotmail[dot]com
> > >
> > >
> > > Good Message
> > > - don't send address in
> > > - receive address
> > > ==============================
> > >
> > > ----- SoapRequest at 2/27/2007 2:01:41 PM -----
> > > <soapenv:Envelope
> > >
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
> > > xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
> > > <soapenv:Body>
> > > <GetAdmin xmlns="urn:emp:service">
> > > <ns1:person xmlns:ns1="urn:emp:data">
> > > <ns1:Name>Hello World</ns1:Name>
> > > <ns1:Age>12</ns1:Age>
> > > </ns1:person>
> > > </GetAdmin>
> > > </soapenv:Body>
> > > </soapenv:Envelope>
> > >
> > > ----- SoapResponse at 2/27/2007 2:01:41 PM -----
> > > <soap:Envelope
> > > xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";
> > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> > > xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
> > > <soap:Body>
> > > <GetAdminResponse xmlns="urn:emp:service">
> > > <GetAdminResult xsi:type="Admin" xmlns="urn:emp:data">
> > > <Name>Hello World</Name>
> > > <Age>12</Age>
> > > <Address xsi:type="HomeAddress">
> > > <HouseNumber>234 State Street</HouseNumber>
> > > </Address>
> > > <HasPassword>true</HasPassword>
> > > </GetAdminResult>
> > > </GetAdminResponse>
> > > </soap:Body>
> > > </soap:Envelope>
> > >
> > >
> > >
> > >
> > > Bad Message
> > > - populate HomeAddress
> > > - send HomeAddress in
> > > ==============================
> > >
> > >
> > > ----- SoapRequest at 2/27/2007 2:01:13 PM -----
> > > <soapenv:Envelope
> > >
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
> > > xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
> > > <soapenv:Body>
> > > <GetAdmin xmlns="urn:emp:service">
> > > <ns1:person xmlns:ns1="urn:emp:data">
> > > <ns1:Name>Hello World</ns1:Name>
> > > <ns1:Age>12</ns1:Age>
> > > <ns1:Address />
> > > </ns1:person>
> > > </GetAdmin>
> > > </soapenv:Body>
> > > </soapenv:Envelope>
> > >
> > > ----- SoapResponse at 2/27/2007 2:01:13 PM -----
> > > <soap:Envelope
> > > xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";
> > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> > > xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
> > > <soap:Body>
> > > <soap:Fault>
> > > <faultcode>soap:Client</faultcode>
> > >
> > >
> <faultstring>System.Web.Services.Protocols.SoapException:
> > > Server was unable to read request. --->
> > > System.InvalidOperationException: There is an error in
> XML
> > > document (1, 353). --->
> System.InvalidOperationException:
> > > The specified type is abstract: name='Address',
> namespace='urn:emp:data', at
> > > <Address xmlns='urn:emp:data'>.
> > > at
> > >
>
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Re
ad5_Address(Boolean
> > > isNullable, Boolean checkType)
> > > at
> > >
>
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Re
ad6_Person(Boolean
> > > isNullable, Boolean checkType)
> > > at
> > >
>
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Re
ad7_GetAdmin()
> > > at
> > >
>
Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer.De
serialize(XmlSerializationReader
> > > reader)
> > > at
> > >
> System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader
> > > xmlReader, String encodingStyle, XmlDeserializationEvents events)
> > > --- End of inner exception stack trace ---
> > > at
> > >
> System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader
> > > xmlReader, String encodingStyle, XmlDeserializationEvents events)
> > > at
> > >
> System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader
> > > xmlReader, String encodingStyle)
> > > at
> > >
> System.Web.Services.Protocols.SoapServerProtocol.ReadParameters()
> > > --- End of inner exception stack trace ---
> > > at
> > >
> System.Web.Services.Protocols.SoapServerProtocol.ReadParameters()
> > > at
> > >
>
System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()</fa
ultstring>
> > > <detail />
> > > </soap:Fault>
> > > </soap:Body>
> > > </soap:Envelope>
> > >
> > >
> > >
> > >
> > >
> > > public abstract class PersonBase
> > > {
> > > protected PersonBase() { }
> > >
> > > private string _name;
> > >
> > > public string Name
> > > {
> > > get { return ( _name ); }
> > > set { _name = value; }
> > > }
> > > }
> > >
> > >
> > > public class Person : PersonBase
> > > {
> > > private int _age;
> > > private Address _address;
> > >
> > > public int Age
> > > {
> > > get { return ( _age ); }
> > > set { _age = value; }
> > > }
> > >
> > > public Address Address
> > > {
> > > get { return ( _address ); }
> > > set { _address = value; }
> > > }
> > > }
> > >
> > >
> > > public abstract class Address
> > > {
> > > protected Address() { }
> > > }
> > >
> > >
> > > public class HomeAddress : Address
> > > {
> > > public HomeAddress() { }
> > >
> > > private string _houseNumber;
> > >
> > > public string HouseNumber
> > > {
> > > get { return ( _houseNumber ); }
> > > set { _houseNumber = value; }
> > > }
> > > }
> > >
> > >
> > > ________________________________
> > > Explore the seven wonders of the world Learn more!
> >
> >
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
>
>
> ________________________________
> Discover the new Windows Vista Learn more!

---------------------------------------------------------------------
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]

Reply via email to