Module java.management
Package javax.management

Class MBeanPermission

java.lang.Object
java.security.Permission
javax.management.MBeanPermission
所有已实现的接口:
Serializable, Guard

public class MBeanPermission extends Permission

控制对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.MBeanServerDelegatejavax.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 Details

    • MBeanPermission

      public MBeanPermission(String name, String actions)

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

      目标名称的格式为“className#member[objectName]”,其中每个部分都是可选的。它不能是空的或null。

      操作参数包含在目标名称上授予的所需操作的逗号分隔列表。它不能是空的或null。

      参数:
      name - 三元组“className#member[objectName]”。
      actions - 操作字符串。
      抛出:
      IllegalArgumentException - 如果nameactions无效。
    • MBeanPermission

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

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

      类名、成员和对象名称参数定义了一个格式为“className#member[objectName]”的目标名称,其中每个部分都是可选的。这将是生成的MBeanPermission上Permission.getName()的结果。

      操作参数包含在目标名称上授予的所需操作的逗号分隔列表。它不能是空的或null。

      参数:
      className - 此权限适用的类名。可以为null或"-",表示由任何类名隐含的类名,但不隐含任何其他类名。
      member - 此权限适用的成员。可以为null或"-",表示由任何成员隐含的成员,但不隐含任何其他成员。
      objectName - 此权限适用的对象名称。可以为null,表示由任何对象名称隐含的对象名称,但不隐含任何其他对象名称。
      actions - 操作字符串。
  • Method Details

    • getActions

      public String getActions()
      返回操作的“规范字符串表示”。换句话说,此方法始终以字母顺序返回当前操作。
      指定者:
      getActions 在类 Permission
      返回:
      操作的规范字符串表示。
    • hashCode

      public int hashCode()
      返回此对象的哈希码值。
      指定者:
      hashCode 在类 Permission
      返回:
      此对象的哈希码值。
      参见:
    • implies

      public boolean implies(Permission p)

      检查此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

      public boolean equals(Object obj)
      检查两个MBeanPermission对象是否相等。检查obj是否为MBeanPermission,并且具有与此对象相同的名称和操作。
      指定者:
      equals 在类 Permission
      参数:
      obj - 我们正在测试与此对象相等性的对象。
      返回:
      如果obj是MBeanPermission,并且具有与此MBeanPermission对象相同的名称和操作,则为true。
      参见: