Spec-Zone.ru › OpenJDK 21

Класс TransportService

java.lang.Object
com.sun.jdi.connect.spi.TransportService
public abstract class TransportService extends Object
Услуга транспорта для подключения между отладчиком и целевой виртуальной машиной.

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

Услуга транспорта используется для установления соединения между отладчиком и целевой виртуальной машиной и для передачи пакетов протокола Java Debug Wire (JDWP) по протоколу связи нижнего уровня. По сути, реализация службы транспорта связывает JDWP (как указано в спецификации JDWP) с протоколом связи нижнего уровня. Реализация службы транспорта предоставляет надёжную службу передачи пакетов JDWP. Пакеты JDWP отправляются в целевую виртуальную машину и из неё без дублирования или потери данных. Реализация службы транспорта может быть основана на протоколе связи нижнего уровня, который является надёжным или ненадежным. Если протокол связи нижнего уровня надёжен, то реализация службы транспорта может быть относительно простой и может потребовать только передачи пакетов JDWP в качестве полезной нагрузки протокола связи нижнего уровня. В случае ненадежного протокола связи нижнего уровня реализация службы транспорта может включать дополнительную поддержку протокола для обеспечения того, чтобы пакеты не дублировались и не происходила потеря данных. Подробности таких протоколов зависят от реализации, но могут включать такие методы, как метод положительного подтверждения с повторной передачей, используемый в таких протоколах, как протокол управления передачей (TCP) (см. RFC 793 ).

Услуга транспорта может использоваться для инициации соединения с целевой виртуальной машиной. Это делается путём вызова метода attach(java.lang.String, long, long). В качестве альтернативы, служба транспорта может прослушивать и принимать соединения, инициированные целевой виртуальной машиной. Это делается путём вызова метода startListening(String) для перевода транспорта в режим прослушивания. Затем используется метод accept(com.sun.jdi.connect.spi.TransportService.ListenKey, long, long) для принятия соединения, инициированного целевой виртуальной машиной.

Since:
1.5

Краткое описание вложенных классов

Модификатор и тип Класс Описание
static class  TransportService.Capabilities
Возможности службы транспорта.
static class  TransportService.ListenKey
Ключ прослушивания.

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

Конструктор Описание
TransportService()
Конструктор для вызова подклассами.

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

Модификатор и тип Метод Описание
abstract Connection accept(TransportService.ListenKey listenKey, long acceptTimeout, long handshakeTimeout)
Принятие соединения от целевой виртуальной машины.
abstract Connection attach(String address, long attachTimeout, long handshakeTimeout)
Подключение к указанному адресу.
abstract TransportService.Capabilities capabilities()
Возвращает возможности службы транспорта.
abstract String description()
Возвращает описание службы транспорта.
abstract String name()
Возвращает имя для идентификации службы транспорта.
abstract TransportService.ListenKey startListening()
Прослушивание по адресу, выбранному службой транспорта.
abstract TransportService.ListenKey startListening(String address)
Прослушивание по указанному адресу для входящих подключений.
abstract void stopListening(TransportService.ListenKey listenKey)
Остановка прослушивания входящих подключений.

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

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

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

TransportService

public TransportService()
Конструктор для вызова подклассами.

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

name

public abstract String name()
Возвращает имя для идентификации службы транспорта.
Возвращает:
Имя службы транспорта

description

public abstract String description()
Возвращает описание службы транспорта.
Возвращает:
Описание службы транспорта

capabilities

public abstract TransportService.Capabilities capabilities()
Возвращает возможности службы транспорта.
Возвращает:
возможности службы транспорта

attach

public abstract Connection attach(String address, long attachTimeout, long handshakeTimeout) throws IOException
Подключается к указанному адресу.

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

Подключение к целевой виртуальной машине включает два шага: сначала устанавливается соединение с указанным адресом. За этим следует рукопожатие, чтобы убедиться, что соединение идет с целевой виртуальной машиной. Рукопожатие включает обмен строкой JDWP-Handshake, как указано в спецификации Java Debug Wire Protocol.

Параметры:
address - Адрес целевой виртуальной машины.
attachTimeout - Если эта служба транспорта поддерживает таймаут подключения, и если attachTimeout положительно, то оно указывает таймаут в миллисекундах (приблизительно) для подключения к целевой виртуальной машине. Если служба транспорта не поддерживает таймаут подключения или если attachTimeout задано как ноль, то подключение происходит без таймаута.
handshakeTimeout - Если эта служба транспорта поддерживает таймаут рукопожатия, и если handshakeTimeout положительно, то оно указывает таймаут в миллисекундах (приблизительно) для рукопожатия с целевой виртуальной машиной. Точное использование таймаута зависит от службы транспорта. Например, служба транспорта может использовать таймаут рукопожатия как таймаут между символами при ожидании сообщения JDWP-Handshake от целевой виртуальной машины. Или, например, служба транспорта может использовать handshakeTimeout как таймаут на время рукопожатия. Если служба транспорта не поддерживает таймаут рукопожатия или если handshakeTimeout задано как ноль, то рукопожатие не имеет таймаута, если нет ответа от целевой виртуальной машины.
Возвращает:
Соединение, представляющее двунаправленный канал связи с целевой виртуальной машиной.
Выбрасывает:
TransportTimeoutException - Если при установлении соединения происходит превышение таймаута.
IOException - Если происходит ошибка ввода-вывода (включая превышение таймаута при рукопожатии).
IllegalArgumentException - Если адрес недействителен или значение таймаута подключения или таймаута рукопожатия отрицательно.
См. также:
  • TransportService.Capabilities.supportsAttachTimeout()

startListening

public abstract TransportService.ListenKey startListening(String address) throws IOException
Прослушивает указанный адрес для входящих подключений.

Этот метод запускает службу транспорта, прослушивающую указанный адрес, чтобы она могла впоследствии принять входящее соединение. Он не ждет, пока будет установлено входящее соединение.

Параметры:
address - Адрес для прослушивания подключений или null для прослушивания адреса, выбранного службой транспорта.
Возвращает:
ключ прослушивания, который будет использоваться в последующих вызовах методов accept или stopListening.
Выбрасывает:
IOException - Если произошла ошибка ввода-вывода.
IllegalArgumentException - Если указанный адрес недействителен.

startListening

public abstract TransportService.ListenKey startListening() throws IOException
Прослушивает адрес, выбранный службой транспорта.

Этот вспомогательный метод работает так, как если бы был вызван startListening(null).

Возвращает:
ключ прослушивания, который будет использоваться в последующих вызовах методов accept или stopListening.
Выбрасывает:
IOException - Если произошла ошибка ввода-вывода.

stopListening

public abstract void stopListening(TransportService.ListenKey listenKey) throws IOException
Останавливает прослушивание входящих подключений.

Вызов этого метода, в то время как другой поток заблокирован в accept с тем же ключом прослушивания, ожидая принятия соединения, приведет к тому, что этот поток сгенерирует исключение IOException. Если поток, заблокированный в приеме, уже принял соединение от целевой виртуальной машины и находится в процессе рукопожатия с целевой виртуальной машиной, вызов этого метода не приведет к тому, что поток сгенерирует исключение.

Параметры:
listenKey - Ключ прослушивания, полученный в предыдущем вызове методов startListening(String) или startListening().
Выбрасывает:
IllegalArgumentException - Если ключ прослушивания недействителен.
IOException - Если произошла ошибка ввода-вывода.

accept

public abstract Connection accept(TransportService.ListenKey listenKey, long acceptTimeout, long handshakeTimeout) throws IOException
Принимает соединение от целевой виртуальной машины.

Ожидает (бесконечно или с таймаутом) принятия соединения от целевой виртуальной машины. Возвращает соединение, представляющее двунаправленный канал связи с целевой виртуальной машиной.

Прием соединения от целевой виртуальной машины включает два шага. Сначала служба транспорта ждет принятия соединения от целевой виртуальной машины. После того, как соединение установлено, выполняется рукопожатие, чтобы убедиться, что соединение действительно идет с целевой виртуальной машиной. Рукопожатие включает обмен строкой JDWP-Handshake, как указано в спецификации Java Debug Wire Protocol.

Параметры:
listenKey - Ключ прослушивания, полученный в предыдущем вызове методов startListening(String) или startListening().
acceptTimeout - если эта служба транспорта поддерживает таймаут принятия, и если acceptTimeout положительно, то блокируется до acceptTimeout миллисекунд, приблизительно, в ожидании подключения целевой виртуальной машины. Если служба транспорта не поддерживает таймаут принятия или если acceptTimeout равно нулю, то блокируется неопределенно, ожидая подключения целевой виртуальной машины.
handshakeTimeout - Если эта служба транспорта поддерживает таймаут рукопожатия, и если handshakeTimeout положительно, то это задает таймаут, в миллисекундах (приблизительно), для рукопожатия с целевой виртуальной машиной. Точное использование таймаута зависит от службы транспорта. Например, служба транспорта может использовать таймаут рукопожатия как таймаут между символами при ожидании сообщения JDWP-Handshake от целевой виртуальной машины. Или, например, служба транспорта может использовать таймаут для всего рукопожатия. Если служба транспорта не поддерживает таймаут рукопожатия или если handshakeTimeout равно нулю, то рукопожатие не имеет таймаута, если нет ответа от целевой виртуальной машины.
Возвращает:
Соединение, представляющее двунаправленный канал связи с целевой виртуальной машиной.
Выбрасывает:
TransportTimeoutException - Если при ожидании подключения целевой виртуальной машины истек таймаут.
IOException - Если произошла ошибка ввода-вывода (включая превышение таймаута при рукопожатии).
IllegalArgumentException - Если значение аргумента acceptTimeout или handshakeTimeout отрицательно, или предоставлен недействительный ключ прослушивания.
IllegalStateException - Если stopListening уже был вызван с этим ключом прослушивания и служба транспорта больше не прослушивает входящие подключения.
См. также:
  • TransportService.Capabilities.supportsAcceptTimeout()

© 1993, 2023, 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/21/docs/api/jdk.jdi/com/sun/jdi/connect/spi/TransportService.html

Spec-Zone.ru

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