- 所有已实现的接口:
-
Serializable
,Guard
控制对MBeanServer操作的权限。如果使用System.setSecurityManager(java.lang.SecurityManager)
设置了安全管理器,则对MBean Server上的大多数操作要求调用者的权限暗示适合操作的MBeanPermission。这在MBeanServer
接口的文档中有详细描述。
与其他Permission
对象一样,MBeanPermission可以表示您拥有的权限或您需要的权限。在检查敏感操作的权限时,将构造一个表示您需要的权限的MBeanPermission。只有当您拥有的权限暗示您需要的权限时,才允许执行该操作。
MBeanPermission包含四个信息项:
-
操作。对于您需要的权限,这是下面列表中的一个操作。对于您拥有的权限,这是这些操作中的一个逗号分隔的列表,或者是
*
,表示所有操作。操作由
getActions()
返回。 -
类名。
对于您需要的权限,这是您正在访问的MBean的类名,由
MBeanServer.getMBeanInfo(name)
返回。某些操作不引用类名,在这种情况下,类名为null。对于您拥有的权限,这可能为空或为类名模式。类名模式是遵循Java约定的点分隔类名的字符串。它可能以"
.*
"结尾,表示权限授予对以前面的字符串开头的任何类的访问权限。例如,"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
的通常语法编写。它可以包含任何合法字符,包括]
。它以]
字符结尾,该字符是字符串中的最后一个字符。
类名、成员或对象名称中的一个或多个可以省略。如果省略了member
,则#
也可以省略(但不必须)。如果省略了objectName
,则[]
也可以省略(但不必须)。不合法的是省略所有三个项目,即具有空字符串的名称。
类名、成员或对象名称中的一个或多个可以是字符"-
",它等效于空值。空值由任何值(包括另一个空值)隐含,但不隐含任何其他值。
- addNotificationListener
- getAttribute
- getClassLoader
- getClassLoaderFor
- getClassLoaderRepository
- getDomains
- getMBeanInfo
- getObjectInstance
- instantiate
- invoke
- isInstanceOf
- queryMBeans
- queryNames
- registerMBean
- removeNotificationListener
- setAttribute
- unregisterMBean
在操作的逗号分隔列表中,允许在每个操作之前和之后有空格。
- 自:
- 1.5
- 参见:
-
Constructor Summary
ConstructorDescriptionMBeanPermission
(String name, String actions) 创建具有指定目标名称和操作的新MBeanPermission对象。MBeanPermission
(String className, String member, ObjectName objectName, String actions) 创建具有指定目标名称(类名、成员、对象名称)和操作的新MBeanPermission对象。 -
Method Summary
Modifier and TypeMethodDescriptionboolean
检查两个MBeanPermission对象是否相等。返回操作的“规范字符串表示”。int
hashCode()
返回此对象的哈希码值。boolean
检查此MBeanPermission对象是否“暗示”指定的权限。Methods declared in class java.security.Permission
checkGuard, getName, newPermissionCollection, toString
-
Constructor Details
-
MBeanPermission
创建具有指定目标名称和操作的新MBeanPermission对象。
目标名称的格式为“
className#member[objectName]
”,其中每个部分都是可选的。它不能是空的或null。操作参数包含在目标名称上授予的所需操作的逗号分隔列表。它不能是空的或null。
- 参数:
-
name
- 三元组“className#member[objectName]”。 -
actions
- 操作字符串。 - 抛出:
-
IllegalArgumentException
- 如果name
或actions
无效。
-
MBeanPermission
创建具有指定目标名称(类名、成员、对象名称)和操作的新MBeanPermission对象。
类名、成员和对象名称参数定义了一个格式为“
className#member[objectName]
”的目标名称,其中每个部分都是可选的。这将是生成的MBeanPermission上Permission.getName()
的结果。操作参数包含在目标名称上授予的所需操作的逗号分隔列表。它不能是空的或null。
- 参数:
-
className
- 此权限适用的类名。可以为null或"-"
,表示由任何类名隐含的类名,但不隐含任何其他类名。 -
member
- 此权限适用的成员。可以为null或"-"
,表示由任何成员隐含的成员,但不隐含任何其他成员。 -
objectName
- 此权限适用的对象名称。可以为null,表示由任何对象名称隐含的对象名称,但不隐含任何其他对象名称。 -
actions
- 操作字符串。
-
-
Method Details
-
getActions
返回操作的“规范字符串表示”。换句话说,此方法始终以字母顺序返回当前操作。- 指定者:
-
getActions
在类Permission
中 - 返回:
- 操作的规范字符串表示。
-
hashCode
public int hashCode()返回此对象的哈希码值。- 指定者:
-
hashCode
在类Permission
中 - 返回:
- 此对象的哈希码值。
- 参见:
-
implies
检查此MBeanPermission对象是否“暗示”指定的权限。
更具体地说,如果:
- p是MBeanPermission的一个实例;并且
- p具有空的类名或p的类名与此对象的类名匹配;并且
- p具有空的成员或p的成员与此对象的成员匹配;并且
- p具有空的对象名称或p的对象名称与此对象的对象名称匹配;并且
- p的操作是此对象的操作的子集
如果此对象的类名为“
*
”,则p的类名始终与之匹配。如果它为“a.*
”,则p的类名匹配,如果以“a.
”开头。如果此对象的成员为“
*
”,则p的成员始终与之匹配。如果此对象的对象名称n1是对象名称模式,则p的对象名称n2匹配,如果
n1.equals(n2)
或n1.apply(n2)
。包含
queryMBeans
操作的权限被视为包含queryNames
。- 指定者:
-
implies
在类Permission
- 参数:
-
p
- 要检查的权限。 - 返回:
- 如果指定的权限被此对象隐含,则为true,否则为false。
-
equals
检查两个MBeanPermission对象是否相等。检查obj是否为MBeanPermission,并且具有与此对象相同的名称和操作。- 指定者:
-
equals
在类Permission
- 参数:
-
obj
- 我们正在测试与此对象相等性的对象。 - 返回:
- 如果obj是MBeanPermission,并且具有与此MBeanPermission对象相同的名称和操作,则为true。
- 参见:
-