Java Servlet启动外部进程
我们正在从Servlet启动一个外部进程Java Servlet启动外部进程,java,servlets,runtime,Java,Servlets,Runtime,我们正在从Servlet启动一个外部进程 try { Process proc = Runtime.getRuntime().exec("java -jar " + jarLocation ); servlet和外部进程使用相同的userid/pwd访问相同的数据库 servlet不会等待外部进程完成 servlet在不到一秒钟的时间内完成其处理 从Servlet启动时,外部应用程序至少需要两分钟才能完成 在单机模式下运行时,外部应用程序大约需要5秒钟才能完成 我们尝试在外部进程
try {
Process proc = Runtime.getRuntime().exec("java -jar " + jarLocation );
- servlet和外部进程使用相同的userid/pwd访问相同的数据库
- servlet不会等待外部进程完成
- servlet在不到一秒钟的时间内完成其处理
- 从Servlet启动时,外部应用程序至少需要两分钟才能完成
- 在单机模式下运行时,外部应用程序大约需要5秒钟才能完成
有人知道这里会发生什么吗?您需要在servlet进程中使用生成的进程的stdout/stderr 否则,生成的进程可能会阻塞,等待它被使用。这样做有点复杂-有关更多信息,请参阅及其 请注意,您应该执行一个
Process.waitFor()
来收集生成的进程退出代码。否则你的手上会有一个僵尸。因此,您可能希望将所有这些打包到一个单独的线程中,这样您的servlet就可以生成进程并立即返回
话虽如此,如果您要启动一个新的Java进程,您不能简单地重构它,以便从同一个JVM中将其作为库函数调用吗?产卵过程是一项相对较重且耗时的任务 布莱恩,谢谢你的回复。捕获流程输出是使事情正常工作所需的全部。