Spec-Zone.ru › OpenJDK 25

Класс TransportService

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

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

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

Службу транспорта можно использовать для установления соединения с целевой виртуальной машиной. Для этого вызывается метод attach(String, long, long). В качестве альтернативы служба транспорта может ожидать и принимать соединения, инициированные целевой виртуальной машиной. Для этого вызывается метод startListening(String), переводящий транспорт в режим ожидания подключений. Затем метод accept(TransportService.ListenKey, long, long) используется для приема соединения, инициированного целевой виртуальной машиной.

Начиная с:
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)
Прекращает ожидание входящих подключений.

Методы, объявленные в классе 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.

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

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

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, включая обзоры концепций, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

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

Spec-Zone.ru

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