Spec-Zone.ru › OpenJDK 24

Класс TransportService

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

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

Услуга транспорта используется для установления соединения между отладчиком и целевой виртуальной машиной и для передачи пакетов протокола Java Debug Wire Protocol (JDWP) по основному протоколу связи. По сути, реализация службы транспорта связывает JDWP (как указано в спецификации JDWP) с основным протоколом связи. Реализация службы транспорта предоставляет надёжную службу передачи пакетов JDWP. Пакеты JDWP отправляются в целевую виртуальную машину и из неё без дублирования или потери данных. Реализация службы транспорта может быть основана на основном протоколе связи, который является надёжным или ненадежным. Если основной протокол связи является надёжным, то реализация службы транспорта может быть относительно простой и может потребовать только передачу пакетов JDWP в качестве полезной нагрузки основного протокола связи. В случае ненадежного протокола связи реализация службы транспорта может включать дополнительную поддержку протокола для обеспечения того, чтобы пакеты не дублировались и не происходила потеря данных. Подробности таких протоколов зависят от реализации, но могут включать такие методы, как метод положительного подтверждения с повторной передачей, используемый в таких протоколах, как Transmission Control Protocol (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.

Параметры:
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. Если поток, заблокированный в accept, уже принял соединение от целевой виртуальной машины и находится в процессе рукопожатия с целевой виртуальной машиной, то вызов этого метода не заставит поток сгенерировать исключение.

Параметры:
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.

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

© 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.jdi/com/sun/jdi/connect/spi/TransportService.html

Spec-Zone.ru

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