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.Read5_Address(Boolean
> > isNullable, Boolean checkType)
> > at
> >
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read6_Person(Boolean
> > isNullable, Boolean checkType)
> > at
> >
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read7_GetAdmin()
> > at
> >
Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer.Deserialize(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()</faultstring>
> > <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]

Reply via email to