Класс AttachProvider
public abstract class AttachProvider extends Object
Поставщик подключения — это конкретный подкласс этого класса, имеющий конструктор без аргументов и реализующий абстрактные методы, указанные ниже.
Реализация поставщика подключения обычно связана с реализацией виртуальной Java-машины, её версией или даже режимом работы. То есть, конкретная реализация поставщика обычно может подключаться только к определённой реализации виртуальной Java-машины или версии. Например, реализация JDK от Oracle поставляется с реализациями поставщиков, которые могут подключаться только к виртуальной машине HotSpot от Oracle. В общем случае, если среда содержит виртуальные Java-машины разных версий и от разных поставщиков, то для каждой семейства реализаций или версий будет реализация поставщика подключения.
Поставщик подключения идентифицируется по своему имени (name) и типу (type). Имя обычно, но не обязательно, соответствует имени поставщика VM. Например, реализация Oracle JDK поставляется с поставщиками подключения, которые используют имя пакета "sun" (по историческим причинам). Тип обычно соответствует механизму подключения. Например, реализация, использующая механизм межпроцессного взаимодействия Doors, может использовать тип "doors". Цель имени и типа — идентифицировать поставщиков в средах, где установлено несколько поставщиков.
Реализации AttachProvider загружаются и создаются при первом вызове метода providers. Этот метод пытается загрузить все реализации поставщиков, установленные в платформе.
Все методы в этом классе безопасны для использования в нескольких потоках.
- Since:
- 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()
- Returns:
- Имя этого поставщика
type
public abstract String type()
- Returns:
- Тип этого поставщика
attachVirtualMachine
public abstract VirtualMachine attachVirtualMachine(String id) throws AttachNotSupportedException, IOException
Виртуальная Java-машина идентифицируется абстрактным идентификатором. Природа этого идентификатора зависит от платформы, но во многих случаях это будет строковое представление идентификатора процесса (или PID).
Этот метод анализирует идентификатор и сопоставляет его с виртуальной Java-машиной (зависит от реализации). Если поставщик не может проанализировать идентификатор, то выбрасывается AttachNotSupportedException. После анализа метод пытается подключиться к виртуальной Java-машине. Если поставщик обнаруживает, что идентификатор соответствует не существующей виртуальной Java-машине, или он соответствует виртуальной Java-машине, которая не поддерживает механизм подключения, реализованный этим поставщиком, или обнаруживает, что виртуальная Java-машина — это версия, к которой этот поставщик не может подключиться, то выбрасывается AttachNotSupportedException.
- Parameters:
-
id- Абстрактный идентификатор, определяющий виртуальную Java-машину. - Returns:
- VirtualMachine, представляющий целевую виртуальную машину.
- Throws:
-
AttachNotSupportedException- Если идентификатор не может быть проанализирован или он соответствует не существующей виртуальной Java-машине, или к которой этот поставщик не может подключиться. -
IOException- Если произошла другая ошибка ввода-вывода -
NullPointerException- Еслиidявляетсяnull
attachVirtualMachine
public VirtualMachine attachVirtualMachine(VirtualMachineDescriptor vmd) throws AttachNotSupportedException, IOException
Виртуальная Java-машина может быть описана с помощью VirtualMachineDescriptor. Этот метод вызывает метод provider() дескриптора для проверки, равен ли он этому поставщику. Затем он пытается подключиться к виртуальной Java-машине.
- Parameters:
-
vmd- Дескриптор виртуальной машины - Returns:
- VirtualMachine, представляющий целевую виртуальную машину.
- Throws:
-
AttachNotSupportedException- Если методprovider()дескриптора возвращает поставщика, который не является этим поставщиком, или он не соответствует виртуальной Java-машине, к которой этот поставщик может подключиться. -
IOException- Если произошла другая ошибка ввода-вывода -
NullPointerException- Еслиvmdявляетсяnull
listVirtualMachines
public abstract List<VirtualMachineDescriptor> listVirtualMachines()
Этот метод возвращает список элементов 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, 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://download.java.net/java/early_access/jdk24/docs/api/jdk.attach/com/sun/tools/attach/spi/AttachProvider.html