- java.lang.Object
-
- java.security.Permission
-
- javax.management.MBeanPermission
-
- All Implemented Interfaces:
-
Serializable
,Guard
public class MBeanPermission extends Permission
控制访问MBeanServer操作的权限。 如果使用
System.setSecurityManager(java.lang.SecurityManager)
设置了安全管理器,则MBean服务器上的大多数操作都要求调用者的权限意味着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
以及其他类。类名称模式也可以是空的,也可以是单个字符“
*
”,两者都授予对任何类的访问权限。会员
对于您需要的权限,这是您正在访问的属性或操作的名称。 对于不引用属性或操作的操作,成员为空。
对于您拥有的权限,这是您可以访问的属性或操作的名称,或者是空的或单个字符“
*
”,两者都授予对任何成员的访问权限。对象名称 。
对于您需要的权限,这是您正在访问的MBean的
ObjectName
。 对于不引用单个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:
- 是addNotificationListener
- 的getAttribute
- getClassLoader
- getClassLoaderFor
- getClassLoaderRepository
- getDomains
- getMBeanInfo方法
- getObjectInstance
- 实例
- 调用
- isInstanceOf
- queryMBeans
- queryNames
- registerMBean
- 中的removeNotificationListener
- 的setAttribute
- unregisterMBean
在逗号分隔的动作列表中,每个动作之前和之后都允许使用空格。
- 从以下版本开始:
- 1.5
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 Constructor 描述 MBeanPermission(String name, String actions)
使用指定的目标名称和操作创建一个新的MBeanPermission对象。MBeanPermission(String className, String member, ObjectName objectName, String actions)
使用指定的目标名称(类名,成员,对象名称)和操作创建新的MBeanPermission对象。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 boolean
equals(Object obj)
检查两个MBeanPermission对象是否相等。String
getActions()
返回动作的“规范字符串表示”。int
hashCode()
返回此对象的哈希码值。boolean
implies(Permission p)
检查这个MBeanPermission对象是否“暗示”指定的权限。-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from class java.security.Permission
checkGuard, getName, newPermissionCollection, toString
-
-
-
-
构造方法详细信息
-
MBeanPermission
public MBeanPermission(String name, String actions)
使用指定的目标名称和操作创建一个新的MBeanPermission对象。
目标名称的格式为“
className#member[objectName]
”,其中每个部分都是可选的。 它不能为空或为空。actions参数包含在目标名称上授予的所需操作的逗号分隔列表。 它不能为空或为空。
- 参数
-
name
- 三元组“className#member [objectName]”。 -
actions
- 操作字符串。 - 异常
-
IllegalArgumentException
- 如果name
或actions
无效。
-
MBeanPermission
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
- 动作字符串。
-
-
方法详细信息
-
getActions
public String getActions()
返回动作的“规范字符串表示”。 也就是说,此方法总是按字母顺序返回当前操作。- Specified by:
-
getActions
在Permission
- 结果
- 规范字符串表示的动作。
-
hashCode
public int hashCode()
返回此对象的哈希码值。- Specified by:
-
hashCode
在Permission
- 结果
- 该对象的哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
implies
public boolean implies(Permission p)
检查这个MBeanPermission对象是否“暗示”指定的权限。
更具体地说,这个方法返回true:
- p是MBeanPermission的一个实例; 和
- p具有null className或p的className与此对象的className匹配; 和
- p具有null成员或p的成员匹配此对象的成员; 和
- p具有空对象名称或p的对象名称与此对象的对象名称相匹配; 和
- p的动作是这个对象的动作的一个子集
如果这个对象的className是“
*
”, p的className总是匹配它。 如果是“a.*
”, p的className与“a.
”开头匹配。如果此对象的成员是“
*
”, p的成员始终匹配它。如果此对象的objectName n1是对象名称模式,则p的objectName n2与
n1.equals(n2)
匹配,如果为n1.apply(n2)
。包括
queryMBeans
操作的权限也被认为包括queryNames
。- Specified by:
-
implies
在Permission
- 参数
-
p
- 允许检查。 - 结果
- 如果此对象隐含指定的权限,则为true,否则为false。
-
equals
public boolean equals(Object obj)
检查两个MBeanPermission对象是否相等。 检查obj是否为MBeanPermission,并具有与此对象相同的名称和操作。- Specified by:
-
equals
在Permission
- 参数
-
obj
- 我们正在测试与此对象相等的对象。 - 结果
- 如果obj是MBeanPermission,则为true,并且具有与此MBeanPermission对象相同的名称和操作。
- 另请参见:
-
Object.hashCode()
,HashMap
-
-