java.lang.Object
jdk.jshell.execution.StreamingExecutionControl
jdk.jshell.execution.JdiExecutionControl
jdk.jshell.execution.JdiDefaultExecutionControl
- All Implemented Interfaces:
AutoCloseable
,ExecutionControl
The implementation of
ExecutionControl
that the
JShell-core uses by default.
Launches a remote process -- the "remote agent".
Interfaces to the remote agent over a socket and via JDI.
Designed to work with RemoteExecutionControl
.- Since:
- 9
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic interface
Start an external process where the user's snippets can be run.Nested classes/interfaces declared in interface jdk.jshell.spi.ExecutionControl
ExecutionControl.ClassBytecodes, ExecutionControl.ClassInstallException, ExecutionControl.EngineTerminationException, ExecutionControl.ExecutionControlException, ExecutionControl.InternalException, ExecutionControl.NotImplementedException, ExecutionControl.ResolutionException, ExecutionControl.RunException, ExecutionControl.StoppedException, ExecutionControl.UserException
-
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Closes the execution engine.Invokes an executable Snippet by calling a method on the specified wrapper class.void
stop()
Interrupts a running remote invoke by manipulating remote variables and sending a stop via JDI.protected VirtualMachine
vm()
Returns the JDIVirtualMachine
instance.Methods declared in class jdk.jshell.execution.JdiExecutionControl
redefine, referenceType
Methods declared in class jdk.jshell.execution.StreamingExecutionControl
addToClasspath, close, extensionCommand, load, varValue
Methods declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods declared in interface jdk.jshell.spi.ExecutionControl
addToClasspath, extensionCommand, load, varValue
-
Method Details
-
invoke
public String invoke(String classname, String methodname) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalException Description copied from interface:ExecutionControl
Invokes an executable Snippet by calling a method on the specified wrapper class. The method must have no arguments and return String.- Specified by:
invoke
in interfaceExecutionControl
- Overrides:
invoke
in classStreamingExecutionControl
- Parameters:
classname
- the class whose method should be invokedmethodname
- the name of method to invoke- Returns:
- the result of the execution or null if no result
- Throws:
ExecutionControl.UserException
- the invoke raised a user exceptionExecutionControl.ResolutionException
- the invoke attempted to directly or indirectly invoke an unresolved snippetExecutionControl.StoppedException
- if theinvoke()
was canceled byExecutionControl.stop()
ExecutionControl.EngineTerminationException
- the execution engine has terminatedExecutionControl.InternalException
- an internal problem occurredExecutionControl.RunException
-
stop
public void stop() throws ExecutionControl.EngineTerminationException, ExecutionControl.InternalExceptionInterrupts a running remote invoke by manipulating remote variables and sending a stop via JDI.- Throws:
ExecutionControl.EngineTerminationException
- the execution engine has terminatedExecutionControl.InternalException
- an internal problem occurred
-
close
public void close()Description copied from class:StreamingExecutionControl
Closes the execution engine. Send an exit command to the remote agent.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceExecutionControl
- Overrides:
close
in classStreamingExecutionControl
-
vm
Description copied from class:JdiExecutionControl
Returns the JDIVirtualMachine
instance.- Specified by:
vm
in classJdiExecutionControl
- Returns:
- the virtual machine
- Throws:
ExecutionControl.EngineTerminationException
- if the VM is dead/disconnected
-