【问题标题】:How to run external application from a Java EE web application?如何从 Java EE Web 应用程序运行外部应用程序?
【发布时间】:2012-04-06 10:39:09
【问题描述】:

我一直致力于开发仅供 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。如果我通过 cmd 使用 services.msc 或 tomcat7w.exe 或 tomcat7 start 启动它,它不会。

我想到了几件事:

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

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

【问题讨论】:

  • 乍一看环境可能不同(路径上的内容和其他环境变量的设置/设置不同)。您能否添加实际 ProcessBuilder 相关代码的 sn-p(即您正在调用的命令,以及所有正在传递的参数)
  • 这不是环境问题。问题是不建议通过 Windows 服务启动 UI 应用程序。事实上,我的应用程序已启动,但我看不到它。它只出现在会话 0 上,我们可以使用 /admin 选项通过远程桌面连接进行访问。

标签: java windows tomcat service external


【解决方案1】:

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

Launching GUI App from Windows Service - Window Does Not Appear

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

在 cmd.exe 中输入 帮助开始


选项 3

您将需要一个不作为服务运行的守护程序服务。 windows 对服务应用有一定的限制。

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

【讨论】:

    猜你喜欢
    • 2012-12-31
    • 2023-04-04
    • 1970-01-01
    • 2012-12-25
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    相关资源
    最近更新 更多