diff options
| author | Robert Gemmell <robbie@apache.org> | 2012-08-03 16:01:01 +0000 |
|---|---|---|
| committer | Robert Gemmell <robbie@apache.org> | 2012-08-03 16:01:01 +0000 |
| commit | c6fdf32f79759994e75ecae09072b202e1ac9c2e (patch) | |
| tree | 2cfed53ef5911ae4e2958cf50b68f3772b27c0c8 /java/broker-plugins | |
| parent | 12bb378e67e1bf3bef2bab1cad2df98f223ea760 (diff) | |
| download | qpid-python-c6fdf32f79759994e75ecae09072b202e1ac9c2e.tar.gz | |
QPID-4188: add fallback exception/error logging to MBeanInvocationHandlerImpl
Applied patch from Philip Harvey <phil@philharveyonline.com> and Oleksandr Rudyy<orudyy@gmail.com>
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1369065 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/broker-plugins')
| -rw-r--r-- | java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/MBeanInvocationHandlerImpl.java | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/MBeanInvocationHandlerImpl.java b/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/MBeanInvocationHandlerImpl.java index 2dc97cef49..a2a0d2d093 100644 --- a/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/MBeanInvocationHandlerImpl.java +++ b/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/MBeanInvocationHandlerImpl.java @@ -39,6 +39,7 @@ import javax.management.MBeanServer; import javax.management.Notification; import javax.management.NotificationListener; import javax.management.ObjectName; +import javax.management.RuntimeErrorException; import javax.management.remote.JMXConnectionNotification; import javax.management.remote.JMXPrincipal; import javax.management.remote.MBeanServerForwarder; @@ -49,6 +50,7 @@ import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.security.AccessControlContext; import java.security.AccessController; +import java.util.Arrays; import java.util.Map; import java.util.Set; @@ -170,7 +172,30 @@ public class MBeanInvocationHandlerImpl implements InvocationHandler, Notificati } catch (InvocationTargetException e) { - throw e.getTargetException(); + Throwable targetException = e.getCause(); + logTargetException(method, args, targetException); + throw targetException; + } + } + + private void logTargetException(Method method, Object[] args, Throwable targetException) + { + Throwable error = null; + if (targetException instanceof RuntimeErrorException) + { + error = ((RuntimeErrorException)targetException).getCause(); + } + else if (targetException instanceof Error) + { + error = targetException; + } + if (error == null) + { + _logger.debug("Exception was thrown on invoking of " + method + " with arguments " + Arrays.toString(args), targetException); + } + else + { + _logger.error("Unexpected error occured on invoking of " + method + " with arguments " + Arrays.toString(args), targetException); } } |
