我一直在使用仅供Intranet使用的Web应用程序。我使用Apache 7和Windows Server 2003。
在我的一个页面中,我需要打开一个外部应用程序,我们可以在C:/ Program Files / etc中找到它们,并且已经初始化了一些参数。当然,用户必须使用服务器上的Web应用程序才能使其正常工作(将是这种情况)。
要打开应用程序,我使用ProcessBuilder
对象。
问题:
当我在Eclipse本地工作并手动运行服务器时,它可以很好地工作。任何应用程序都可以从网页中打开。
但是当我使用tomcat windows服务(这就是我们想要在服务器上使用的东西)时,它就永远不会启动。或者更具体地说,它直接启动和停止应用程序。抛出java错误,退出值为process.waitFor()
。事实是我们可以通过Web应用程序运行进程(我试图运行简单的批处理文件),但是当涉及到UI时,它永远不会出现。
同样,这次在服务器上,如果我通过双击或cmd启动tomcat7.exe(我们可以在%CATALINA_HOME%/ bin目录中找到),将显示Web应用程序中的UI。如果我通过cmd使用services.msc或tomcat7w.exe或tomcat7 start
启动它,则不会。
我想到了几件事:
你知道发生了什么,以及如何解决这个问题? 将tomcat作为服务运行与命令行之间的最大区别是什么?
答案 0 :(得分:0)
选项1 如果打开服务的属性窗口,请转到“登录”选项卡,然后选中“允许服务与桌面交互”复选框,您将获得所需的行为。此外,根据您运行的应用程序,您可能需要更改登录帐户。
选项2 你尝试过开始使用cmd吗? start / c“c:\ path to \ exe”
cmd.exe类型中的帮助开始
选项3
您将需要一个不作为服务运行的守护程序服务。 Windows对服务应用程序施加了某些限制。
这个熟睡的应用程序可以通过tomcat或其他自己启动。它可以侦听端口或轮询文件夹以查找新文件,当它获得工作时,它会启动您想要的应用程序。通过端口或文本文件,您可以发送参数。