0

我有以下问题:

我正在尝试从 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”之外什么也不做。

4

1 回答 1

1

您的问题至少来自不同的类路径内容。

但我同意你试图做的不是干净的。

为什么不使用 JMS 在队列中发布作业并让另一个 MDB 进程呢?

于 2013-02-05T12:55:46.543 回答