cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Kulp <dk...@apache.org>
Subject Re: com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump
Date Wed, 17 Feb 2010 16:58:50 GMT
On Tue February 16 2010 6:17:39 pm kiffin wrote:
> Dan,
> 
> Thanks for your help. I get the stack trace returned with the soap fault,
> but it doesn't return the root cause of the stack trace.
> 
> Example
>     throw new SomeException(new AnotherException());
> 
> I get the stack trace for SomeException, but I don't get AnotherException
> as its cause. Is there any way to get the cause returned to the client
> too?

Not at this time.   If you want to take a look, the code to add the stack 
trace and such to the fault is in: 
http://svn.apache.org/repos/asf/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap11FaultOutInterceptor.java

A patch to that to enhance it would be welcome.   :-)

Dan




> Thanks,
> Kiffin
> 
> dkulp wrote:
> > On Tue February 16 2010 12:50:44 pm kiffin wrote:
> >> Dan,
> >> 
> >> I am using the Endpoint class in my unit test. Could I call the
> >> setProperties method with this property?
> > 
> > I think so, yes.   You may need to to do it before the call to publish
> > though.
> > Basically, do ep = Endpoint.create(...) and then ep.publish(addr) as
> > separate
> > steps with the ep.setProeprties stuff in the middle.
> > 
> > Dan
> > 
> >> Thanks,
> >> Kiffin
> >> 
> >> dkulp wrote:
> >> > You can give this a try, but a caveat in that I've never tried this so
> >> 
> >> I
> >> 
> >> > don't
> >> > know what the resulting soap message looks like:
> >> > 
> >> > If you set a property on the endpoint like:
> >> > <jaxws:properties>
> >> > 
> >> >     <entry key="faultStackTraceEnabled" value="true" />
> >> > 
> >> > </jaxws:properties>
> >> > 
> >> > the the SOAP out interceptors will stick a stack trace into the fault.
> >> > Not
> >> > exactly sure what that ends up looking like.
> >> > 
> >> > Dan
> >> > 
> >> > On Fri February 12 2010 5:58:05 pm kiffin wrote:
> >> >> That response message was from running a test using the CXF stack.
> >> >> The message below is from the Sun stack running the same test. We
> >> >> need to
> >> 
> >> do
> >> 
> >> >> some post-processing on service exception and need to know the root
> >> >> cause of that exception.
> >> >> 
> >> >> Thanks,
> >> >> Kiffin
> >> >> 
> >> >> <?xml version="1.0" standalone="no"?>
> >> >> <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
> >> >> 
> >> >>     <S:Body>
> >> >>     
> >> >>         <ns2:Fault
> >> 
> >> xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/"
> >> 
> >> >> xmlns:ns3="http://www.w3.org/2003/05/soap-envelope">
> >> >> 
> >> >>             <faultcode>
> >> >>             
> >> >>                 ns2:Server
> >> >>             
> >> >>             </faultcode>
> >> >>             <faultstring>
> >> >>             
> >> >>                 java.lang.RuntimeException: Mock up exception
> >> >>             
> >> >>             </faultstring>
> >> >>             <detail>
> >> >>             
> >> >>                 <ns2:exception
> >> >>                 xmlns:ns2="http://jax-ws.dev.java.net/"
> >> >> 
> >> >> class="com.expd.arch.service.ServiceException" note="To disable this
> >> >> feature, set
> >> >> com.sun.xml.ws.fault.SOAPFaultBuilder.disableCaptureStackTrace
> >> >> system property to false">
> >> >> 
> >> >>                     <message>
> >> >>                     
> >> >>                         java.lang.RuntimeException: Mock up exception
> >> >>                     
> >> >>                     </message>
> >> >>                     <ns2:stackTrace>
> >> >>                     
> >> >>                         <ns2:frame
> >> >> 
> >> >> class="com.expd.arch.service.ServiceException"
> >> >> file="ServiceException.java"
> >> >> line="101" method="wrap"/>
> >> >> 
> >> >>                         <ns2:frame
> >> >> 
> >> >> class="com.expd.service.calculation.impl.CalculationService"
> >> >> file="CalculationService.java" line="134"
> >> >> method="throwExceptionInMethod"/>
> >> >> 
> >> >>                         <ns2:frame
> >> >> 
> >> >> class="sun.reflect.NativeMethodAccessorImpl"
> >> >> file="NativeMethodAccessorImpl.java" line="native" method="invoke0"/>
> >> >> 
> >> >>                         <ns2:frame
> >> >> 
> >> >> class="sun.reflect.NativeMethodAccessorImpl"
> >> >> file="NativeMethodAccessorImpl.java" line="39" method="invoke"/>
> >> >> 
> >> >>                         <ns2:frame
> >> >> 
> >> >> class="sun.reflect.DelegatingMethodAccessorImpl"
> >> >> file="DelegatingMethodAccessorImpl.java" line="25" method="invoke"/>
> >> >> 
> >> >>                         <ns2:frame class="java.lang.reflect.Method"
> >> >> 
> >> >> file="Method.java" line="597" method="invoke"/>
> >> >> 
> >> >>                         <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.api.server.InstanceResolver$1"
> >> >> file="InstanceResolver.java" line="246" method="invoke"/>
> >> >> 
> >> >>                         <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.server.InvokerTube$2" file="InvokerTube.java"
> >> >> line="146" method="invoke"/>
> >> >> 
> >> >>                         <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.server.sei.EndpointMethodHandler"
> >> >> file="EndpointMethodHandler.java" line="257" method="invoke"/>
> >> >> 
> >> >>                         <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.server.sei.SEIInvokerTube"
> >> >> file="SEIInvokerTube.java"
> >> >> line="93" method="processRequest"/>
> >> >> 
> >> >>                         <ns2:frame
> >> 
> >> class="com.sun.xml.ws.api.pipe.Fiber"
> >> 
> >> >> file="Fiber.java" line="598" method="__doRun"/>
> >> >> 
> >> >>                         <ns2:frame
> >> 
> >> class="com.sun.xml.ws.api.pipe.Fiber"
> >> 
> >> >> file="Fiber.java" line="557" method="_doRun"/>
> >> >> 
> >> >>                         <ns2:frame
> >> 
> >> class="com.sun.xml.ws.api.pipe.Fiber"
> >> 
> >> >> file="Fiber.java" line="542" method="doRun"/>
> >> >> 
> >> >>                         <ns2:frame
> >> 
> >> class="com.sun.xml.ws.api.pipe.Fiber"
> >> 
> >> >> file="Fiber.java" line="439" method="runSync"/>
> >> >> 
> >> >>                         <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.server.WSEndpointImpl$2"
> >> >> file="WSEndpointImpl.java" line="243" method="process"/>
> >> >> 
> >> >>                         <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit"
> >> >> file="HttpAdapter.java" line="444" method="handle"/>
> >> >> 
> >> >>                         <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.transport.http.HttpAdapter"
> >> >> file="HttpAdapter.java" line="244" method="handle"/>
> >> >> 
> >> >>                         <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.transport.http.server.WSHttpHandler"
> >> >> file="WSHttpHandler.java" line="106" method="handleExchange"/>
> >> >> 
> >> >>                         <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.transport.http.server.WSHttpHandler"
> >> >> file="WSHttpHandler.java" line="91" method="handle"/>
> >> >> 
> >> >>                         <ns2:frame
> >> >> 
> >> >> class="com.sun.net.httpserver.Filter$Chain" file="Filter.java"
> >> 
> >> line="65"
> >> 
> >> >> method="doFilter"/>
> >> >> 
> >> >>                         <ns2:frame
> >> 
> >> class="sun.net.httpserver.AuthFilter"
> >> 
> >> >> file="AuthFilter.java" line="65" method="doFilter"/>
> >> >> 
> >> >>                         <ns2:frame
> >> >> 
> >> >> class="com.sun.net.httpserver.Filter$Chain" file="Filter.java"
> >> 
> >> line="68"
> >> 
> >> >> method="doFilter"/>
> >> >> 
> >> >>                         <ns2:frame
> >> >> 
> >> >> class="sun.net.httpserver.ServerImpl$Exchange$LinkHandler"
> >> >> file="ServerImpl.java" line="555" method="handle"/>
> >> >> 
> >> >>                         <ns2:frame
> >> >> 
> >> >> class="com.sun.net.httpserver.Filter$Chain" file="Filter.java"
> >> 
> >> line="65"
> >> 
> >> >> method="doFilter"/>
> >> >> 
> >> >>                         <ns2:frame
> >> >> 
> >> >> class="sun.net.httpserver.ServerImpl$Exchange" file="ServerImpl.java"
> >> >> line="527" method="run"/>
> >> >> 
> >> >>                         <ns2:frame
> >> >> 
> >> >> class="java.util.concurrent.ThreadPoolExecutor$Worker"
> >> >> file="ThreadPoolExecutor.java" line="886" method="runTask"/>
> >> >> 
> >> >>                         <ns2:frame
> >> >> 
> >> >> class="java.util.concurrent.ThreadPoolExecutor$Worker"
> >> >> file="ThreadPoolExecutor.java" line="908" method="run"/>
> >> >> 
> >> >>                         <ns2:frame class="java.lang.Thread"
> >> >> 
> >> >> file="Thread.java" line="619" method="run"/>
> >> >> 
> >> >>                     </ns2:stackTrace>
> >> >>                     <ns2:cause class="java.lang.RuntimeException"
> >> >> 
> >> >> note="To
> >> >> disable this feature, set
> >> >> com.sun.xml.ws.fault.SOAPFaultBuilder.disableCaptureStackTrace system
> >> >> property to false">
> >> >> 
> >> >>                         <message>
> >> >>                         
> >> >>                             Mock up exception
> >> >>                         
> >> >>                         </message>
> >> >>                         <ns2:stackTrace>
> >> >>                         
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="com.expd.service.calculation.impl.CalculationService"
> >> >> file="CalculationService.java" line="126"
> >> >> method="throwRuntimeException"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="com.expd.service.calculation.impl.CalculationService"
> >> >> file="CalculationService.java" line="132"
> >> >> method="throwExceptionInMethod"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="sun.reflect.NativeMethodAccessorImpl"
> >> >> file="NativeMethodAccessorImpl.java" line="native" method="invoke0"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="sun.reflect.NativeMethodAccessorImpl"
> >> >> file="NativeMethodAccessorImpl.java" line="39" method="invoke"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="sun.reflect.DelegatingMethodAccessorImpl"
> >> >> file="DelegatingMethodAccessorImpl.java" line="25" method="invoke"/>
> >> >> 
> >> >>                             <ns2:frame
> >> 
> >> class="java.lang.reflect.Method"
> >> 
> >> >> file="Method.java" line="597" method="invoke"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.api.server.InstanceResolver$1"
> >> >> file="InstanceResolver.java" line="246" method="invoke"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.server.InvokerTube$2" file="InvokerTube.java"
> >> >> line="146" method="invoke"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.server.sei.EndpointMethodHandler"
> >> >> file="EndpointMethodHandler.java" line="257" method="invoke"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.server.sei.SEIInvokerTube"
> >> >> file="SEIInvokerTube.java"
> >> >> line="93" method="processRequest"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.api.pipe.Fiber" file="Fiber.java" line="598"
> >> >> method="__doRun"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.api.pipe.Fiber" file="Fiber.java" line="557"
> >> >> method="_doRun"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.api.pipe.Fiber" file="Fiber.java" line="542"
> >> >> method="doRun"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.api.pipe.Fiber" file="Fiber.java" line="439"
> >> >> method="runSync"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.server.WSEndpointImpl$2"
> >> >> file="WSEndpointImpl.java" line="243" method="process"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit"
> >> >> file="HttpAdapter.java" line="444" method="handle"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.transport.http.HttpAdapter"
> >> >> file="HttpAdapter.java" line="244" method="handle"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.transport.http.server.WSHttpHandler"
> >> >> file="WSHttpHandler.java" line="106" method="handleExchange"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="com.sun.xml.ws.transport.http.server.WSHttpHandler"
> >> >> file="WSHttpHandler.java" line="91" method="handle"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="com.sun.net.httpserver.Filter$Chain" file="Filter.java"
> >> 
> >> line="65"
> >> 
> >> >> method="doFilter"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="sun.net.httpserver.AuthFilter" file="AuthFilter.java"
> >> >> line="65" method="doFilter"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="com.sun.net.httpserver.Filter$Chain" file="Filter.java"
> >> 
> >> line="68"
> >> 
> >> >> method="doFilter"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="sun.net.httpserver.ServerImpl$Exchange$LinkHandler"
> >> >> file="ServerImpl.java" line="555" method="handle"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="com.sun.net.httpserver.Filter$Chain" file="Filter.java"
> >> 
> >> line="65"
> >> 
> >> >> method="doFilter"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="sun.net.httpserver.ServerImpl$Exchange" file="ServerImpl.java"
> >> >> line="527" method="run"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="java.util.concurrent.ThreadPoolExecutor$Worker"
> >> >> file="ThreadPoolExecutor.java" line="886" method="runTask"/>
> >> >> 
> >> >>                             <ns2:frame
> >> >> 
> >> >> class="java.util.concurrent.ThreadPoolExecutor$Worker"
> >> >> file="ThreadPoolExecutor.java" line="908" method="run"/>
> >> >> 
> >> >>                             <ns2:frame class="java.lang.Thread"
> >> >> 
> >> >> file="Thread.java" line="619" method="run"/>
> >> >> 
> >> >>                         </ns2:stackTrace>
> >> >>                     
> >> >>                     </ns2:cause>
> >> >>                 
> >> >>                 </ns2:exception>
> >> >>             
> >> >>             </detail>
> >> >>         
> >> >>         </ns2:Fault>
> >> >>     
> >> >>     </S:Body>
> >> >> 
> >> >> </S:Envelope>
> >> >> 
> >> >> dkulp wrote:
> >> >> > Per spec, the "faultstring" should be the result of
> >> >> > exception.getMessage().
> >> >> > Thus, we output whatever that returns.   Is there any way you
can
> >> 
> >> look
> >> 
> >> >> at
> >> >> 
> >> >> > the
> >> >> > sun generated exceptions or something to see if they are doing
> >> >> 
> >> >> something
> >> >> 
> >> >> > funky
> >> >> > with the getMessage() call?
> >> >> > 
> >> >> > Is the sample below from the CXF test or the Sun test?
> >> >> > 
> >> >> > Dan
> >> >> > 
> >> >> > On Fri February 12 2010 5:26:51 pm kiffin wrote:
> >> >> >> I have another question on soap fault. I could see the root
cause
> >> >> >> returning
> >> >> >> from the soap fault from my Sun JAX-WS service,  but I am
not
> >> 
> >> seeing
> >> 
> >> >> it
> >> >> 
> >> >> >> in
> >> >> >> the CXF implementation. Is there a way for CXF to return the
root
> >> >> 
> >> >> cause
> >> >> 
> >> >> >> of
> >> >> >> the soap fault to a client?  Here's the example response from
my
> >> >> >> test.
> >> >> >> 
> >> >> >> <soap:Envelope
> >> >> >> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
> >> >> >> 
> >> >> >>     <soap:Header/>
> >> >> >>     <soap:Body>
> >> >> >>     
> >> >> >>         <soap:Fault>
> >> >> >>         
> >> >> >>             <faultcode>
> >> >> >>             
> >> >> >>                 soap:Server
> >> >> >>             
> >> >> >>             </faultcode>
> >> >> >>             <faultstring>
> >> >> >>             
> >> >> >>                 java.lang.RuntimeException: Mock up exception
> >> >> >>             
> >> >> >>             </faultstring>
> >> >> >>             <detail>
> >> >> >>             
> >> >> >>                 <ns1:ServiceException
> >> >> >> 
> >> >> >> xmlns:ns1="urn:expd.com:service:calculation"/>
> >> >> >> 
> >> >> >>             </detail>
> >> >> >>         
> >> >> >>         </soap:Fault>
> >> >> >>     
> >> >> >>     </soap:Body>
> >> >> >> 
> >> >> >> </soap:Envelope>
> >> >> >> 
> >> >> >> Thanks,
> >> >> >> Kiffin
> >> >> >> 
> >> >> >> dkulp wrote:
> >> >> >> > On Fri February 12 2010 3:06:52 pm kiffin wrote:
> >> >> >> >> Hi. I am porting a Sun JAX-WS service to CXF. Sun
has a system
> >> >> >> 
> >> >> >> property
> >> >> >> 
> >> >> >> >> - com.sun.xml.ws.transport.http.client.HttpTransportPipe.dum
-
> >> >> 
> >> >> which
> >> >> 
> >> >> >> >> dumps the request/response message on the console.
Does CXF
> >> >> >> >> have an equivalent property to dump the request/response
> >> >> >> >> message on the console?
> >> >> >> > 
> >> >> >> > OK.  Didn't know about that specific property.   Sun
seems to
> >> 
> >> have
> >> 
> >> >> >> > several properties like that which CXF would respond
to, but
> >> >> >> > that
> >> >> 
> >> >> one
> >> >> 
> >> >> >> > isn't one. I'll add it.
> >> >> >> > 
> >> >> >> > With 2.2.6, you can chose one of:
> >> >> >> > 
> >> >> >> > Boolean.getBoolean("org.apache.cxf.logging.enabled");
> >> 
> >> Boolean.getBoolean("com.sun.xml.ws.transport.local.LocalTransportPipe.du
> >> 
> >> >> >> m
> >> >> >> 
> >> >> >> > p");
> >> 
> >> Boolean.getBoolean("com.sun.xml.ws.util.pipe.StandaloneTubeAssembler.dum
> >> 
> >> >> >> > p");
> >> >> 
> >> >> Boolean.getBoolean("com.sun.xml.ws.transport.http.HttpAdapter.dump");
> >> >> 
> >> >> >> > It wouldn't go to the console.  It would go the
> >> 
> >> java.util.logging,
> >> 
> >> >> but
> >> >> 
> >> >> >> by
> >> >> >> 
> >> >> >> > default, that would go to the console.

-- 
Daniel Kulp
dkulp@apache.org
http://www.dankulp.com/blog

Mime
View raw message