类 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 可以表示您 have 的权限或您 need 的权限。在检查敏感操作的权限时,会构造一个 MBeanPermission 来表示您需要的权限。仅当您拥有的权限imply您需要的权限时才允许该操作。

MBeanPermission 包含四项信息:

  • action。对于您需要的权限,这是列表 以下 中的操作之一。对于您拥有的权限,这是这些操作的逗号分隔列表,或 * ,代表所有操作。

    该操作由 getActions() 返回。

  • class name

    对于您需要的权限,这是您正在访问的 MBean 的类名,由 MBeanServer.getMBeanInfo(name) .getClassName() 返回。某些操作不引用类名,在这种情况下类名是空的。

    对于您拥有的权限,这是空的或 class name pattern 。类名模式是遵循 Java 点分隔类名约定的字符串。它可能以“.*”结尾,这意味着该权限授予对以“.*”之前的字符串开头的任何类的访问权限。例如,“javax.management.*”授予对 javax.management.MBeanServerDelegatejavax.management.timer.Timer 以及其他类的访问权限。

    类名模式也可以为空或单个字符“*”,这两者都授予对任何类的访问权限。

  • member

    对于您需要的权限,这是您正在访问的属性或操作的名称。对于不引用属性或操作的操作,该成员为空。

    对于您拥有的权限,这可以是您可以访问的属性或操作的名称,或者它是空的或单个字符“*”,这两者都向任何成员授予访问权限。

  • object name

    对于您需要的权限,这是您正在访问的 MBean 的 ObjectName 。对于不引用单个 MBean 的操作,它为空。它绝不是对象名称模式。

    对于您拥有的权限,这是您可以访问的一个或多个 MBean 的 ObjectName 。它可以是一个对象名称模式,以授予对名称与该模式匹配的所有 MBean 的访问权限。它也可以是空的,它授予对所有 MBean 的访问权限,无论它们的名称是什么。

如果您有 MBeanPermission,它仅在所有四个项目都匹配时才允许操作。

类名、成员、对象名可以写成一个字符串,就是这个权限的name。权限的名称是 getName() 返回的字符串。字符串的格式是:

className#member[objectName]

对象名称是使用 ObjectName 的常用语法编写的。它可能包含任何合法字符,包括 ] 。它以 ] 字符结束,该字符是字符串中的最后一个字符。

classNamememberobjectName 中的一个或多个可以省略。如果 member 被省略,则 # 可能也是(但不一定)。如果 objectName 被省略,则 [] 也可能被省略(但不一定是)。省略所有这三个项目是不合法的,也就是说,有一个空字符串 name

classNamememberobjectName 中的一个或多个可能是字符“- ”,相当于空值。任何值(包括另一个空值)都隐含空值,但不隐含任何其他值。

可能的操作是:

  • addNotificationListener
  • getAttribute
  • getClassLoader
  • getClassLoaderFor
  • getClassLoaderRepository
  • getDomains
  • getMBeanInfo
  • getObjectInstance
  • 实例化
  • invoke
  • isInstanceOf
  • queryMBeans
  • queryNames
  • 注册MBean
  • removeNotificationListener
  • setAttribute
  • unregisterMBean

在以逗号分隔的操作列表中,每个操作前后允许有空格。

自从:
1.5
参见:
  • 构造方法详细信息

    • MBeanPermission

      public MBeanPermission(String  name, String  actions)

      使用指定的目标名称和操作创建一个新的 MBeanPermission 对象。

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

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

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

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

      使用指定的目标名称(类名、成员、对象名)和操作创建一个新的 MBeanPermission 对象。

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

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

      参数:
      className - 此权限适用的类名。可以为 null 或 "-" ,表示由任何类名暗示但不暗示任何其他类名的类名。
      member - 此权限适用的成员。可以为 null 或 "-" ,表示由任何成员暗示但不暗示任何其他成员的成员。
      objectName - 此权限适用的对象名称。可以为null,表示一个对象名,它被任何对象名隐含但不隐含任何其他对象名。
      actions - 动作字符串。
  • 方法详情

    • getActions

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

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

      public boolean implies(Permission  p)

      检查此 MBeanPermission 对象是否“暗示”了指定的权限。

      更具体地说,如果出现以下情况,此方法将返回 true:

      • p是 MBeanPermission 的实例;和
      • p有一个空类名或p的类名与此对象的类名匹配;和
      • p有一个空成员或p的成员匹配此对象的成员;和
      • p具有空对象名称或p的对象名称与此对象的对象名称匹配;和
      • p的动作是该对象动作的子集

      如果这个对象的类名是“*”,p的类名总是匹配它。如果是“a.*”,p如果它以“a.”开头,则它的类名匹配它。

      如果这个对象的成员是“*”,p的成员总是匹配它。

      如果这个对象的 objectNamen1是一个对象名称模式,p的对象名称n2如果 n1.equals(n2) n1.apply(n2) 匹配它。

      包含 queryMBeans 操作的权限也被视为包含 queryNames

      指定者:
      implies 在类 Permission
      参数:
      p - 检查的权限。
      返回:
      如果此对象隐含了指定的权限,则为 true,否则为 false。
    • equals

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