equal
deleted
inserted
replaced
719 logger.trace("checkListenerPermission", ""); |
719 logger.trace("checkListenerPermission", ""); |
720 } |
720 } |
721 SecurityManager sm = System.getSecurityManager(); |
721 SecurityManager sm = System.getSecurityManager(); |
722 if (sm != null) { |
722 if (sm != null) { |
723 try { |
723 try { |
724 ObjectInstance oi = (ObjectInstance) AccessController.doPrivileged( |
724 final String serverName = getMBeanServerName(); |
|
725 |
|
726 ObjectInstance oi = (ObjectInstance) |
|
727 AccessController.doPrivileged( |
725 new PrivilegedExceptionAction<Object>() { |
728 new PrivilegedExceptionAction<Object>() { |
726 public Object run() |
729 public Object run() |
727 throws InstanceNotFoundException { |
730 throws InstanceNotFoundException { |
728 return mbeanServer.getObjectInstance(name); |
731 return mbeanServer.getObjectInstance(name); |
729 } |
732 } |
730 }); |
733 }); |
731 |
734 |
732 String classname = oi.getClassName(); |
735 String classname = oi.getClassName(); |
733 MBeanPermission perm = new MBeanPermission( |
736 MBeanPermission perm = new MBeanPermission( |
|
737 serverName, |
734 classname, |
738 classname, |
735 null, |
739 null, |
736 name, |
740 name, |
737 "addNotificationListener"); |
741 "addNotificationListener"); |
738 sm.checkPermission(perm, acc); |
742 sm.checkPermission(perm, acc); |
744 } |
748 } |
745 } |
749 } |
746 return true; |
750 return true; |
747 } |
751 } |
748 |
752 |
|
753 private String getMBeanServerName() { |
|
754 if (mbeanServerName != null) return mbeanServerName; |
|
755 else return (mbeanServerName = getMBeanServerName(mbeanServer)); |
|
756 } |
|
757 |
|
758 private static String getMBeanServerName(final MBeanServer server) { |
|
759 final PrivilegedAction<String> action = new PrivilegedAction<String>() { |
|
760 public String run() { |
|
761 return Util.getMBeanServerSecurityName(server); |
|
762 } |
|
763 }; |
|
764 return AccessController.doPrivileged(action); |
|
765 } |
|
766 |
749 // ------------------------------------ |
767 // ------------------------------------ |
750 // private variables |
768 // private variables |
751 // ------------------------------------ |
769 // ------------------------------------ |
752 private final MBeanServer mbeanServer; |
770 private final MBeanServer mbeanServer; |
753 private volatile String mbeanServerName = null; |
771 private volatile String mbeanServerName = null; |