I am not sending an empty <Address/> element.  I am sending a HomeAddress as in 
my example and the Axis framework doesn't seem to want to serialize it into the 
soap message.  This is why the received soap message is empty and this is 
ultimately my problem.Dave

> Date: Fri, 2 Mar 2007 16:04:11 -0500> From: [EMAIL PROTECTED]> 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.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]> 
_________________________________________________________________
Invite your mail contacts to join your friends list with Windows Live Spaces. 
It's easy! 
http://spaces.live.com/spacesapi.aspx?wx_action=create&wx_url=/friends.aspx&mkt=en-us

Reply via email to