我有以下问题:
我正在尝试从 Tomcat 服务器当前正在运行的 Web 应用程序启动一个新进程。因此,Web 应用程序应该能够启动一个新进程。如果我从 Tomcat 尝试这个,什么也不会发生。但是,如果我在自己的未在 Tomcat 上运行的 Java 应用程序中使用相同的代码,则一切正常。
我错过了哪一部分?Tomcat 是否不允许从 Web 应用程序启动新进程?我必须设置特殊权限吗?
这里的代码在独立的 java 应用程序中运行良好:
public class Test1 {
/**
* @param args
*/
public static void main(String[] args) {
String javaHome = System.getProperty("java.home");
String javaBin = javaHome + File.separator + "bin" + File.separator
+ "java";
String classpath = System.getProperty("java.class.path");
String className = Test2.class.getCanonicalName();
ProcessBuilder builder = new ProcessBuilder(javaBin, "-cp", classpath,
className);
Process process;
try {
process = builder.start();
Scanner s = new
Scanner(process.getInputStream()).useDelimiter("\\Z");
System.out.println(s.next());
process.getOutputStream().close();
process.getErrorStream().close();
process.getInputStream().close();
} catch (IOException e) {
e.printStackTrace();
}
}
Test2.class 除了在屏幕上打印“hello world”之外什么也不做。