我试图从运行在Tomcat 6,Windows 7,64bit上的servlet调用外部Java类文件。 关于这个主题已经有一些线索,但没有一个真正帮助我。
Fyi,如果我直接从shell运行它,我已经成功地做到了这一点。
我使用ProcessBuilder
来执行这样的命令
ProcessBuilder bp = new ProcessBuilder("cmd.exe","/C","java", "TheExternalClass", "ParameterA" });
我也在使用创建的Process中的errorStream和inputStream。
当我从servlet运行它时,它就会停转。
例如,如果我将java命令转换为dir,它确实按预期工作,这让我相信它与内存有关,或者从Tomcat启动新的Java进程或类似事件。
任何人都有指针或如何解决这个问题的好主意?
关于该主题的其他一些帖子:
http://www.javaworld.com/jw-12-2000/jw-1229-traps.html?page=1
call a java program from a webapp in tomcat server - the java program is out side of tomcat server
Tomcat fails to execute external java program
非常感谢阅读。
答案 0 :(得分:1)
上面的代码可以工作,它不会阻止你的servlet。我的猜测是你稍后调用p.waitFor()
或类似的东西,或者你在JSP线程中读取进程的输出流 - 将阻止
如果您不想阻止,您有两种选择: