Hi David, that is something I was running into as well.
I did not have a quick solution for that and therefore did what you should not do: I hacked the generated code. I hope others have a more sophisticated and Axis2-like solution to that. In the WSDL, I created a WrongArgumentFaultType: <wsdl:types> <xsd:schema ...> ... <xsd:complexType name="WrongArgumentFaultType"> <xsd:sequence> <xsd:element minOccurs="0" maxOccurs="1" name="argument" type="xsd:string" /> </xsd:sequence> </xsd:complexType> <xsd:element name="WrongArgumentFault" type="tns:WrongArgumentFaultType" /> ... </xsd:schema> </wsdl:types> a fault message: <wsdl:message name="WrongArgumentFaultMessage"> <wsdl:part name="fault" element="tns:WrongArgumentFault" /> </wsdl:message> an operation: <wsdl:operation name="someOperation"> <wsdl:input message="tns:Request" wsaw:Action="someOperation"> .. </wsdl:input> <wsdl:output message="tns:Response" ... </wsdl:output> <wsdl:fault message="tns:WrongArgumentFaultMessage" name="WrongArgumentException"/> </wsdl:operation> and in a binding: <wsdl:binding name="SomeBinding" type="tns:SomeType"> <wsdl:operation name="someOperation"> <soap:operation soapAction="someOperation" style="document" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> <wsdl:fault name="WrongArgumentException"> <soap:fault name="WrongArgumentException" use="literal"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> So Axis2 provides a way of mapping an exeption to a SOAP fault, but my problem was that the generated code for the kind of XSD types you describe throws an IllegalArgumentException, and I was not able to map that exception to a customized SOAP fault message. I don't know if this is generally possible, I would be keen on knowing if one can generally do this kind of mapping. So what I did as a quick hack was to modify the generated code and let it throw my custom exception (throw new WrongArgumentFaultMessage(message)) instead of the generated IllegalArgumentException. Axis2 always exits gently and wraps the IllegalArgumentException into a generic AxisFault and, as you report, for me as well it was not possible to see at the client what actually goes wrong. Using the hack I was at least able to give a SOAP fault message with concrete information about the error back. I hope this helps you, I am also interested in knowing what is the Axis2-way of addressing this. Best regards, Sven -----Original message----- To:java-user@axis.apache.org; From:David Brooks <david.bro...@ombiel.com> Sent:Wed 11-01-2012 11:31 Subject:Improving faultstring messages for type restrictions Hi, I'm a relative newcomer to Axis2 and this is my first encounter with this list. I'm pretty sure this is a question you've had time-and-again, although I've had no joy in the list archives - I probably don't know the correct terminology to frame my question. I am using Axis2 to support web-services. I define these through WSDL/XSD and use wsdl2java to generate Java classes (ADBs?) for request/response types, then write web-service code in Java to process them. I'm trying to add some restrictions to my XSDs and have the ADBs process them, but I'm not getting quite the behaviour I expect. I've tried adding a couple of type restrictions to my web-services: [1] A Yes/No type that is a string with an enumeration restriction; [2] A star-rating type that is a number from 1-5 inclusive. Here's the XSD snippet for the latter: <xsd:simpleType name="Rating"> <xsd:restriction base="xsd:int"> <xsd:minInclusive value="1" /> <xsd:maxInclusive value="5" /> </xsd:restriction> </xsd:simpleType> Using soapUI I can test that my services work for correct values, and indeed they do. However, when I enter a value that violates one of my restrictions I get a simple axis fault message with the following: <soapenv:Fault <faultcode>soapenv:Server</faultcode> <faultstring>unknown</faultstring> </soapenv:Fault> What I'd like to do is make the "unknown" part more meaningful in light of these restrictions, similar to its behaviour if I omit a required element: <soapenv:Fault> <faultcode>soapenv:Server</faultcode <faultstring>org.apache.axis2.databinding.ADBException: Unexpected subelement thisIsRequired</faultstring> </soapenv:Fault> For instance, entering 6 for a star rating might give: <soapenv:Fault> <faultcode>soapenv:Server</faultcode <faultstring>WhateverException: 1 <= "rating" <= 6 violated: found 6</faultstring> </soapenv:Fault> I realise I can configure axis2.xml to include stacktraces, but they are of limited use because the exceptions generated for these restrictions (IllegalArgumentException for YesNo; RuntimeException for Rating) don't seem to have meaningful error messages. Is it possible to improve these exception messages and/or the faultstring messages for restrictions? (... without doing the validation manually in Java) Many thanks, David -- David Brooks --------------------------------------------------------------------- To unsubscribe, e-mail: java-user-unsubscr...@axis.apache.org For additional commands, e-mail: java-user-h...@axis.apache.org