Spec-Zone.ru › OpenJDK 27

Класс 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 в качестве полезной нагрузки базового протокола связи. В случае ненадежного протокола связи реализация службы передачи данных может включать дополнительную поддержку протокола, чтобы гарантировать отсутствие дублирования пакетов и потери данных. Особенности таких протоколов зависят от реализации, но могут предусматривать такие методы, как положительное подтверждение с повторной передачей, используемый в протоколах, например в протоколе управления передачей (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
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому.
protected void finalize()
Устарело, подлежит удалению: этот элемент API может быть удален в будущей версии.
Финализация устарела и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо истечения заданного промежутка реального времени.

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

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
Устанавливает соединение с указанным адресом.

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

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

Параметры:
address — адрес целевой виртуальной машины.
attachTimeout — если эта служба передачи данных поддерживает тайм-аут подключения и значение attachTimeout положительно, оно задает тайм-аут в миллисекундах (примерно), используемый при подключении к целевой виртуальной машине. Если служба передачи данных не поддерживает тайм-аут подключения или если для attachTimeout задано нулевое значение, подключение выполняется без тайм-аута.
handshakeTimeout — если эта служба передачи данных поддерживает тайм-аут рукопожатия и значение handshakeTimeout положительно, оно задает тайм-аут в миллисекундах (примерно), используемый при рукопожатии с целевой виртуальной машиной. Точное применение тайм-аута зависит от службы передачи данных. Например, служба передачи данных может использовать тайм-аут рукопожатия как тайм-аут между символами при ожидании сообщения JDWP-Handshake от целевой виртуальной машины. Кроме того, служба передачи данных может использовать handshakeTimeout как тайм-аут для всей процедуры рукопожатия. Если служба передачи данных не поддерживает тайм-аут рукопожатия или если для handshakeTimeout задано нулевое значение, время ожидания рукопожатия не ограничено, если целевая виртуальная машина не отвечает.
Возвращает:
Объект Connection, представляющий двунаправленный канал связи с целевой виртуальной машиной.
Вызывает исключение:
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
Принимает соединение от целевой виртуальной машины.

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

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

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, 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.

Spec-Zone.ru

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