You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Chad Wilson (JIRA)" <ax...@ws.apache.org> on 2005/06/21 07:04:17 UTC

[jira] Commented: (AXIS-1642) axis.development.system doesn't supress stack traces

    [ http://issues.apache.org/jira/browse/AXIS-1642?page=comments#action_12314126 ] 

Chad Wilson commented on AXIS-1642:
-----------------------------------

In particular this is a problem in the LogHandler that is distributed with Axis itself - in both Axis 1.2 and 1.2.1.

LogHandler's onFault() call invokes getSOAPPartAsString() on the response message, which has similar side-effects to getSOAPEnvelope.getFault() as mentioned above (just Axis 1.2.1 FINAL style). 

This makes it next to impossible to run a LogHandler in a production environment (which can be a requirement for audit or debugging purposes) so is less than optimal, imho.

Two options:
* as above, make these kinds of calls on SOAPParts/Envelopes/Bodys not affect the stored AxisFault.
* fix LogHandler to be able to serialize the fault/response (for logging) without affecting the fault, in a similar way to suggested above.

This one was truly a shocker to debug! Even a comment in the web howtos on using LogHandler in prod might be useful.

> axis.development.system doesn't supress stack traces
> ----------------------------------------------------
>
>          Key: AXIS-1642
>          URL: http://issues.apache.org/jira/browse/AXIS-1642
>      Project: Apache Axis
>         Type: Bug
>   Components: Serialization/Deserialization
>     Versions: 1.2 Beta
>     Reporter: Nelson Minar

>
> I had this problem in 1.2beta1, and another user just reported it on axis-user. As a convenience I'm copying his mail into a Jira bug report.
> http://marc.theaimsgroup.com/?l=axis-user&m=109952829914606&w=2
> I ran into a problem with not being able to stop stack traces from being 
> sent to the client even though "axis.development.system" was set to 
> false in the wsdd.  The beauty of open source is that I've been able to 
> trace through the code and figure out what the problem was.  The service 
> that I'm developing has an onFault handler that had the following line 
> of code:
> SOAPFault fault = 
> (SOAPFault)ctx.getResponseMessage().getSOAPEnvelope().getBody().getFault();
> Before this call, the response message contained the fault that my 
> service had thrown but after the call it contained a copy of the fault.  
> Unfortunately, the code that removes the stack trace from the fault 
> works on the original, not the copy, so the stack trace is still in the 
> response when the response gets sent.
> By changing the above to:
> Object fault_obj = 
> ((SOAPPart)ctx.getResponseMessage().getSOAPPart()).getCurrentMessage();
> which does not change the response message.  I now simply check whether 
> fault_obj is an AxisFault or a SOAPFault and act accordingly.
> Hope this helps others who have run into this problem.
> Dan.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira