Author: nagy Date: Tue Jun 29 18:26:12 2010 New Revision: 959069 URL: http://svn.apache.org/viewvc?rev=959069&view=rev Log: Correctly identify checked exceptions in JAX-WS as being application faults so that they are not erroneously logged.
Contributor: Phil Adams Modified: axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaDispatcher.java Modified: axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java?rev=959069&r1=959068&r2=959069&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java (original) +++ axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java Tue Jun 29 18:26:12 2010 @@ -100,6 +100,9 @@ public class JavaBeanDispatcher extends catch (Throwable e) { faultThrown = true; fault = e; + if (log.isDebugEnabled()) { + log.debug("Caught exception from 'invokeTargetOperation': " + fault.toString()); + } } MessageContext response = null; @@ -108,12 +111,20 @@ public class JavaBeanDispatcher extends // we cannot create a MessageContext for one-way responses. return null; } else if (faultThrown) { + if (log.isDebugEnabled()) { + log.debug("Processing fault response: " + fault.toString()); + } + response = createFaultResponse(mc, mc.getMessage().getProtocol(), fault); setExceptionProperties(response, target, fault); } else { response = createResponse(mc, mc.getMessage().getProtocol(), methodInputParams, output); } - + + + if (log.isDebugEnabled()) { + log.debug("Returning from JavaBeanDispatcher.invoke()..."); + } return response; } @@ -329,7 +340,10 @@ public class JavaBeanDispatcher extends } public MessageContext createFaultResponse(MessageContext request, Protocol p, Throwable t) { - + if (log.isDebugEnabled()) { + log.debug("Entered JavaBeanDispatcher.createFaultResponse()..."); + } + // call the InvocationListener instances before marshalling // the fault into a message // call the InvocationListener instances before marshalling @@ -354,6 +368,10 @@ public class JavaBeanDispatcher extends response.setCausedByException(axisFault); setFaultResponseAction(t, request, response); + + if (log.isDebugEnabled()) { + log.debug("Leaving JavaBeanDispatcher.createFaultResponse()..."); + } return response; } Modified: axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaDispatcher.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaDispatcher.java?rev=959069&r1=959068&r2=959069&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaDispatcher.java (original) +++ axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaDispatcher.java Tue Jun 29 18:26:12 2010 @@ -19,6 +19,7 @@ package org.apache.axis2.jaxws.server.dispatcher; +import org.apache.axis2.AxisFault; import org.apache.axis2.description.AxisOperation; import org.apache.axis2.jaxws.Constants; import org.apache.axis2.jaxws.WebServiceExceptionLogger; @@ -315,6 +316,10 @@ public abstract class JavaDispatcher imp * @param t Throwable */ protected static void setCheckedExceptionProperty(MessageContext response, Method m, Throwable t) { + if (log.isDebugEnabled()) { + log.debug("Entered JavaDispatcher.setCheckedExceptionProperty(), t=" + t); + } + // Get the root of the exception if (t instanceof InvocationTargetException) { t = ((InvocationTargetException) t).getTargetException(); @@ -325,7 +330,20 @@ public abstract class JavaDispatcher imp // Add the property if (checkedException != null) { + if (log.isDebugEnabled()) { + log.debug("The exception is a checked exception: " + checkedException.getCanonicalName()); + } + response.setProperty(Constants.CHECKED_EXCEPTION, checkedException.getCanonicalName()); + + // Also set the AxisFault so that it's an "application" fault. + AxisFault fault = response.getCausedByException(); + if (fault != null) { + fault.setFaultType(org.apache.axis2.Constants.APPLICATION_FAULT); + if (log.isDebugEnabled()) { + log.debug("Setting AxisFault's fault type to 'APPLICATION_FAULT': " + fault); + } + } } } @@ -356,8 +374,16 @@ public abstract class JavaDispatcher imp protected static void setExceptionProperties(MessageContext response, Method m, Throwable t) { + if (log.isDebugEnabled()) { + log.debug("Entering JavaDispatcher.setExceptionProperties()."); + } setCheckedExceptionProperty(response, m, t); setWebMethodExceptionProperty(response, t); + + if (log.isDebugEnabled()) { + log.debug("Leaving JavaDispatcher.setExceptionProperties()."); + } + } }