Spec-Zone.ru › OpenJDK 25

Класс 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. Имя обычно, но не обязательно, соответствует поставщику виртуальной машины. Например, реализация JDK от Oracle поставляется с провайдерами подключения, использующими имя пакета "sun" (по историческим причинам). Тип обычно соответствует механизму подключения. Например, реализация, использующая механизм межпроцессного взаимодействия Doors, может использовать тип "doors". Назначение имени и типа — идентификация провайдеров в средах, где установлено несколько провайдеров.

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

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

С версии:
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()
Возвращает тип этого провайдера.

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

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

Подробное описание конструкторов

AttachProvider

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

Подробное описание методов

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, представляющий целевую виртуальную машину.
Исключения:
AttachNotSupportedException — Если идентификатор не удаётся разобрать, он соответствует несуществующей виртуальной машине Java или виртуальной машине Java, к которой этот провайдер не может подключиться.
IOException — Если возникает другая ошибка ввода-вывода
NullPointerException — Если id имеет значение null

attachVirtualMachine

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

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

Параметры:
vmd — Дескриптор виртуальной машины
Возвращает:
Объект VirtualMachine, представляющий целевую виртуальную машину.
Исключения:
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()
Возвращает список установленных провайдеров подключения.

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

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

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

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

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

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

Spec-Zone.ru

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