Hi all,
 
We are using Axis 1.2.1 as a WebService provider and we have experienced issues when interfacing with clients that are not implemented with Axis.
 
The problem is that when a field is marked as non nillable in the WSDL (nillable="false") Axis will always check this when working as a client and will prevent the message being sent if there are nil values in not nillable fields. But when Axis acts as a the server, this check is not performed and will take anything coming through. Our issue is that we expected Axis to verify that non nillable fields where actually present and populated, so we did not make our own checks for not nillable fields. As Axis seems like not actually doing these checks we end up with Null exceptions if any of these fields is not sent or is nil.
 
Of course this kind of issues only happen when the client does not follow the WSDL specification properly and these issues are discovered during integration tests, but failing in our code with a null exception is a lot harder to debug than if Axis would just return an error telling that such field is not nillable, which will make our integration tests a lot easier. I can see advocates for both solutions, having Axis checking or having the server code doing it (which allows for customised error responses).
 
The checks I've done for Axis 1.4 and 2.0 indicate that this seems to be still the case in the latest versions of Axis.  I just wanted to check if this is the expected behaviour, if there is any parameter in Axis that can be set to turn on this checks at the deserialization level and what people are doing to deal with this situation, in case that there is an easier approach than checking manually that the values are not nil.
 
Thanks,
Juan

Reply via email to