[ 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
