模块  jdk.attach

Class AttachProvider


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

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

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

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

    在第一次调用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()
        返回已安装的附加提供程序的列表。

        如果满足以下条件,则会在平台上安装AttachProvider:

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

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

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

        结果
        已安装的附加提供程序列表。