请参阅: 说明
| 接口 | 说明 |
|---|---|
| JavaClassExec |
jupiter
org.jupiter.flight.exec
|
| UserExecInterface |
你需要实现这个接口, 来把你新写的"内容"注入到开启flight.exec的服务端.
|
| 类 | 说明 |
|---|---|
| ClassModifier |
代码来自周志明的 [深入理解Java虚拟机] 一书, 第九章第三小节[自己动手实现远程执行功能], 稍有改动.
|
| ExecResult |
jupiter
org.jupiter.flight.exec
|
| FlightExecClassLoader |
jupiter
org.jupiter.flight.exec
|
| HackSystem |
Hack
System. |
| JavaClassExecProvider |
把它作为一个服务提供者, 它会修改常量池中
System 类的指向,
可以将 System.out 重定向到你的客户端, 你可以在客户端代码中直接使用 System.out.println() 输入你想要的信息,
最终 System.out.println() 的输出会完整的返回到客户端. |
| JavaCompiler |
Java compiler, base on javac.
|
JServer.ServiceRegistry.executor(java.util.concurrent.Executor)
将线程池注册到该provider上供其单独使用(需重新调用register).
使用方式(参照jupiter-example#org.jupiter.example.flight.exec*):
1. 服务端注册 JavaClassExecProvider 作为一个provider.
2. 客户端使用 JavaCompiler 编译需要执行的类, 将编译返回的字节码byte数组
作为consumer的参数, 最后再以RPC的方式调用 JavaClassExec.exec(byte[]).
jupiter
org.jupiter.flight.execCopyright © 2018. All rights reserved.