--- a/jdk/src/java.management/share/classes/javax/management/MBeanServerInvocationHandler.java Tue Apr 07 13:37:30 2015 +0300
+++ b/jdk/src/java.management/share/classes/javax/management/MBeanServerInvocationHandler.java Wed Apr 01 17:30:28 2015 +0200
@@ -141,6 +141,12 @@
if (connection == null) {
throw new IllegalArgumentException("Null connection");
}
+// if (Proxy.isProxyClass(connection.getClass())) {
+// if (MBeanServerInvocationHandler.class.isAssignableFrom(
+// Proxy.getInvocationHandler(connection).getClass())) {
+// throw new IllegalArgumentException("Wrapping MBeanServerInvocationHandler");
+// }
+// }
if (objectName == null) {
throw new IllegalArgumentException("Null object name");
}
@@ -418,6 +424,10 @@
new Class<?>[] {Object.class})
&& isLocal(proxy, method))
return true;
+// if (methodName.equals("finalize")
+// && method.getParameterTypes().length == 0) {
+// return true;
+// }
return false;
}
@@ -453,6 +463,9 @@
connection + "[" + objectName + "])";
} else if (methodName.equals("hashCode")) {
return objectName.hashCode()+connection.hashCode();
+ } else if (methodName.equals("finalize")) {
+ // ignore the finalizer invocation via proxy
+ return null;
}
throw new RuntimeException("Unexpected method name: " + methodName);