我想从运行在Tomcat 6,Windows 7,64位上的servlet调用外部Java类文件。 这个问题上已经有一些线索,但没有人真的帮助我。从webapp执行外部Java程序
Fyi,如果我直接从shell运行它,我已经能够成功完成这项工作。
im使用一个ProcessBuilder
到这样
ProcessBuilder bp = new ProcessBuilder("cmd.exe","/C","java", "TheExternalClass", "ParameterA" });
我还从所创建的过程消耗errorStream和的inputStream执行该命令。
当我从servlet运行它时,它只是失速。
例如,如果我将java命令切换到dir,它可以按预期工作,这使我相信它与任何内存有关,或者从Tomcat启动新的Java Process或类似的问题。
任何人都有一个指针或一个好主意,如何解决这个问题?
在话题的一些其他职位:
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
感谢很多的阅读。
谢谢你回复Aaron。 你是对的,我打电话给p.waitFor()和我从创建的进程读取errorStream和inputStream,但我没有真正做它。你是否建议如果不读取这些流并且不调用p.waitFor()它会起作用? –
好吧,JSP不会再阻塞,但是如果它向stdout/stderr写入超过4KB的数据,并且出现错误时,这个过程可能永远不会结束,您永远不会知道。 –