模块  java.management
软件包  javax.management

Class MBeanPermission

  • 实现的所有接口
    SerializableGuard

    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.MBeanServerDelegatejavax.management.timer.Timer以及其他类别的权限。

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

    • 会员

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

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

    • 对象名称

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

      对于您拥有的权限,这是您可以访问的MBean或MBean的ObjectName 它可能是一个对象名称模式,用于授予对名称与模式匹配的所有MBean的访问权限。 它也可能是空的,无论其名称如何,都可以访问所有MBean。

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

    类名,成员和对象名可以作为单个字符串一起写入,该字符串是此权限的名称 权限的名称是getName()返回的字符串。 字符串的格式是:

    className#member[objectName]

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

    一个或多个所述的classNamemember ,或objectName可以省略。 如果省略member ,则#可能也是(但不一定是)。 如果省略objectName ,则[]可能也是(但不一定是)。 省略所有三个项目是不合法的,即具有空字符串的名称

    一个或多个所述的classNamemember ,或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
    • 构造方法详细信息

      • MBeanPermission

        public MBeanPermission​(String name,
                               String actions)

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

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

        actions参数包含以逗号分隔的列表,列出了在目标名称上授予的所需操作。 它不能为空或为空。

        参数
        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()的结果。

        actions参数包含以逗号分隔的列表,列出了在目标名称上授予的所需操作。 它不能为空或为空。

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

      • getActions

        public String getActions()
        返回操作的“规范字符串表示形式”。 也就是说,此方法始终按字母顺序返回当前操作。
        Specified by:
        getActions在类 Permission
        结果
        行为的规范字符串表示。
      • implies

        public boolean implies​(Permission p)

        检查此MBeanPermission对象是否“隐含”指定的权限。

        更具体地说,如果满足以下条件,则此方

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

        如果此对象的className是“ * ”,则p的className始终匹配它。 如果是“ a.* ”,则p的className如果以“ a. ”开头,则匹配它。

        如果此对象的成员是“ * ”,则p的成员始终与其匹配。

        如果此对象的objectName n1是对象名称模式,则pobjectName n2n1.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