Module  jdk.attach

Class AttachProvider



  • public abstract class AttachProvider
    extends Object
    附加提供程序类以附加到Java虚拟机。

    附加提供者是这个类的具体子类,它具有零参数的构造函数,并实现下面指定的抽象方法。

    附加提供商实现通常与Java虚拟机实现,版本或甚至操作模式相关联。 也就是说,特定的提供者实现通常只能附加到特定的Java虚拟机实现或版本。 例如,Sun的JDK实现随附提供者实现,只能附加到Sun的HotSpot虚拟机。 一般来说,如果环境由不同版本的Java虚拟机和不同的供应商组成,那么每个实现或版本系列都将有一个附加提供程序实现。

    附件提供商由其nametype标识 名称通常是但不是必须是与VM供应商对应的名称。 例如,Sun JDK实现附带使用名称为“sun”的附加提供程序。 类型通常对应于附接机制。 例如,使用门进程间通信机制的实现可能使用类型“门” 名称和类型的目的是在安装了多个提供程序的环境中识别提供程序。

    在第一次调用providers方法时,AttachProvider实现被加载和实例化。 此方法尝试加载安装在平台上的所有提供程序实现。

    此类中的所有方法都可以安全地被多个并发线程使用。

    从以下版本开始:
    1.6
    • 构造方法详细信息

      • AttachProvider

        protected AttachProvider​()
        初始化此类的新实例。
        异常
        SecurityException - 如果安全管理器已安装,并且它拒绝AttachPermission (“ createAttachProvider ”)
    • 方法详细信息

      • name

        public abstract String name​()
        返回此提供商的名称。
        结果
        这个提供者的名字
      • type

        public abstract String type​()
        返回此提供商的类型。
        结果
        这个提供者的类型
      • attachVirtualMachine

        public abstract VirtualMachine attachVirtualMachine​(String id)
                                                     throws AttachNotSupportedException,
                                                            IOException
        附加到Java虚拟机。

        Java虚拟机由抽象标识符标识。 此标识符的性质取决于平台,但在许多情况下,它将是进程标识符(或pid)的字符串表示形式。

        该方法解析标识符并将标识符映射到Java虚拟机(以实现方式依赖的方式)。 如果标识符不能由提供商解析,则抛出一个AttachNotSupportedException 一旦解析,此方法将尝试附加到Java虚拟机。 如果提供程序检测到标识符对应于不存在的Java虚拟机,或者对应于不支持此提供程序实现的附加机制的Java虚拟机,或者它检测到Java虚拟机是一个版本这个提供者不能附加,那么抛出一个AttachNotSupportedException

        参数
        id - 标识Java虚拟机的抽象标识符。
        结果
        VirtualMachine表示目标虚拟机。
        异常
        SecurityException - 如果已安装安全管理员,并且拒绝了AttachPermission (“ attachVirtualMachine ”)或实施所需的其他权限。
        AttachNotSupportedException - 如果标识符无法解析,或者对应于不存在的Java虚拟机,或者对应于此提供程序无法附加的Java虚拟机。
        IOException - 如果发生其他I / O错误
        NullPointerException - 如果 idnull
      • listVirtualMachines

        public abstract List<VirtualMachineDescriptor> listVirtualMachines​()
        列出此提供程序已知的Java虚拟机。

        此方法返回VirtualMachineDescriptor元素的列表。 每个VirtualMachineDescriptor描述了该提供程序可能附加到的Java虚拟机。 没有任何保证在列表中的每个描述符上调用attachVirtualMachine将成功。

        结果
        描述此提供程序已知的Java虚拟机的虚拟机描述符列表(可能为空)。
      • providers

        public static List<AttachProvider> providers​()
        返回已安装附件提供商的列表。

        如果以下情况,则在Platform平台上安装AttachProvider:

        • 它被安装在一个JAR文件是将AttachProvider类型的定义类装载程序可见的(通常,但不是必需的, system class loader )。
        • JAR文件包含资源目录META-INF/services名为com.sun.tools.attach.spi.AttachProvider的提供程序配置。
        • 提供者配置文件列出了AttachProvider实现的全限定类名。

        提供程序配置文件的格式是每行一个完全限定的类名。 围绕每个类名称的空格和制表符字符以及空白行都将被忽略。 注释字符为'#'0x23 ),并且在每行上,忽略第一个注释字符后面的所有字符。 文件必须以UTF-8编码。

        在首次调用此方法时,AttachProvider实现将被加载和实例化(使用零参数构造函数)。 第一次调用此方法返回的列表是提供程序列表。 此方法的后续调用返回相同提供程序的列表。 该列表是不可修改的。

        结果
        已安装附件提供商的列表。