javax.management

接口
异常
注释
java.lang.Object
  继承者 java.security.Permission
      继承者 javax.management.MBeanPermission
所有已实现的接口:
Serializable, Guard

public class MBeanPermission
     
extends Permission

权限控制对 MBeanServer 操作的访问。如果已使用 System.setSecurityManager(java.lang.SecurityManager) 设置了安全管理器,则 MBeanServer 上的多数操作都需要调用者的权限隐含了适用于该操作的 MBeanPermission。MBeanServer 接口的文档中对此进行了详细描述。

与其他 Permission 对象一样,MBeanPermission 可以表示所拥有 的权限,或者是所需要 的权限。当检查某个敏感操作的权限时,会构造一个表示所需权限的 MBeanPermission。仅在所拥有的权限隐含所需的权限时才允许该操作。

MBeanPermission 包含四项信息:

  • 操作。对于所需的权限,这是下面列表中的某种操作。对于所拥有的权限,则是这些操作的列表,各项以逗号分隔,或者是 *,表示所有操作。

    通过 getActions() 返回操作。

  • 类名

    对于所需的权限,这是正在访问的 MBean 的类名,正如 MBeanServer.getMBeanInfo(name)getClassName() 所返回的一样。某些操作不引用类名,在这种情况下类名为 null。

    对于所拥有的权限,这是空或一个类名模式。类名模式是一个服从 Java 对点分类名约定的 string。该模式可以以 ".*" 结尾,意味着该权限允许对名称以 ".*" 前面的字符串开始的类的访问。例如,"javax.management.*" 允许对其他类中的 javax.management.MBeanServerDelegatejavax.management.timer.Timer 进行访问。

    类名模式也可以为空,或者只有单个字符 "*",这两种情况都允许对任何类的访问。

  • 成员

    对于所需的权限,这是正在访问的属性或操作名。对于没有引用属性或操作的操作,该成员为 null。

    对于所拥有的权限,这要么是可以访问的属性或操作名,要么是空或单个字符 "*",后面这两种情况都允许对任意成员的访问。

  • 对象名

    对于所需的权限,这是正在访问的 MBean 的 ObjectName。对于不引用单个 MBean 的操作而言,对象名为 null。它永远不会是对象名模式。

    对于所拥有的权限,这是可访问的 MBean 或 MBeans 的 ObjectName。可以是一个对象名模式,以允许访问其名称匹配该模式的所有 MBean。还可以为空,这样可访问所有 MBean 而不管其名称是什么。

如果拥有 MBeanPermission,则它只允许这四项都匹配的操作。

可将类名、成员和对象名一同写入单个字符串,这就是此权限的名称。权限的名称是 getName() 所返回的字符串。该字符串的格式为:

className#member[objectName]

使用常规的 ObjectName 语法写对象名称。它可包含任意合法字符,包括 ]。由字符串中最后一个 ] 字符终止该字符串。

可省略一个或多个 classNamememberobjectName。如果省略的 member,则 # 也可省略(但并非必须如此)。如果省略 objectName,则 [] 也可省略(但并非必须如此)。省略所有三项是不合法的,也就是说只有一个空字符串的名称 是不合法的。

classNamememberobjectName 中的一个或多个可以是字符 "-",这等同于 null 值。任意值隐含 null 值(包括另一个 null 值),但是 null 值并不隐含任意其他值。

可能的操作有:

  • addNotificationListener
  • getAttribute
  • getClassLoader
  • getClassLoaderFor
  • getClassLoaderRepository
  • getDomains
  • getMBeanInfo
  • getObjectInstance
  • instantiate
  • invoke
  • isInstanceOf
  • queryMBeans
  • queryNames
  • registerMBean
  • removeNotificationListener
  • setAttribute
  • unregisterMBean

在逗号分隔的操作列表中,每个操作的前后允许有空格。

从以下版本开始:
1.5
另请参见:
序列化表格

构造方法摘要
MBeanPermission(String name, String actions)
          创建具有指定目标名称和操作的新 MBeanPermission 对象。
MBeanPermission(String className, String member, ObjectName objectName, String actions)
          创建具有指定目标名称(类名、成员、对象名)和操作的 MBeanPermission 对象。
 
方法摘要
 boolean equals(Object obj)
          检查两个 MBeanPermission 对象的相等性。
 String getActions()
          返回操作的“规范化字符串表示形式”。
 int hashCode()
          返回此对象的哈希码值。
 boolean implies(Permission p)
          检查此 MBeanPermission 对象是否“隐含”指定的权限。
 
从类 java.security.Permission 继承的方法
checkGuard, getName, newPermissionCollection, toString
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

MBeanPermission

public MBeanPermission(String name,
                       String actions)

创建具有指定目标名称和操作的新 MBeanPermission 对象。

目标名称的形式为 "className#member[objectName]",其中每部分都是可选的。不可以为空或 null。

actions 参数包含在目标名称上所允许的所需操作列表,该列表用逗号分隔。不可以为空或 null。

参数:
name - 三部分的 "className#member[objectName]"。
actions - 操作字符串。
抛出:
IllegalArgumentException - 如果 nameactions 无效。

MBeanPermission

public MBeanPermission(String className,
                       String member,
                       ObjectName objectName,
                       String actions)

创建具有指定目标名称(类名、成员、对象名)和操作的 MBeanPermission 对象。

className、member、objectName 参数定义了 "className#member[objectName]" 形式的目标名称,其中每个部分都是可选的。这将是在结果 MBeanPermission 上调用 Permission.getName() 得到的结果。

actions 参数包含在目标名称上所允许的所需操作列表,该列表用逗号分隔。不可以为空或 null。

参数:
className - 应用此权限的类名。可以为 null 或 "-",这表示一个由任何类名所隐含的类名,但是并不隐含任意其他类名。
member - 应用此权限的成员。可以为 null 或 "-",这表示一个由任何成员所隐含的成员,但是并不隐含任意其他成员。
objectName - 应用此权限的对象名。可以为 null,这表示一个由任何对象名所隐含的对象名,但是并不隐含任意其他对象名。
actions - 操作字符串。
方法详细信息

getActions

public String getActions()
返回操作的“规范化字符串表示形式”。也就是说,此方法总是以字母顺序返回存在的操作:

指定者:
Permission 中的 getActions
返回:
操作的规范化字符串表示形式。

hashCode

public int hashCode()
返回此对象的哈希码值。

指定者:
Permission 中的 hashCode
返回:
此对象的哈希码值。
另请参见:
Object.equals(java.lang.Object), Hashtable

implies

public boolean implies(Permission p)

检查此 MBeanPermission 对象是否“隐含”指定的权限。

更明确地说,如果此方法满足以下条件,则返回 true:

  • p 是 MBeanPermission 的一个实例;并且
  • p 具有 null className 或者 p 的 className 与此对象的 className 相符;并且
  • p 具有 null 成员或者 p 的成员与此对象的成员相符;并且
  • p 具有 null 对象名或者 p 的对象名与此对象的 对象名相符;并且
  • p 的动作是此对象动作的一个子集

如果此对象的 className 是 "*",则 p 的 className 始终与其相符。如果是 "a.*",则 p 的 className 与开头是 "a." 的 className 相符。

如果此对象的成员是 "*",则 p 的成员始终与其相符。

如果此对象的 objectName n1 是一个对象名模式,则在 n1.equals(n2) 或者 n1.apply(n2) 的情况下,p 的 objectName n2 与其相符。

将包括 queryMBeans 操作的权限视为还包括 queryNames

指定者:
Permission 中的 implies
参数:
p - 所要检查的权限。
返回:
如果此对象隐含指定的权限,则返回 true;否则返回 false。

equals

public boolean equals(Object obj)
检查两个 MBeanPermission 对象的相等性。检查 obj 是否为一个 MBeanPermission,并且检查是否和此对象具有相同的名称和操作。

指定者:
Permission 中的 equals
参数:
obj - 要与此对象进行相等性测试的对象。
返回:
如果 obj 是一个 MBeanPermission,并且与此 MBeanPermission 对象具有相同的名称和操作,则返回 true。
另请参见:
Object.hashCode(), Hashtable