Класс AttachProvider

public abstract class AttachProvider
extends Object

Класс-провайдер для подключения к виртуальной машине Java.

Провайдер подключения — это конкретный подкласс этого класса, имеющий конструктор без аргументов и реализующий абстрактные методы, указанные ниже.

Реализация провайдера подключения обычно связана с реализацией, версией или даже режимом работы виртуальной машины Java. То есть, конкретная реализация провайдера обычно способна подключаться только к определенной реализации или версии виртуальной машины Java. Например, реализация Sun JDK поставляется с реализациями провайдеров, которые могут подключаться только к виртуальной машине Sun HotSpot. В целом, если среда содержит виртуальные машины Java разных версий и разных поставщиков, то для каждой семейства реализаций или версий будет реализация провайдера подключения.

Провайдер подключения идентифицируется по своему name и type. Имя обычно, но не обязательно, соответствует имени поставщика ВМ. Например, реализация Sun JDK поставляется с провайдерами подключения, использующими имя "sun". Тип обычно соответствует механизму подключения. Например, реализация, использующая механизм межпроцессного взаимодействия Doors, может использовать тип "doors". Назначение имени и типа заключается в идентификации провайдеров в средах, где установлено несколько провайдеров.

Реализации AttachProvider загружаются и инициализируются при первом вызове метода providers. Этот метод пытается загрузить все реализации провайдеров, установленные в платформе.

Все методы в этом классе безопасны для использования несколькими потоками.

Since:
1.6

Конструкторы

Модификатор Конструктор Описание
protected AttachProvider()

Инициализирует новый экземпляр этого класса.

Методы

Модификатор и тип Метод Описание
VirtualMachine attachVirtualMachine​(VirtualMachineDescriptor vmd)

Подключается к виртуальной машине Java.

abstract VirtualMachine attachVirtualMachine​(String id)

Подключается к виртуальной машине Java.

abstract List<VirtualMachineDescriptor> listVirtualMachines()

Перечисляет виртуальные машины Java, известные этому провайдеру.

abstract String name()

Возвращает имя этого провайдера.

static List<AttachProvider> providers()

Возвращает список установленных провайдеров подключения.

abstract String type()

Возвращает тип этого провайдера.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Конструкторы

AttachProvider

protected AttachProvider()

Инициализирует новый экземпляр этого класса.

Throws:
SecurityException - Если установлен менеджер безопасности и он отказывается от AttachPermission ("createAttachProvider")

Методы

name

public abstract String name()

Возвращает имя этого провайдера.

Returns:
Имя этого провайдера

type

public abstract String type()

Возвращает тип этого провайдера.

Returns:
Тип этого провайдера

attachVirtualMachine

public abstract VirtualMachine attachVirtualMachine(String id)
                                             throws AttachNotSupportedException,
                                                    IOException

Подключается к виртуальной машине Java.

Виртуальная машина Java идентифицируется абстрактным идентификатором. Природа этого идентификатора зависит от платформы, но во многих случаях это будет строковое представление идентификатора процесса (или pid).

Этот метод анализирует идентификатор и сопоставляет его с виртуальной машиной Java (зависимо от реализации). Если провайдер не может проанализировать идентификатор, выбрасывается исключение AttachNotSupportedException. После анализа этот метод пытается подключиться к виртуальной машине Java. Если провайдер обнаруживает, что идентификатор соответствует виртуальной машине, которой не существует, или что виртуальная машина не поддерживает механизм подключения, реализованный этим провайдером, или что виртуальная машина имеет версию, к которой этот провайдер не может подключиться, выбрасывается исключение AttachNotSupportedException.

Parameters:
id - Абстрактный идентификатор, идентифицирующий виртуальную машину Java.
Returns:
VirtualMachine, представляющий целевую виртуальную машину.
Throws:
SecurityException - Если установлен менеджер безопасности и он отказывается от AttachPermission ("attachVirtualMachine"), или других разрешений, необходимых реализации.
AttachNotSupportedException - Если идентификатор не может быть проанализирован, или он соответствует виртуальной машине, которой не существует, или виртуальной машине, к которой этот провайдер не может подключиться.
IOException - Если произошла другая ошибка ввода/вывода
NullPointerException - Если id null

attachVirtualMachine

public VirtualMachine attachVirtualMachine(VirtualMachineDescriptor vmd)
                                    throws AttachNotSupportedException,
                                           IOException

Подключается к виртуальной машине Java.

Виртуальную машину Java можно описать с помощью VirtualMachineDescriptor. Этот метод вызывает метод provider() дескриптора, чтобы проверить, равен ли он этому провайдеру. Затем он пытается подключиться к виртуальной машине Java.

Parameters:
vmd - Дескриптор виртуальной машины
Returns:
VirtualMachine, представляющий целевую виртуальную машину.
Throws:
SecurityException - Если установлен менеджер безопасности и он отказывается от AttachPermission ("attachVirtualMachine"), или других разрешений, необходимых реализации.
AttachNotSupportedException - Если метод provider() дескриптора возвращает провайдер, который не является этим провайдером, или он не соответствует виртуальной машине Java, к которой этот провайдер может подключиться.
IOException - Если произошла другая ошибка ввода/вывода
NullPointerException - Если vmd null

listVirtualMachines

public abstract List<VirtualMachineDescriptor> listVirtualMachines()

Перечисляет виртуальные машины Java, известные этому провайдеру.

Этот метод возвращает список элементов VirtualMachineDescriptor. Каждый VirtualMachineDescriptor описывает виртуальную машину Java, к которой этот провайдер может потенциально подключиться. Нет никакой гарантии, что вызов attachVirtualMachine для каждого дескриптора в списке будет успешным.

Returns:
Список дескрипторов виртуальных машин, описывающих виртуальные машины Java, известные этому провайдеру (может быть пустым).

providers

public static List<AttachProvider> providers()

Возвращает список установленных провайдеров подключения.

Провайдер AttachProvider установлен в платформе, если:

  • Он установлен в JAR-файле, видимом для загрузчика классов, определяющего тип AttachProvider (обычно, но не обязательно, system class loader).
  • JAR-файл содержит конфигурацию провайдера с именем com.sun.tools.attach.spi.AttachProvider в каталоге ресурсов META-INF/services.
  • Файл конфигурации провайдера перечисляет полное имя класса реализации AttachProvider.

Формат файла конфигурации провайдера — по одному полному имени класса на строке. Пробелы и символы табуляции вокруг каждого имени класса, а также пустые строки игнорируются. Символ комментария — '#' (0x23), и все символы на каждой строке после первого символа комментария игнорируются. Файл должен быть закодирован в UTF-8.

Реализации AttachProvider загружаются и инициализируются (используя конструктор без аргументов) при первом вызове этого метода. Список, возвращаемый первым вызовом этого метода, является списком провайдеров. Последующие вызовы этого метода возвращают список тех же провайдеров. Список неизменяемый.

Returns:
Список установленных провайдеров подключения.

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/jdk.attach/com/sun/tools/attach/spi/AttachProvider.html

Spec-Zone .ru
спецификации, руководства, описания, API