Класс 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 |
Принимает соединение от целевой виртуальной машины. |
abstract Connection |
attach |
Устанавливает соединение с указанным адресом. |
abstract TransportService.Capabilities |
capabilities() |
Возвращает возможности службы передачи данных. |
abstract String |
description() |
Возвращает описание службы передачи данных. |
abstract String |
name() |
Возвращает имя, идентифицирующее службу передачи данных. |
abstract TransportService.ListenKey |
startListening() |
Ожидает соединения на адресе, выбранном службой передачи данных. |
abstract TransportService.ListenKey |
startListening |
Ожидает входящие соединения на указанном адресе. |
abstract void |
stopListening |
Прекращает ожидание входящих соединений. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект какому-либо другому. |
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 |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова 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— если адрес недопустим или значение тайм-аута подключения либо тайм-аута рукопожатия отрицательно. - См. также:
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уже вызывался с этим ключом ожидания соединения и служба передачи данных больше не ожидает входящие соединения. - См. также:
© 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.