如何从Java EE Web应用程序运行外部应用程序?

时间:2012-04-06 10:39:09

标签: java windows tomcat service external

我一直在使用仅供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启动它,则不会。

我想到了几件事:

  • 使用其他用户启动服务
  • 更改服务的启动方式(StartMode:jvm,java。我没有成功使用exe) 我多次阅读Tomcat 7 Windows Service How-To但没有找到解决我问题的任何内容。

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

1 个答案:

答案 0 :(得分:0)

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

请参阅Launching GUI App from Windows Service - Window Does Not Appear

选项2 你尝试过开始使用cmd吗? start / c“c:\ path to \ exe”

cmd.exe类型中的

帮助开始


选项3

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

这个熟睡的应用程序可以通过tomcat或其他自己启动。它可以侦听端口或轮询文件夹以查找新文件,当它获得工作时,它会启动您想要的应用程序。通过端口或文本文件,您可以发送参数。