Класс AttachProvider
public abstract class AttachProvider extends Object
Провайдер подключения — это конкретный подкласс данного класса, имеющий конструктор без аргументов и реализующий приведённые ниже абстрактные методы.
Реализация провайдера подключения обычно связана с реализацией, версией или даже режимом работы виртуальной машины Java. Иными словами, конкретная реализация провайдера обычно способна подключаться только к определённой реализации или версии виртуальной машины Java. Например, реализация JDK от Oracle поставляется с реализациями провайдера, которые могут подключаться только к виртуальной машине HotSpot от Oracle. Как правило, если среда состоит из виртуальных машин Java разных версий и от разных поставщиков, для каждого семейства реализаций или версий будет существовать своя реализация провайдера подключения.
Провайдер подключения определяется его name и type. Имя обычно, но не обязательно, соответствует поставщику виртуальной машины. Например, реализация JDK от Oracle поставляется с провайдерами подключения, использующими имя пакета "sun" (по историческим причинам). Тип обычно соответствует механизму подключения. Например, реализация, использующая механизм межпроцессного взаимодействия Doors, может использовать тип "doors". Назначение имени и типа — идентификация провайдеров в средах, где установлено несколько провайдеров.
Реализации AttachProvider загружаются и создаются при первом вызове метода providers. Этот метод пытается загрузить все реализации провайдеров, установленные на платформе.
Все методы этого класса безопасны для использования несколькими параллельно работающими потоками.
- С версии:
- 1.6
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Инициализирует новый экземпляр этого класса. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
VirtualMachine |
attachVirtualMachine |
Подключается к виртуальной машине Java. |
abstract VirtualMachine |
attachVirtualMachine |
Подключается к виртуальной машине Java. |
abstract List |
listVirtualMachines() |
Перечисляет виртуальные машины Java, известные этому провайдеру. |
abstract String |
name() |
Возвращает имя этого провайдера. |
static List |
providers() |
Возвращает список установленных провайдеров подключения. |
abstract String |
type() |
Возвращает тип этого провайдера. |
Подробное описание конструкторов
AttachProvider
protected AttachProvider()
Подробное описание методов
name
public abstract String name()
- Возвращает:
- Имя этого провайдера
type
public abstract String type()
- Возвращает:
- Тип этого провайдера
attachVirtualMachine
public abstract VirtualMachine attachVirtualMachine(String id) throws AttachNotSupportedException, IOException
Виртуальная машина 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 можно описать с помощью объекта VirtualMachineDescriptor. Этот метод вызывает метод provider() дескриптора, чтобы проверить, совпадает ли он с этим провайдером. Затем метод пытается подключиться к виртуальной машине Java.
- Параметры:
-
vmd— Дескриптор виртуальной машины - Возвращает:
- Объект VirtualMachine, представляющий целевую виртуальную машину.
- Исключения:
-
AttachNotSupportedException— Если методprovider()дескриптора возвращает провайдера, отличного от этого провайдера, или дескриптор не соответствует виртуальной машине Java, к которой этот провайдер может подключиться. -
IOException— Если возникает другая ошибка ввода-вывода -
NullPointerException— Еслиvmdимеет значениеnull
listVirtualMachines
public abstract List<VirtualMachineDescriptor> listVirtualMachines()
Этот метод возвращает список объектов 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 загружаются и создаются (с помощью конструктора без аргументов) при первом вызове этого метода. Список, возвращаемый при первом вызове этого метода, является списком провайдеров. Последующие вызовы этого метода возвращают список тех же провайдеров. Список нельзя изменить.
- Возвращает:
- Список установленных провайдеров подключения.
© 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