Hi,
I had to reinvent the wheel again today (or was it yesterday ?), just to make my preinstalled Tomcat server on windows to run as a service, I did not want to reinstall Tomcat, but rather wanted a short fix to make my pre-installed tomcat server run as a service in windows. I have done this several times in the past but had forgotten to remember the exact process... hence this post as It'd help me (of all the people) remember.
Here's how I did it:
SO: If you want to run tomcat as a windows service, there are two ways to do it. Once is while installing choose to install as service, or if you already have installed it through command line, then you can run the following command to install tomcat as a service.
%CATALINA_HOME%bintomcat -install “Apache Tomcat” “%JAVA_HOME%jrebinclassicjvm.dll” -Djava.class.path="%CATALINA_HOME%binbootstrap.jar;%JAVA_HOME%libtools.jar” -Dcatalina.home="%CATALINA_HOME%” -Xrs -start org.apache.catalina.startup.Bootstrap -params start -stop org.apache.catalina.startup.Bootstrap -params stop -out “%CATALINA_HOME%logsstderr.log”
The above command will install tomcat as a service. If this fails then its possible that tomcat.exe is not there in %CATALINA_HOME%bin directory. You can just download tomcat again and extract tomcat.exe and put this into the directory. (I was not having this in my tomcat local directory because when installing for the first time I choose NOT to install it as a service).
After installing the service, you can either go to control panel/administrative tools/services and start and stop the service, or you can run it from command line
net start “Apache Tomcat” // to start the service
net stop “Apache Tomcat” // to stop the service.
If you ever want to uninstall tomcat as a service you can run this command
“%CATALINA_HOME%bintomcat.exe” -uninstall “Apache Tomcat”
Service not starting issues..
When I did this my service did not start properly, and I went to the event viewer log to see the problem. It was not able to find jvm.dll in the path so I had to search and correct the path for dll and things worked just fine. Note that when I made the path change, I had to first uninstall the service and then install it again
to make life easier: (the following code would do the trick. Simple save this is servcie.bat in your tomcat/bin directory and run it) : This code aint mine. It's from Mark Turk
@echo off
if "%OS%" == "Windows_NT" setlocal
rem
rem NT Service Install/Uninstall script
rem
rem Options
rem install Install the service using Tomcat5 as service name.
rem Service is installed using default settings.
rem remove - Remove the service from the System.
rem
rem name (optional) If the second argument is present it is considered
rem to be new service name
rem
rem $Id: service.bat,v 1.5 2004/04/08 16:49:37 mturk Exp $
rem ------------------------------------------------------
rem Guess CATALINA_HOME if not defined
set CURRENT_DIR=%cd%
if not "%CATALINA_HOME%" == "" goto gotHome
set CATALINA_HOME=%cd%
if exist "%CATALINA_HOME%\bin\tomcat5.exe" goto okHome
rem CD to the upper dir
cd ..
set CATALINA_HOME=%cd%
:gotHome
if exist "%CATALINA_HOME%\bin\tomcat5.exe" goto okHome
echo The tomcat.exe was not found...
echo The CATALINA_HOME environment variable is not defined correctly.
echo This environment variable is needed to run this program
goto end
:okHome
if not "%CATALINA_BASE%" == "" goto gotBase
set CATALINA_BASE=%CATALINA_HOME%
:gotBase
set EXECUTABLE=%CATALINA_HOME%\bin\tomcat5.exe
rem Set default Service name
set SERVICE_NAME=Tomcat5
if "%1" == "" goto displayUsage
if "%2" == "" goto setServiceName
set SERVICE_NAME=%2
:setServiceName
if %1 == install goto doInstall
if %1 == remove goto doRemove
echo Unknown parameter "%1"
:displayUsage
echo
echo Usage: service.bat install/remove [service_name]
goto end
:doRemove
rem Remove the service
"%EXECUTABLE%" //DS//%SERVICE_NAME%
echo The service '%SERVICE_NAME%' has been removed
goto end
:doInstall
rem Install the service
rem Use the environment variables as an exaple
rem Each command line option is prefixed with PR_
set PR_DISPLAYNAME=Apache Tomcat
set PR_DESCRIPTION=Apache Tomcat Server - http://jakarta.apache.org/tomcat
set PR_INSTALL=%EXECUTABLE%
set PR_LOGPATH=%CATALINA_HOME%\logs
set PR_CLASSPATH=%CATALINA_HOME%\bin\bootstrap.jar
"%EXECUTABLE%" //IS//%SERVICE_NAME% --Jvm auto --StartClass org.apache.catalina.startup.Bootstrap --StopClass org.apache.catalina.startup.Bootstrap --StartParams start --StopParams stop
rem Clear the environment variables. They are not needed any more.
set PR_DISPLAYNAME=
set PR_DESCRIPTION=
set PR_INSTALL=
set PR_LOGPATH=
set PR_CLASSPATH=
rem Set extra parameters
"%EXECUTABLE%" //US//%SERVICE_NAME% --JvmOptions "-Dcatalina.base=%CATALINA_BASE%;-Dcatalina.home=%CATALINA_HOME%;-Djava.endorsed.dirs=%CATALINA_HOME%\common\endorsed" -StartMode jvm --StopMode jvm
rem More extra parameters
set PR_STDOUTPUT=%CATALINA_HOME%\logs\stdout.log
set PR_STDERROR=%CATALINA_HOME%\logs\stderr.log
"%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp"
echo The service '%SERVICE_NAME%' has been installed
:end
cd %CURRENT_DIR%