Spec-Zone.ru › OpenJDK 25

Класс Connection

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

Connection представляет двунаправленный канал связи между отладчиком и целевой виртуальной машиной. Connection создается, когда TransportService устанавливает соединение и успешно выполняет рукопожатие с целевой виртуальной машиной. Реализация TransportService предоставляет надежную службу передачи пакетов JDWP, а Connection, следовательно, обеспечивает надежный поток пакетов JDWP между отладчиком и целевой виртуальной машиной. Connection ориентирован на потоки: пакеты JDWP, записанные в соединение, считываются целевой виртуальной машиной в том порядке, в котором они были записаны. Аналогично пакеты, записанные целевой виртуальной машиной в Connection, считываются отладчиком в порядке их записи.

Соединение может быть открытым или закрытым. При создании оно открыто и остается открытым до закрытия. После закрытия оно остается закрытым, и любая попытка выполнить операцию ввода-вывода приведет к выбросу исключения ClosedConnectionException. Состояние соединения можно проверить вызовом метода isOpen.

Connection безопасен для доступа из нескольких одновременно работающих потоков, однако в любой момент времени читать может не более одного потока, а записывать — не более одного потока.

С:
1.5

Краткое описание конструкторов

Конструктор Описание
Connection()
Конструктор для вызова подклассами.

Краткое описание методов

Модификатор и тип Метод Описание
abstract void close()
Закрывает это соединение.
abstract boolean isOpen()
Сообщает, открыто ли это соединение.
abstract byte[] readPacket()
Считывает пакет из целевой виртуальной машины.
abstract void writePacket(byte[] pkt)
Записывает пакет в целевую виртуальную машину.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

Connection

public Connection()
Конструктор для вызова подклассами.

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

readPacket

public abstract byte[] readPacket() throws IOException
Считывает пакет из целевой виртуальной машины.

Пытается считать пакет JDWP из целевой виртуальной машины. Операция чтения может блокироваться неограниченно долго и завершается только после считывания всех байтов пакета либо, в случае службы передачи данных, основанной на потоковом протоколе связи, при достижении конца потока.

При чтении пакета не выполняется проверка его целостности, за исключением проверки того, что длина пакета (указанная значением поля length, занимающего первые четыре байта пакета) составляет не менее 11 байт. Если значение length меньше 11, выбрасывается исключение IOException.

Возвращает массив байтов длиной, равной длине полученного пакета, либо массив байтов нулевой длины при достижении конца потока. Если конец потока достигнут после считывания некоторых, но не всех байтов пакета, это считается ошибкой ввода-вывода, и выбрасывается исключение IOException. Первый байт пакета сохраняется в элементе 0 массива байтов, второй — в элементе 1 и так далее. Байты в массиве расположены в соответствии со спецификацией JDWP. То есть все поля пакета расположены в порядке от старшего байта к младшему, как указано в спецификации JDWP.

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

Возвращает:
пакет, считанный из целевой виртуальной машины
Выбрасывает:
ClosedConnectionException — если соединение закрыто или другой поток закрывает соединение во время выполнения readPacket.
IOException — если длина пакета (указанная первыми 4 байтами) меньше 11 байт или произошла ошибка ввода-вывода.

writePacket

public abstract void writePacket(byte[] pkt) throws IOException
Записывает пакет в целевую виртуальную машину.

Пытается записать или отправить пакет JDWP целевой виртуальной машине. Операция записи завершается только после записи всего пакета в целевую виртуальную машину. Запись всего пакета не означает, что он был целиком передан целевой виртуальной машине; это означает лишь, что все байты были записаны в службу передачи данных. Например, служба передачи данных на основе TCP/IP-соединения может буферизовать часть или весь пакет перед передачей по сети.

Массив байтов, передаваемый этому методу, должен быть сформирован в соответствии со спецификацией JDWP. То есть все поля пакета должны быть расположены в порядке от старшего байта к младшему. Первый байт, то есть элемент pkt[0], является первым байтом поля length. pkt[1] является вторым байтом поля length и так далее.

При записи пакета не выполняется проверка его целостности, кроме проверки длины. Для проверки длины пакета необходимо убедиться, что значение поля length (указанное первыми четырьмя байтами пакета) равно 11 или больше. Следовательно, длина массива байтов, передаваемого этому методу, то есть pkt.length, должна составлять не менее 11 и быть равной значению поля length или превышать его. Если длина массива байтов больше значения поля length, все байты, начиная с элемента pkt[length], игнорируются. Иными словами, все дополнительные байты, следующие за пакетом в массиве байтов, игнорируются и не передаются целевой виртуальной машине.

Операция записи может блокироваться или завершиться немедленно. Точные условия блокировки зависят от службы передачи данных. В случае TCP/IP-соединения с целевой виртуальной машиной метод writePacket может блокироваться, если сеть перегружена или в базовой сетевой системе недостаточно места для буферизации пакета.

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

Параметры:
pkt — пакет для записи в целевую виртуальную машину.
Выбрасывает:
ClosedConnectionException — если соединение закрыто или другой поток закрывает соединение во время выполнения операции записи.
IOException — если произошла ошибка ввода-вывода.
IllegalArgumentException — если значение поля length недопустимо или длина массива байтов недостаточна.

close

public abstract void close() throws IOException
Закрывает это соединение.

Если соединение уже закрыто, вызов этого метода не оказывает никакого эффекта. После закрытия соединения все последующие попытки вызвать readPacket или writePacket приведут к выбросу исключения ClosedConnectionException.

Любой поток, заблокированный в данный момент в операции ввода-вывода (readPacket или writePacket), выбросит исключение ClosedConnectionException.

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

Выбрасывает:
IOException — если произошла ошибка ввода-вывода

isOpen

public abstract boolean isOpen()
Сообщает, открыто ли это соединение.
Возвращает:
true тогда и только тогда, когда это соединение открыто

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по 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/Connection.html

Spec-Zone.ru

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