RE: Wsdl2Java

2007-05-09 Thread David Elliott
Here is the target namespace

wsdl:definitions name=PersonService 
targetNamespace=http://tempuri.org/; 
xmlns:wsdl=http://schemas.xmlsoap.org/wsdl/; 
xmlns:soap=http://schemas.xmlsoap.org/wsdl/soap/; 
xmlns:wsu=http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd;
 xmlns:soapenc=http://schemas.xmlsoap.org/soap/encoding/; 
xmlns:tns=http://tempuri.org/; 
xmlns:wsa=http://schemas.xmlsoap.org/ws/2004/08/addressing; 
xmlns:wsp=http://schemas.xmlsoap.org/ws/2004/09/policy; 
xmlns:i0=urn:emp:service 
xmlns:wsap=http://schemas.xmlsoap.org/ws/2004/08/addressing/policy; 
xmlns:xsd=http://www.w3.org/2001/XMLSchema; 
xmlns:msc=http://schemas.microsoft.com/ws/2005/12/wsdl/contract; 
xmlns:wsaw=http://www.w3.org/2006/05/addressing/wsdl; 
xmlns:soap12=http://schemas.xmlsoap.org/wsdl/soap12/; 
xmlns:wsa10=http://www.w3.org/2005/08/addressing; 
xmlns:wsx=http://schemas.xmlsoap.org/ws/2004/09/mex;
Cheers,
Dave


From: [EMAIL PROTECTED]: [EMAIL PROTECTED]: Re: Wsdl2JavaDate: Mon, 7 May 2007 
17:36:58 -0400



what is the target namespace declaration for your wsdl
e.g. here is what I have for StockQuoteService.wsdl
 
definitions 
targetNamespace=http://w3.ibm.com/schemas/services/2002/11/15/stockquote/wsdl; 
xmlns=http://schemas.xmlsoap.org/wsdl/;  
xmlns:tns=http://w3.ibm.com/schemas/services/2002/11/15/stockquote/wsdl; 
 
creates 
/src/com/ibm/w3/schemas/services/_2002/_11/_15/stockquote/wsdl/StockQuoteServiceCallbackHandler.java
creates 
/src/com/ibm/w3/schemas/services/_2002/_11/_15/stockquote/wsdl/StockQuoteServiceStub.java???
Martin--
This email message and any files transmitted with it contain 
confidentialinformation intended only for the person(s) to whom this email 
message isaddressed.  If you have received this email message in error, please 
notifythe sender immediately by telephone or email and destroy the 
originalmessage without making a copy.  Thank you.

- Original Message - 
From: David Elliott 
To: axis 
Sent: Monday, May 07, 2007 9:19 AM
Subject: Wsdl2Java 
I am trying to have all the namespaces in the Webservice to get its own package 
name. Namespace  Package===urn:emp:data   
emp.dataurn:emp:serviceemp.service When I run Wsdl2Java everything gets put 
in org.tempuri In looking at the documentation at: 
http://ws.apache.org/axis/java/reference.html I notice that the parameters are 
not the same as in the binary distribution.  I am on a Windows XP machine. 
Included below is 

a line from the WSDL 
the output from Wsdl2Java 
the bat file running and its parameters used 
the resulting directory structure and filesAny help is appreciated.Dave 
=== Here is a line from the WSDL that 
has the namespace I want to have as a seperate packagewsdl:import 
namespace=urn:emp:service 
location=http://localhost:9000/PersonService/Service?wsdl=wsdl0; /  
===  D) %AXIS2_HOME%/bin/WSDL2JavaUsing 
AXIS2_HOME:   C:\Apps\java\Libraries\Axis2\axis2-1.2Using JAVA_HOME:
C:\Program Files\Java\jre1.5.0_11Usage: WSDL2Java -uri url or path : A url or 
path to a WSDL  -o pathSpecify a directory path for 
the generated code.  -a   Generate async style code 
only (Default: off).  -s   Generate sync style code 
only (Default: off). Takes precedence over -a.  -p pkg1   
 Specify a custom package name for the generated code.  -l language   
 Valid languages are java and csharp (Default: java).  -t   
Generate a test case for the generated code.  -ss   
   Generate server side code (i.e. skeletons) (Default: off).   
   -sd  Generate service descriptor (i.e. services.xml). 
(Default: off). Valid with -ss.  -d databinding Valid 
databinding(s) are adb, xmlbeans, jibx, jaxme and jaxbri (Default: adb).
  -g   Generates all the classes. Valid only with -ss.  
-pn port_name  Choose a specific port when there are multiple 
ports in the wsdl.  -sn service_name   Choose a specific service 
when there are multiple services in the wsdl.  -u   
Unpacks the databinding classes  -r pathSpecify a 
repository against which code is generated.  -ns2p ns1=pkg1,ns2=pkg2  
Specify a custom package name for each namespace specified in the wsdls schema. 
 -ssi Generate an interface for the service 
implementation (Default: off).  -wv  WSDL Version. 
Valid Options : 2, 2.0, 1.1  -S  Specify a 
directory path for generated source  -R  Specify a 
directory path for generated resources  -em

Wsdl2Java

2007-05-07 Thread David Elliott
I am trying to have all the namespaces in the Webservice to get its own package 
name.
 
Namespace  Package
===
urn:emp:data   emp.data
urn:emp:serviceemp.service
 
When I run Wsdl2Java everything gets put in org.tempuri
 
In looking at the documentation at: 
http://ws.apache.org/axis/java/reference.html I notice that 
the parameters are not the same as in the binary distribution.  I am on a 
Windows XP machine.
 
Included below is 

a line from the WSDL
the output from Wsdl2Java
the bat file running and its parameters used
the resulting directory structure and files
Any help is appreciated.
Dave
 
===
 
Here is a line from the WSDL that has the namespace I want to have as a 
seperate package
wsdl:import namespace=urn:emp:service 
location=http://localhost:9000/PersonService/Service?wsdl=wsdl0; / 
 
===
 
 
D) %AXIS2_HOME%/bin/WSDL2JavaUsing AXIS2_HOME:   
C:\Apps\java\Libraries\Axis2\axis2-1.2Using JAVA_HOME:C:\Program 
Files\Java\jre1.5.0_11Usage: WSDL2Java -uri url or path : A url or path to a 
WSDL  -o pathSpecify a directory path for the 
generated code.  -a   Generate async style code 
only (Default: off).  -s   Generate sync style code 
only (Default: off). Takes precedence over -a.  -p pkg1   
 Specify a custom package name for the generated code.  -l language   
 Valid languages are java and csharp (Default: java).  -t   
Generate a test case for the generated code.  -ss   
   Generate server side code (i.e. skeletons) (Default: off).   
   -sd  Generate service descriptor (i.e. services.xml). 
(Default: off). Valid with -ss.  -d databinding Valid 
databinding(s) are adb, xmlbeans, jibx, jaxme and jaxbri (Default: adb).
  -g   Generates all the classes. Valid only with -ss.  
-pn port_name  Choose a specific port when there are multiple 
ports in the wsdl.  -sn service_name   Choose a specific service 
when there are multiple services in the wsdl.  -u   
Unpacks the databinding classes  -r pathSpecify a 
repository against which code is generated.  -ns2p ns1=pkg1,ns2=pkg2  
Specify a custom package name for each namespace specified in the wsdls schema. 
 -ssi Generate an interface for the service 
implementation (Default: off).  -wv  WSDL Version. 
Valid Options : 2, 2.0, 1.1  -S  Specify a 
directory path for generated source  -R  Specify a 
directory path for generated resources  -em  
Specify an external mapping file  -f  Flattens the 
generated files  -uw  Switch on un-wrapping.
  -xsdconfig path to file Use XMLBeans .xsdconfig file. Valid only with -d 
xmlbeans.
 
===
 
D) go.bat
D) rd build /q/sD) set outdir=buildD) set src=srcD) set language=javaD) set 
databinding=adbD) set uri=http://localhost:9000/PersonService/Service?wsdl
D) C:\Apps\java\Libraries\Axis2\axis2-1.2/bin/WSDL2Java -uri 
http://localhost:9000/PersonService/Service?wsdl; -o build -l java -d 
adb -S src -ns2p urn:emp:service=emp.service,urn:emp:data=emp.dataUsing 
AXIS2_HOME:   C:\Apps\java\Libraries\Axis2\axis2-1.2Using JAVA_HOME:
C:\Program Files\Java\jre1.5.0_11Retrieving document at 
'http://localhost:9000/PersonService/Service?wsdl=wsdl0', relative to 
'http://localhost:9000/PersonService/Service?wsdl'.Retrieving schema at 
'http://localhost:9000/PersonService/Service?xsd=xsd1', relative to 
'http://localhost:9000/PersonService/Service?wsdl=wsdl0'.Retrieving schema at 
'http://localhost:9000/PersonService/Service?xsd=xsd2', relative to 
'http://localhost:9000/PersonService/Service?wsdl=wsdl0'.Retrieving schema at 
'http://localhost:9000/PersonService/Service?xsd=xsd0', relative to 
'http://localhost:9000/PersonService/Service?wsdl=wsdl0'.Retrieving schema at 
'http://localhost:9000/PersonService/Service?xsd=xsd2', relative to 
'http://localhost:9000/PersonService/Service?xsd=xsd0'.Retrieving document at 
'http://localhost:9000/PersonService/Service?wsdl=wsdl0', relative to 
'http://localhost:9000/PersonService/Service?wsdl'.Retrieving schema at 
'http://localhost:9000/PersonService/Service?xsd=xsd1', relative to 
'http://localhost:9000/PersonService/Service?wsdl=wsdl0'.Retrieving schema at 
'http://localhost:9000/PersonService/Service?xsd=xsd2', relative to 
'http://localhost:9000/PersonService/Service?wsdl=wsdl0'.Retrieving schema at 
'http://localhost:9000/PersonService/Service?xsd=xsd0', relative to 

Sending Derived types to Webservice doesn't work

2007-03-06 Thread David Elliott
This note is a continuation of Issue with Axis when sending abstract class to 
.NET webservice
I have change my .NET Web Service and no longer has any abstracts.  It looks 
like

public class Person{   public string name;   public Address address;}
 
public class Address{
}
 
public class HomeAddress : Address{   public string houseNumber;}
I let Axis generate the Java proxy class and I call the .NET service in the 
Java client as such:

IEmployeeServiceProxy service = new IEmployeeServiceProxy();
HomeAddress homeAddress = new HomeAddress();homeAddress.setHouseNumber(456 
Long and Winding Road);
 
person = new Person();person.setName( Bob the Builder 
);person.setAddress(homeAddress);
 
newPerson = service.getPerson( person );
For all 3 tests below, NO CHANGES were made to the .NET Webservice.
Test 1: Run as isIf I examine the SOAP Request Message I see ns1:Address / 
with no data.
 
- SoapRequest at 3/6/2007 2:35: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
GetPerson xmlns=urn:emp:service  ns1:person xmlns:ns1=urn:emp:data  
  ns1:NameBob the Builder/ns1:Namens1:Address /  
/ns1:person/GetPerson  /soapenv:Body/soapenv:Envelope
 
Test 2: If I open the Java Proxy Class Person.java and changepublic 
data.emp.Address getAddress() {return address;}topublic 
data.emp.HomeAddress getAddress() {return (HomeAddress)address;}
then this goes into the servicens1:Address xsi:type=ns1:HomeAddress 
 ns1:HouseNumber456 Long and Winding Road/ns1:HouseNumber
/ns1:Addressand this comes out
Address xsi:type=HomeAddress  HouseNumber456 Long and 
Winding Road/HouseNumber/Addresshowever the getAddress() method now 
returns null when trying to print in the Java client
Test 3:Put getAddress() back to original code and 

Change all instances fromdata.emp.Addresstodata.emp.HomeAddress
The correct data structure is passed in
ns1:Address xsi:type=ns1:HomeAddress  ns1:HouseNumber456 
Long and Winding Road/ns1:HouseNumber/ns1:Address
recieved 
Address xsi:type=HomeAddress  HouseNumber456 Long and 
Winding Road/HouseNumber/Address
and printed out successfully.
Printing Returned Data...

Name: Bob the Builder
Addr: 456 Long and Winding Road
 
Any thoughts are welcomed.
Dave
 
 
_
Invite your mail contacts to join your friends list with Windows Live Spaces. 
It's easy! 
http://spaces.live.com/spacesapi.aspx?wx_action=createwx_url=/friends.aspxmkt=en-us

RE: Issue with Axis when sending abstract class to .NET webservice

2007-03-02 Thread David Elliott
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:NameHello World/ns1:Name ns1:Age12/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  topass a   
  derived class type into the webservice, an XML error is generated. If I  
   receive thesame exact structure from the webservice all works as 
 expected.   I have a full .NET webservice and java client that 
 will demonstrate theissue ifanyone 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:servicens1:person 
 xmlns:ns1=urn:emp:datans1:NameHello World/ns1:Name
 ns1:Age12/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:serviceGetAdminResult 
 xsi:type=Admin xmlns=urn:emp:dataNameHello World/Name
 Age12/AgeAddress xsi:type=HomeAddressHouseNumber234 
 State Street/HouseNumber/Address
 HasPasswordtrue/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:servicens1:person 
 xmlns:ns1=urn:emp:datans1:NameHello World/ns1:Name
 ns1:Age12/ns1:Agens1: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:Faultfaultcodesoap:Client/faultcode
 faultstringSystem.Web.Services.Protocols.SoapException:Server was 
 unable to read request. ---System.InvalidOperationException: There 
 is an error in  XMLdocument (1, 353

RE: Issue with Axis when sending abstract class to .NET webservice

2007-03-02 Thread David Elliott
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]comGood 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:NameHello World/ns1:Name  ns1:Age12/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  NameHello World/Name  
 Age12/Age  Address xsi:type=HomeAddress  HouseNumber234 State 
 Street/HouseNumber  /Address  HasPasswordtrue/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:NameHello World/ns1:Name  ns1:Age12/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 
  faultcodesoap:Client/faultcode   
 faultstringSystem.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

Issue with Axis when sending abstract class to .NET webservice

2007-03-01 Thread David Elliott
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:NameHello World/ns1:Namens1:Age12/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:BodyGetAdminResponse 
xmlns=urn:emp:service  GetAdminResult xsi:type=Admin 
xmlns=urn:emp:dataNameHello World/NameAge12/Age  
  Address xsi:type=HomeAddress  HouseNumber234 State 
Street/HouseNumber/AddressHasPasswordtrue/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:NameHello World/ns1:Namens1:Age12/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:Bodysoap:Fault  
faultcodesoap:Client/faultcode  
faultstringSystem.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; }}}