Класс RemoteExecutionControl
java.lang.Object
jdk.jshell.execution.DirectExecutionControl
jdk.jshell.execution.RemoteExecutionControl
- Все реализуемые интерфейсы:
AutoCloseable, ExecutionControl
public class RemoteExecutionControl extends DirectExecutionControl implements ExecutionControl
Удалённый агент работает в процессе выполнения (отдельно от основного процесса JShell). Этот агент загружает код через сокет из основного процесса JShell, выполняет его и выполняет другие вспомогательные действия. Специализация
DirectExecutionControl, добавляющая поддержку остановки, управляемой внешним процессом. Предназначен для работы с JdiDefaultExecutionControl.- Начиная с:
- 9
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в интерфейсе ExecutionControl
ExecutionControl.ClassBytecodes, ExecutionControl.ClassInstallException, ExecutionControl.EngineTerminationException, ExecutionControl.ExecutionControlException, ExecutionControl.InternalException, ExecutionControl.NotImplementedException, ExecutionControl.ResolutionException, ExecutionControl.RunException, ExecutionControl.StoppedException, ExecutionControl.UserException | Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static final class |
ExecutionControl.ClassBytecodes |
Объединяет имя класса с байт-кодом класса. |
static class |
ExecutionControl.ClassInstallException |
При установке класса (загрузке или переопределении) возникла проблема. |
static class |
ExecutionControl.EngineTerminationException |
Произошло незапрошенное завершение работы движка выполнения. |
static class |
ExecutionControl.ExecutionControlException |
Абстрактный базовый класс всех исключений ExecutionControl. |
static class |
ExecutionControl.InternalException |
Произошла внутренняя ошибка. |
static class |
ExecutionControl.NotImplementedException |
Команда не реализована. |
static class |
ExecutionControl.ResolutionException |
Исключение, указывающее на обнаружение DeclarationSnippet с неразрешёнными ссылками. |
static class |
ExecutionControl.RunException |
Абстрактный базовый класс исключений, связанных с выполнением пользовательского кода. |
static class |
ExecutionControl.StoppedException |
Исключение, указывающее, что ExecutionControl.invoke(java.lang.String, java.lang.String) (или, теоретически, ExecutionControl.varValue(java.lang.String, java.lang.String)) был прерван вызовом ExecutionControl.stop(). |
static class |
ExecutionControl.UserException |
Произошло обычное пользовательское исключение. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
RemoteExecutionControl() |
Создаёт экземпляр, используя загрузку классов по умолчанию. |
RemoteExecutionControl |
Создаёт экземпляр, делегируя операции загрузчика указанному делегату. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
protected void |
clientCodeEnter() |
Отмечает вход в пользовательский код. |
static void |
main |
Запускает агент, подключаясь к ядру JShell через сокет, указанный в аргументе командной строки. |
void |
redefine |
На удалённой стороне переопределение выполняется только для регистрации переопределённых классов |
String |
varValue |
Возвращает значение переменной. |
Методы, объявленные в классе DirectExecutionControl
addToClasspath, classesRedefined, clientCodeLeave, close, extensionCommand, findClass, invoke, invoke, load, stop, throwConvertedInvocationException, throwConvertedOtherException, valueString | Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addToClasspath |
Добавляет путь к пути классов выполнения. |
protected void |
classesRedefined |
Уведомляет о переопределении классов. |
protected void |
clientCodeLeave() |
Отмечает выход из пользовательского кода. |
void |
close() |
Завершает работу этого движка выполнения. |
Object |
extensionCommand |
Выполняет нестандартную команду (или стандартную команду из более новой версии). |
protected Class |
findClass |
Находит класс с указанным двоичным именем. |
protected String |
invoke |
Вызывает указанный «метод выполнения» — статический метод без параметров. |
String |
invoke |
Вызывает исполняемый фрагмент кода, вызывая метод указанного класса-обёртки. |
void |
load |
Пытается загрузить новые классы. |
void |
stop() |
Прерывает выполняющийся вызов. |
protected String |
throwConvertedInvocationException |
Преобразует перехваченные исключения в пользовательском коде в экземпляры подклассов ExecutionControl.ExecutionControlException и выбрасывает преобразованное исключение. |
protected String |
throwConvertedOtherException |
Преобразует перехваченные исключения в коде агента в экземпляры подклассов ExecutionControl.ExecutionControlException и выбрасывает преобразованное исключение. |
protected static String |
valueString |
Преобразует значение Object из ExecutionControl.invoke(String, String) или ExecutionControl.varValue(String, String) в String. |
Методы, объявленные в классе 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() |
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо истечения заданного промежутка реального времени. |
Подробное описание конструкторов
RemoteExecutionControl
public RemoteExecutionControl(LoaderDelegate loaderDelegate)
Создаёт экземпляр, делегируя операции загрузчика указанному делегату.
- Параметры:
-
loaderDelegate— делегат для загрузки классов
RemoteExecutionControl
public RemoteExecutionControl()
Создаёт экземпляр, используя загрузку классов по умолчанию.
Подробное описание методов
main
public static void main(String[] args) throws Exception
Запускает агент, подключаясь к ядру JShell через сокет, указанный в аргументе командной строки.
- Параметры:
-
args— стандартные аргументы командной строки; предполагается, что единственным аргументом является номер сокета - Выбрасывает:
-
Exception— любое непредвиденное исключение
redefine
public void redefine(ExecutionControl.ClassBytecodes[] cbcs) throws ExecutionControl.ClassInstallException, ExecutionControl.NotImplementedException, ExecutionControl.EngineTerminationException
На удалённой стороне переопределение выполняется только для регистрации переопределённых классов
- Определён в:
-
redefineв интерфейсеExecutionControl - Параметры:
-
cbcs— имя класса и байт-код для переопределения - Выбрасывает:
-
ExecutionControl.ClassInstallException— при переопределении классов возникло исключение; некоторые или все классы не были переопределены -
ExecutionControl.NotImplementedException— если метод не реализован -
ExecutionControl.EngineTerminationException— движок выполнения завершил работу
varValue
public String varValue(String className, String varName) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
Описание скопировано из интерфейса:
ExecutionControlВозвращает значение переменной.
- Определён в:
-
varValueв интерфейсеExecutionControl - Переопределяет:
-
varValueв классеDirectExecutionControl - Параметры:
-
className— имя класса-обёртки переменной -
varName— имя переменной - Возвращает:
- значение переменной
- Выбрасывает:
-
ExecutionControl.UserException— при форматировании значения возникло пользовательское исключение -
ExecutionControl.ResolutionException— при форматировании значения была предпринята прямая или косвенная попытка вызвать неразрешённый фрагмент кода -
ExecutionControl.StoppedException— если форматирование значения было отменено вызовомExecutionControl.stop() -
ExecutionControl.EngineTerminationException— движок выполнения завершил работу -
ExecutionControl.InternalException— произошла внутренняя ошибка ExecutionControl.RunException
clientCodeEnter
protected void clientCodeEnter()
Описание скопировано из класса:
DirectExecutionControlОтмечает вход в пользовательский код.
- Переопределяет:
-
clientCodeEnterв классеDirectExecutionControl
© 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.