java.lang.Object java.security.Permission javax.management.MBeanPermission
public class MBeanPermission
权限控制对 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.MBeanServerDelegate
和 javax.management.timer.Timer
进行访问。
类名模式也可以为空,或者只有单个字符 "*
",这两种情况都允许对任何类的访问。
成员。
对于所需的权限,这是正在访问的属性或操作名。对于没有引用属性或操作的操作,该成员为 null。
对于所拥有的权限,这要么是可以访问的属性或操作名,要么是空或单个字符 "*
",后面这两种情况都允许对任意成员的访问。
对象名。
对于所需的权限,这是正在访问的 MBean 的 ObjectName
。对于不引用单个 MBean 的操作而言,对象名为 null。它永远不会是对象名模式。
对于所拥有的权限,这是可访问的 MBean 或 MBeans 的 ObjectName
。可以是一个对象名模式,以允许访问其名称匹配该模式的所有 MBean。还可以为空,这样可访问所有 MBean 而不管其名称是什么。
如果拥有 MBeanPermission,则它只允许这四项都匹配的操作。
可将类名、成员和对象名一同写入单个字符串,这就是此权限的名称。权限的名称是 getName()
所返回的字符串。该字符串的格式为:
className#member[objectName]
使用常规的 ObjectName
语法写对象名称。它可包含任意合法字符,包括 ]
。由字符串中最后一个 ]
字符终止该字符串。
可省略一个或多个 className
、member
或 objectName
。如果省略的 member
,则 #
也可省略(但并非必须如此)。如果省略 objectName
,则 []
也可省略(但并非必须如此)。省略所有三项是不合法的,也就是说只有一个空字符串的名称 是不合法的。
className
、member
或 objectName
中的一个或多个可以是字符 "-
",这等同于 null 值。任意值隐含 null 值(包括另一个 null 值),但是 null 值并不隐含任意其他值。
在逗号分隔的操作列表中,每个操作的前后允许有空格。
构造方法摘要 | |
---|---|
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 |
构造方法详细信息 |
---|
public MBeanPermission(String name, String actions)
创建具有指定目标名称和操作的新 MBeanPermission 对象。
目标名称的形式为 "className#member[objectName]
",其中每部分都是可选的。不可以为空或 null。
actions 参数包含在目标名称上所允许的所需操作列表,该列表用逗号分隔。不可以为空或 null。
name
- 三部分的 "className#member[objectName]"。
actions
- 操作字符串。
IllegalArgumentException
- 如果
name
或
actions
无效。
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
- 操作字符串。
方法详细信息 |
---|
public String getActions()
Permission
中的
getActions
public int hashCode()
Permission
中的
hashCode
Object.equals(java.lang.Object)
,
Hashtable
public boolean implies(Permission p)
检查此 MBeanPermission 对象是否“隐含”指定的权限。
更明确地说,如果此方法满足以下条件,则返回 true:
如果此对象的 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
- 所要检查的权限。
public boolean equals(Object obj)
Permission
中的
equals
obj
- 要与此对象进行相等性测试的对象。
Object.hashCode()
,
Hashtable