cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrei Shakirin <ashaki...@talend.com>
Subject RE: How to handle exceptions from a SOAP webservice in a single point
Date Fri, 20 Sep 2013 12:46:53 GMT
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:mandys.inbox@gmail.com]
> Sent: Donnerstag, 19. September 2013 23:39
> To: users@cxf.apache.org
> 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 <sberyozkin@gmail.com> 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
> >

Mime
View raw message