Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I have the following problem configuring tomcat 7 to run as a service on windows.

More specifically, tomcat is part of a web application which is installed on our customers' servers, and it must have all of its dependencies inside.

In this case, tomcat depends on the Java JDK/JRE, so I downloaded a standalone jdk (version 1.7u21) with its jre and placed it inside the tomcat folder.

So now my directory tree is like this:

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

I then proceeded installing it as a service using the command

tomcat\bin\service.bat install

And it gets installed with no problem, in jvm mode.

Please note that I modified the service.bat file so that all the needed variables are correctly set, that is, CATALINA_HOME, CATALINA_BASE, JAVA_HOME and JRE_HOME, and the last two point to the internal jdk/jre.

However, if I try to start the service, I get an error which says that it is unable to start the service and refers to error code 1.

Looking in the tomcat logs, it says:

[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

I tried googling a bit about the part Failed creating java and I found out some information about a possible dependency on a .dll file, which I have found but I do not understand where should I place it, if this is indeed the problem.

I also tried installing the service in java mode, and it works but uses my computer's own JVM instead of the internal one, while I need it to use the internal one.

What can/must I do in order to have tomcat work properly as a service in jvm mode, using its own jdk/jre?

Please note that our web application used to ship with tomcat 5, which worked perfectly in jvm mode.

share|improve this question

1 Answer 1

up vote 1 down vote accepted

In the end I found out that the solutions was to set the start and stop mode to java while at the same time providing an explicit JAVA_HOME with the option

--JavaHome /path/to/internal/jdk

After doing the modification the service works fine, even if in java mode instead of jvm mode as the old service used to.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.