Hi,

Regarding the first question you can do something like:

                        fault = (SOAPFactory.newInstance()).createFault();
                        fault.setFaultString(BUSINESS_FAULT_STRING);
                        String errorString = businessException.getMessage();
                        try {
                                // 2. Parse exception string and add it as 
SOAPFault Details
                                Document faultDoc = builder.parse(new 
ByteArrayInputStream(
                                                errorString.getBytes()));
                                Detail detail = fault.addDetail();
                                Document owner = detail.getOwnerDocument();
                                Node details = 
owner.importNode(faultDoc.getDocumentElement(), true);
                                detail.appendChild(details);
                        } catch (SAXException e) {
                                // 3. If exception string is not XML, set is as 
fault string
                                fault.setFaultString(errorString);
                        }
                        return new SOAPFaultException(fault);


Regards,
Andrei.

> -----Original Message-----
> From: Mandy Warren [mailto:[email protected]]
> Sent: Donnerstag, 19. September 2013 23:39
> To: [email protected]
> Subject: Re: How to handle exceptions from a SOAP webservice in a single
> point
> 
> Many thanks again for such a fast reply! So I have written an
> AbstractSoapInterceptor and managed to retrieve the exception from the
> message via
> 
> Exchange exchange = message.getExchange;
> 
> exchange.get(Exception.class);
> 
> Pls can you explain how I then create a Fault with the info I want and send it
> back?
> 
> Also because I want to use local transport I was looking at using
> SOAPHandlers instead of in interceptors to pull out some header info I need,
> is there a way to get / change the exception info from the handler instead of
> via an interceptor?
> 
> Many thanks
> 
> Sent from a mobile device
> 
> On 19 Sep 2013, at 22:01, Sergey Beryozkin <[email protected]> wrote:
> 
> > Hi
> > On 19/09/13 21:56, Mandy Warren wrote:
> >> Hi,
> >>
> >> I would like to handle all exceptions thrown by my webservice in a
> >> single point so I can create Faults with specific codes / strings
> >> based on info in the exception. When using JAX-RS I can do this very
> >> neatly via an Exception Mapper (and then convert to a REST response)
> >> but there doesn't seem to be an equivalent for JAX-WS..
> >>
> >> Is there a way to handle the exceptions before they are turned into
> >> SOAP Faults?
> > See
> >
> > http://cxf.547215.n5.nabble.com/Implementing-smarter-
> RuntimeException-
> > handling-for-JAX-WS-service-tt5734264.html
> >
> > HTH
> > Sergey
> >> Many thanks
> >> Mandy
> >

Reply via email to