Module  java.management
软件包  javax.management

Class MBeanPermission

  • All Implemented Interfaces:
    SerializableGuard


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

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

    • 会员

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

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

    • 对象名称

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

      对于您拥有的权限,这是您可以访问的MBean或MBean的ObjectName 它可以是一个对象名称模式,用于授予对名称与模式匹配的所有MBean的访问权限。 它也可以是空的,它允许访问所有MBeans,无论他们的名字。

    如果您有一个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:
        getActionsPermission
        结果
        规范字符串表示的动作。
      • 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是对象名称模式,则pobjectName n2n1.equals(n2)匹配,如果为n1.apply(n2)

        包括queryMBeans操作的权限也被认为包括queryNames

        Specified by:
        impliesPermission
        参数
        p - 允许检查。
        结果
        如果此对象隐含指定的权限,则为true,否则为false。
      • equals

        public boolean equals​(Object obj)
        检查两个MBeanPermission对象是否相等。 检查obj是否为MBeanPermission,并具有与此对象相同的名称和操作。
        Specified by:
        equalsPermission
        参数
        obj - 我们正在测试与此对象相等的对象。
        结果
        如果obj是MBeanPermission,则为true,并且具有与此MBeanPermission对象相同的名称和操作。
        另请参见:
        Object.hashCode()HashMap