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