I have built a webservice using Apache Axis 1.1 that is implemented as RPC / Encoded for no reason other than the fact that I have Custom Exceptions thrown from my Interface and Java2WSDL does not like this. I also attempted to use Axis 1.2 Beta to resolve this problem but ran into additional problems with BeanMappings that I did not understand.
I am attempting to use Dot-Net�s wsdl.exe to generate a Web Service Client in C# from a valid WSDL file generated by Apache Axis.
My application requires the ability to distinguish between an unspecified value and a specified value. For that reason, the WSDL that is generated by Apache Axis utilizes 'nillable="true"' to permit Web Services Clients to indicate a value or specify 'nil'.
Here is a portion of the WSDL presenting a problem:
<complexType abstract="true" name="Type">
<sequence>
<element name="localId" nillable="true"
type="xsd:string"/>
<element name="id" minOccurs="0" maxOccurs="1" nillable="true" type="xsd:int"/>
</sequence>
</complexType>
When wsdl.exe generates its class from this, it creates the following:
public abstract class Type {
public string localId;
public int id;
}
The problem is that the "int" is a Value Type that is incapable of storing null. I have tried the following all to no avail:
1. Replacing 'type="xsd:int"' with 'type="soapenc:int' (which made Java WSDP work)
2. Including/Removing 'minOccurs' and/or 'maxOccurs'
3. Manually replacing 'public int id' with 'public SqlInt id' (SqlInt is not the correct name, but its the one from the Dot-Net SQL namespace that is used to support nulls for ints in the DB ... .NET barked at me when I attempted to use this telling me it can't be used for XML serialization or some such thing).
I am out of ideas
and wondering if you can guide me to a way to AVOID having .NET pass a zero(0) when this attribute is not specified (which is what it currently does for Value Types). I was hoping to find the equivalent of java.lang.Integer (which can be null) in C# but have had no success.
One last note: This WSDL will be consumed by clients who purchase the software I am developing. They will be responsible for generating their own Web Service Clients using the toolkit of their choice, so I am trying to make it as standardized as possible while requiring minimum client intervention/recoding when they generate the Web Service client.
Thanks in advance for any suggestions.
Erik
p.s. I got no replies to the newsgroup posting I put on microsoft.public.dotnet.framework.webservices
Erik Klein
Versatile Consulting Inc.
621 Lovett Road
Colts Neck, NJ 07722
732-936-0573
http://members.aol.com/ErikKlein
Do you Yahoo!?
Win a $20,000 Career Makeover at Yahoo! HotJobs
