Spec-Zone.ru › OpenJDK 17

Класс AttachProvider

java.lang.Object
com.sun.tools.attach.spi.AttachProvider
public abstract class AttachProvider extends Object
Класс поставщика прикрепления для подключения к виртуальной машине Java.

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

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

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

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

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

Since:
1.6

Краткое описание конструкторов

AttachProvider()
Модификатор Конструктор Описание
protected
Инициализирует новый экземпляр этого класса.

Краткое описание методов

Модификатор и тип Метод Описание
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()
Инициализирует новый экземпляр этого класса.
Возбуждает:
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 - Если произошла другая ошибка ввода-вывода
NullPointerException - Если id является null

attachVirtualMachine

public VirtualMachine attachVirtualMachine(VirtualMachineDescriptor vmd) throws AttachNotSupportedException, IOException
Подключается к виртуальной машине Java.

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

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

listVirtualMachines

public abstract List<VirtualMachineDescriptor> listVirtualMachines()
Перечисляет виртуальные машины Java, известные этому поставщику.

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

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

providers

public static List<AttachProvider> providers()
Возвращает список установленных поставщиков прикрепления.

Поставщик прикрепления устанавливается в платформе, если:

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

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

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

Возвращает:
Список установленных поставщиков прикрепления.

© 1993, 2021, 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/17/docs/api/jdk.attach/com/sun/tools/attach/spi/AttachProvider.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API