9.3.4 验证_9.3 实战:自己动手实现远程执行功能

9.3.4 验证

远程执行功能的编码到此就完成了,接下来就要检验一下我们的劳动成果。只是测试的话,任意写一个Java类,内容无所谓,只要向System.out输出信息即可,取名为TestClass,放到服务器C盘的根目录中。然后建立一个JSP文件写上如代码清单9-8所示的内容,就可以在浏览器中看到这个类的运行结果了。

代码清单9-8 测试JSP
1
2
3
4
5
6
7
8
9
10
11
12
13
<%@ page import="java.lang.*" %> 
<%@ page import="java.io.*" %>
<%@ page import="org.fenixsoft.classloading.execute.*" %>
<%
InputStream is = new FileInputStream("c:/TestClass.class");
byte[] b = new byte[is.available()];
is.read(b);
is.close();

out.println("<textarea style='width:1000;height=800'>");
out.println(JavaclassExecuter.execute(b));
out.println("</textarea>");
%>

当然,上面的做法只是用于测试和演示,实际使用这个JavaExecuter执行器的时候,如果还要手工复制一个Class文件到服务器上就完全失去意义了,总得给它配一个Class文件上传功能,这是一件很容易做到的事情。

在工作中,笔者进一步给这个执行器写了一个“外壳”,这是一个Eclipse插件,可以把Java文件编译后传输到服务器中,然后把执行器的返回结果输出到Eclipse的Console窗口里,这样就可以在有灵感的时候随时写几行调试代码,放到测试环境的服务器上立即运行了。实现虽然简单,但效果很不错, 对调试问题非常有用,如图9-4所示。

image-20211125195439267

图9-4 JavaclassExecuter的使用