public class MBeanPermission extends Permission
控制访问MBeanServer操作的权限。 如果使用System.setSecurityManager(java.lang.SecurityManager)
设置了安全管理器,则MBean Server上的大多数操作都要求调用者的权限意味着MBeanPermission适用于该操作。 对此进行了详细的文档中描述MBeanServer
接口。
与其他Permission
对象一样,MBeanPermission可以表示您拥有的权限或您需要的权限。 当敏感操作被检查许可时,构造一个MBeanPermission表示您需要的权限。 如果权限您的操作只能imply您需要的许可。
MBeanPermission包含四个信息项:
行动 。 对于您需要的许可,这是列表below中的一个操作。 对于您拥有的许可,这是这些操作的逗号分隔列表,或*
,表示所有操作。
动作由getActions()
返回。
班级名称
对于您需要的权限,这是您正在访问的MBean的类名,由MBeanServer.getMBeanInfo(name)
返回。 getClassName()
。 某些操作不引用类名,在这种情况下,类名为null。
对于您拥有的权限,这是空的或类名称模式 。 类名称模式是符合点分隔类名称的Java约定的字符串。 它可以以“ .*
”结尾,这意味着权限允许访问以“ .*
”之前的字符串开头的任何类。 例如,“ javax.management.*
”允许访问javax.management.MBeanServerDelegate
和javax.management.timer.Timer
等。
类名称模式也可以是空的,也可以是单个字符“ *
”,两者都授予对任何类的访问权限。
会员
对于您需要的权限,这是您正在访问的属性或操作的名称。 对于不引用属性或操作的操作,成员为空。
对于您拥有的权限,这是您可以访问的属性或操作的名称,或者是空的或单个字符“ *
”,两者都授予对任何成员的访问权限。
对象名称 。
你需要一个许可,这是ObjectName
您正在访问的MBean的。 对于不引用单个MBean的操作,它为null。 它从来不是一个对象名称模式。
对于您拥有的许可,这是您可以访问的MBean或MBean的ObjectName
。 它可以是一个对象名称模式,用于授予对名称与模式匹配的所有MBean的访问权限。 它也可能是空的,它允许访问所有MBeans,无论他们的名字。
如果您有一个MBeanPermission,只有当所有四个项目匹配时才允许操作。
类名,成员和对象名称可以一起写成单个字符串,这是该权限的名称 。 权限的名称是由getName()
返回的字符串。 字符串的格式是:
className#member[objectName]
对象名称使用ObjectName
的通常语法编写 。 它可能包含任何合法字符,包括]
。 它是由一个终止]
字符是字符串中的最后一个字符。
一个或多个所述的className
, member
,或objectName
可以省略。 如果member
被省略, #
可能太(但不是必须的)。 如果省略objectName
,那么[]
可能也是(但不一定要)。 省略所有三个项目是不合法的,即一个名称是空字符串。
一个或多个所述的className
, member
,或objectName
可以是字符“ -
”,其等同于一个空值。 任何值(包括另一个空值)都暗示空值,但不表示任何其他值。
The possible actions are these:
在逗号分隔的动作列表中,每个动作之前和之后都允许使用空格。
Constructor and Description |
---|
MBeanPermission(String name, String actions)
使用指定的目标名称和操作创建一个新的MBeanPermission对象。
|
MBeanPermission(String className, String member, ObjectName objectName, String actions)
使用指定的目标名称(类名,成员,对象名称)和操作创建一个新的MBeanPermission对象。
|
Modifier and Type | Method and Description |
---|---|
boolean |
equals(Object obj)
检查两个MBeanPermission对象是否相等。
|
String |
getActions()
返回动作的“规范字符串表示”。
|
int |
hashCode()
返回此对象的哈希码值。
|
boolean |
implies(Permission p)
检查这个MBeanPermission对象是否“暗示”指定的权限。
|
checkGuard, getName, newPermissionCollection, toString
public MBeanPermission(String name, String actions)
使用指定的目标名称和操作创建一个新的MBeanPermission对象。
目标名称的格式为“ className#member[objectName]
”,其中每个部分都是可选的。 它不能为空或为空。
actions参数包含在目标名称上授予的所需操作的逗号分隔列表。 它不能为空或为空。
name
- 三元组“className#member [objectName]”。
actions
- 动作字符串。
IllegalArgumentException
- 如果
name
或
actions
无效。
public MBeanPermission(String className, String member, ObjectName objectName, String actions)
使用指定的目标名称(类名,成员,对象名称)和操作创建一个新的MBeanPermission对象。
类名,成员和对象名称参数定义“ className#member[objectName]
”表单的目标名称,其中每个部分都是可选的。 这将是结果MBeanPermission上的Permission.getName()
的结果。
actions参数包含在目标名称上授予的所需操作的逗号分隔列表。 它不能为空或为空。
className
- 此权限适用的类名称。
可以为null或"-"
,它表示任何类名称隐含但不暗示任何其他类名的类名。
member
- 此权限适用的成员。
可以是null或"-"
,它代表任何成员暗示但不暗示任何其他成员的成员。
objectName
- 此权限适用的对象名称。
可能为null,表示任何对象名称隐含但不暗示任何其他对象名称的对象名称。
actions
- 动作字符串。
public String getActions()
getActions
在
Permission
public int hashCode()
hashCode
在
Permission
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public boolean implies(Permission p)
检查这个MBeanPermission对象是否“暗示”指定的权限。
更具体地说,这个方法返回true:
如果此对象的className为“ *
”, p的className始终与之匹配。 如果是“ a.*
”, p的className与“ a.
”开头匹配。
如果此对象的成员是“ *
”, p的成员始终匹配它。
如果此对象的objectName n1是对象名称模式,则p的objectName n2与n1.equals(n2)
匹配,如果为 n1.apply(n2)
。
包括queryMBeans
操作的权限也被认为包括queryNames
。
implies
在
Permission
p
- 允许检查。
public boolean equals(Object obj)
equals
在类别
Permission
obj
- 我们正在测试与此对象相等的对象。
Object.hashCode()
, HashMap