If you need to transfer an parameter in a Web Service message for which null is a legal value always use a custom complex type.
Assume you have the following Web Service method:
public bool isCompany()
{
return true;
}
If the requested information is not known it might be good idea to use Boolean instead of the native type boolean like in the following code snippet:
public Boolean isCompany()
{
return null; // that means unknown
}
Here null is returned to indicate that the information is not known.
If you generate the WSDL from this code you will get an xsd:boolean on the wire. The result is the same for Boolean and boolean.
That means in XML the boolean value is not nullable anymore.
If you want the transfer a nullable type wrap it in a complex type:
public class WSBoolean
{
public boolean;
}
public WSBoolean isCompany()
{
return null; // that means unknown
}
I experienced this behaviour on BEA Weblogic 8.1 SP3, but I expect other frameworks/platforms like .NET or Websphere to behave in the same way.
If you wrap your nullable types you are on the safe side.