无法配置 tomcat 7 以使用自己的 JDK

无法配置 tomcat 7 以使用自己的 JDK

我在配置时遇到以下问题tomcat7 修复在 Windows 上作为服务运行。

更具体地说,tomcat 是安装在我们客户服务器上的 Web 应用程序的一部分,它必须其中包含所有依赖项。

在这种情况下,tomcat 依赖于 Java JDK/JRE,因此我下载了一个独立的 jdk(版本 1.7u21)及其 jre,并将其放在 tomcat 文件夹中。

所以现在我的目录树是这样的:

tomcat7
  - bin
  - conf
  - jdk
    - jre
  - logs
  - temp
  - webapps
  - work

然后我使用以下命令将其安装为服务

tomcat\bin\service.bat install

并且它可以毫无问题地安装在jvm模式下。

请注意,我修改了 service.bat 文件,以便正确设置所有需要的变量,即 CATALINA_HOME、CATALINA_BASE、JAVA_HOME 和 JRE_HOME,最后两个指向内部 jdk/jre。

但是,如果我尝试启动该服务,我会收到一条错误消息,提示无法启动该服务并显示错误代码 1。

查看 tomcat 日志,其中显示:

[2013-05-22 12:22:09] [info]  [ 5392] Commons Daemon procrun (1.0.15.0 32-bit) started
[2013-05-22 12:22:10] [info]  [ 5392] Running 'AGEws2Tomcat7' Service...
[2013-05-22 12:22:10] [info]  [ 2764] Starting service...
[2013-05-22 12:22:10] [error] [ 2764] %1 is not a valid Win32 application.
[2013-05-22 12:22:10] [error] [ 2764] Failed creating java C:\AGEws\tomcat7\jdk\jre\bin\server\jvm.dll
[2013-05-22 12:22:10] [error] [ 2764] %1 is not a valid Win32 application.
[2013-05-22 12:22:10] [error] [ 2764] ServiceStart returned 1
[2013-05-22 12:22:11] [error] [ 2764] %1 is not a valid Win32 application.
[2013-05-22 12:22:11] [info]  [ 5392] Run service finished.
[2013-05-22 12:22:11] [info]  [ 5392] Commons Daemon procrun finished

我尝试在谷歌上搜索一下该部分Failed creating java,发现了一些关于.dll文件可能依赖的信息,我已经找到了这些信息,但我不明白如果这确实是问题所在,我应该把它放在哪里。

我也尝试在模式下安装服务java,并且它可以工作使用我电脑自己的 JVM,而不是内部 JVM,而我需要它使用内部的。

为了让 tomcatjvm使用其自己的 jdk/jre 作为服务正常工作,我应该做什么/必须做什么?

请注意,我们的 Web 应用程序曾经搭载过 tomcat 5,它在jvm模式下运行完美。

答案1

最后我发现解决方案是将启动和停止模式设置为,java同时提供带有选项的显式 JAVA_HOME

--JavaHome /path/to/internal/jdk

修改之后,即使处于java模式而不是jvm旧服务所用的模式,服务也可以正常运行。

答案2

为了澄清 Matteo 的回答(并帮助不太熟悉 Java 世界的 Windows 用户),我们在 64 位 Windows Server 2012(非 R2)上使用 Tomcat 8 时遇到了完全相同的问题。我们正在使用/配置 IBM Rational DOORS Help 9.6.1 - 虽然我们在尝试在相对现代的 64 位 Windows 版本上进行配置时,在大多数 IBM Java/Tomcat 样式的产品中都看到了这种情况。

我们必须使用以下内容更新位于 Tomcat 安装目录中的 service.bat 文件:

--StartMode java ^
--StopMode java ^
--JavaHome "C:\Program Files (x86)\Java\jre7" ^

启动/停止选项已从“jvm”更改,并且 JavaHome 选项是配置文件的新添加项。然后,您可以通过以下方式执行服务的安装:

service.bat install <service name>

在我们的例子中,服务名称是 DOORS_Help。我们安装了 64 位 Tomcat 和 32 位 JRE,显然它们可以协同工作 - 这是供应商提供的。

编辑:另一个选项似乎是手动设置 JRE_HOME 和 JAVA_HOME 环境变量安装 Tomcat。否则,您将需要重新安装 Windows 服务。我知道这有点与原始帖子相矛盾,但似乎并非所有 Tomcat 安装都一样!

相关内容