I have asked this elsewhere but got no answer, so I will try again here.
When using a JAX-WS provider in payload mode
how can I return a SOAP fault if the processing fails? Is it possible to do it when working directly on the xml payload?
If I was working in Message level (SOAP envelope) I know how to do it. I am not sure when I work on
I understand that if I throw an exception it will be mapped to a 500 Internal Error but what about faultstring, detail etc? How are they populated? How can I do it in xml level?
Have you tried the following approach:
1. Look at a fault message from some other web service.
2. Use some Java API to create an appropriate fault message (for example, DOM or JAXB).
3. From the method in the web service endpoint implementation class, return an object implementing the javax.xml.transform.Source interface (see API documentation) to which the fault message has been "written".
Ivan proposed an easy approach of doing this which we were doing in our previous projects when working on MDBs. But, can I ask you what you get if you generate WSDL from an interface throwing your business exception? I think if WSDL is correctly mapped, I'm sure you'd get corresponding SOAPFault when business exception is thrown.