【发布时间】: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