cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mert ÇALIŞKAN" <m...@t2.com.tr>
Subject Re: customizing faultCode
Date Mon, 14 Jan 2013 11:40:26 GMT
Thanks,  

I already walked through that article, can you specify the exact part about customizing the
faultCodes in that article? Because I can't see a point there that Eben Hewitt handled it.
 
My approach benefits the same style, using @WebFault for creating custom tag in the fault
detail.

M.  


On Monday, January 14, 2013 at 1:33 PM, Mark Streit wrote:

> Take a look at this article by Eben Hewitt:
> http://io.typepad.com/eben_hewitt_on_java/2009/07/using-soap-faults-and-exceptions-in-java-jaxws-web-services.html
>  
> Since throwing detailed exceptions from the "service" end back over the
> wire is a little more complex in JAX-WS, we used this approach and it
> worked well. It is not CXF specific either since it uses standard jax-ws
> api classes and annotations.
>  
> HTH
>  
> On Mon, Jan 14, 2013 at 1:29 AM, Mert ÇALIŞKAN <mert@t2.com.tr (mailto:mert@t2.com.tr)>
wrote:
>  
> > Hi,
> >  
> > I'm using cxf XX for exposing web services to my clients. When I tried to
> > customize the fault code I couldn't see any way to achieve this by throwing
> > a RuntimeException.
> >  
> > My WebMethod definition is like,
> >  
> > @WebMethod
> > User getUser(@WebParam(name = "userId") String userId) throws
> > UserDoesNotExistException;
> >  
> >  
> >  
> > My exception definition is like,
> >  
> > @WebFault(name="UserDoesNotExist")
> > @XmlAccessorType(XmlAccessType.FIELD)
> > public class UserDoesNotExistException extends RuntimeException {
> >  
> > private String userId;
> >  
> > public UserDoesNotExistException(String userId) {
> > super("User Does Not Exist");
> > this.userId = userId;
> > }
> > }
> >  
> >  
> > When I request for the service with the envelope below,
> >  
> >  
> > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> > xmlns:ws="http://ws.service.orca.turktelekom.com.tr/">
> > <soapenv:Header/>
> > <soapenv:Body>
> > <ws:getUser>
> > <userId>sample</userId>
> > </ws:getUser>
> > </soapenv:Body>
> > </soapenv:Envelope>
> >  
> >  
> > I get the response envelope as below,
> >  
> >  
> > <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
> > <soap:Body>
> > <soap:Fault>
> > <faultcode>soap:Server</faultcode>
> > <faultstring>User Does Not Exist</faultstring>
> > <detail>
> > <ns1:UserDoesNotExist xmlns:ns1="
> > http://ws.service.orca.turktelekom.com.tr/">
> > <userId xmlns:ns2="
> > http://ws.service.orca.turktelekom.com.tr/">not</userId>
> > </ns1:UserDoesNotExist>
> > </detail>
> > </soap:Fault>
> > </soap:Body>
> > </soap:Envelope>
> >  
> >  
> > If I create a custom fault by extending the
> > org.apache.cxf.binding.soap.SoapFault I'm able to customize the fault code
> > and fault string. But I think this is not the appropriate approach since I
> > need to throw exceptions in my business logic but not the faults. Is there
> > way to propagate the fault code from my exception to my fault? Because I
> > can do it for the fault string by constructing the exception with
> > super(message) call.
> >  
> > Thanks,
> >  
> > Mert.
>  
>  
> --  
> Mark *
> *
>  
>  



Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message