2

我一直在开发一个仅供 Intranet 使用的 Web 应用程序。我使用 Apache 7 和 Windows Server 2003。

在我的一个页面中,我需要打开一个外部应用程序,我们可以在 C:/Program Files/etc... 中找到它,其中一些参数已经初始化。当然,用户必须使用服务器上的 Web 应用程序才能使其工作(就是这种情况)。

要打开应用程序,我使用ProcessBuilder对象。

问题:

当我在本地使用 Eclipse 并手动运行服务器时,它运行良好。任何应用程序都可以从网页打开自己。但是当我使用 tomcat windows 服务(这就是我们想在服务器上使用的)时,它永远不会启动。或者更具体地说,它直接启动和停止应用程序。没有抛出 java 错误并且process.waitFor()退出值为 0。事实是我们可以通过 Web 应用程序运行进程(我尝试运行简单的批处理文件),但是当涉及 UI 时,它永远不会出现。

同样,这次在服务器上,如果我通过双击或 cmd 启动 tomcat7.exe(我们可以在 %CATALINA_HOME%/bin 目录中找到),将出现 Web 应用程序中的 UI。如果我使用 services.msc 或 tomcat7w.exe 或tomcat7 start通过 cmd 启动它,它不会。

我想到了几件事:

你知道发生了什么,以及如何解决这个问题吗?将tomcat作为服务运行和从命令行运行之间的最大区别是什么?

4

1 回答 1

0

选项 1 如果您打开服务的属性窗口,请转到“登录”选项卡,然后选中“允许服务与桌面交互”复选框,您将获得所需的行为。此外,根据您要运行的应用程序,您可能需要更改登录帐户。

请参阅从 Windows 服务启动 GUI 应用程序 - 窗口不出现

选项 2 您是否尝试启动 cmd 并使用 start /c "c:\path to\exe"

在 cmd.exe 中输入帮助开始


选项 3

您将需要一个不作为服务运行的守护程序服务。Windows 对服务应用程序施加了某些限制。

这个睡眠应用可以由tomcat或其他你自己启动。它可以在端口上侦听或轮询文件夹以获取新文件,并且当它有工作要做时,它会启动您想要的应用程序。通过端口或文本文件,您可以发送参数。

于 2013-03-17T09:15:56.977 回答