diff -r a9a142fcf1b5 -r bbc2d15aaf7a jdk/src/share/classes/javax/management/event/EventClientDelegate.java --- a/jdk/src/share/classes/javax/management/event/EventClientDelegate.java Wed Sep 03 14:31:17 2008 +0200 +++ b/jdk/src/share/classes/javax/management/event/EventClientDelegate.java Thu Sep 04 14:46:36 2008 +0200 @@ -721,7 +721,10 @@ SecurityManager sm = System.getSecurityManager(); if (sm != null) { try { - ObjectInstance oi = (ObjectInstance) AccessController.doPrivileged( + final String serverName = getMBeanServerName(); + + ObjectInstance oi = (ObjectInstance) + AccessController.doPrivileged( new PrivilegedExceptionAction() { public Object run() throws InstanceNotFoundException { @@ -731,6 +734,7 @@ String classname = oi.getClassName(); MBeanPermission perm = new MBeanPermission( + serverName, classname, null, name, @@ -746,6 +750,20 @@ return true; } + private String getMBeanServerName() { + if (mbeanServerName != null) return mbeanServerName; + else return (mbeanServerName = getMBeanServerName(mbeanServer)); + } + + private static String getMBeanServerName(final MBeanServer server) { + final PrivilegedAction action = new PrivilegedAction() { + public String run() { + return Util.getMBeanServerSecurityName(server); + } + }; + return AccessController.doPrivileged(action); + } + // ------------------------------------ // private variables // ------------------------------------