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: 
> [email protected]> 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
http://search.msn.com/results.aspx?q=windows+vista&mkt=en-US&form=QBRE

Reply via email to