Spec-Zone.ru › OpenJDK 17

Класс 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 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. Если поток, заблокированный в 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 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, 2021, 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/17/docs/api/jdk.jdi/com/sun/jdi/connect/spi/TransportService.html

Spec-Zone.ru

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