summaryrefslogtreecommitdiff
path: root/java/broker-plugins
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2012-08-03 16:01:01 +0000
committerRobert Gemmell <robbie@apache.org>2012-08-03 16:01:01 +0000
commitc6fdf32f79759994e75ecae09072b202e1ac9c2e (patch)
tree2cfed53ef5911ae4e2958cf50b68f3772b27c0c8 /java/broker-plugins
parent12bb378e67e1bf3bef2bab1cad2df98f223ea760 (diff)
downloadqpid-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.java27
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);
}
}