日期:2014-05-16  浏览次数:20434 次

tomcat 免安装版注册服务与取消服务
进入tomcat主目录,在cmd命令行:
service.bat install
service.bat remove 或 service.bat uninstall

注册新服务
在命令行里进入到下载的免安装版的tomcat目录下的bin目录
在此bin目录下运行
service.bat install
此时就能把免安装版的tomcat注册为系统服务,
你再到windows的控制面板--->计算机管理--->服务,在服务列表里就能看到你刚新加的服务

删除服务:
service.bat remove 或 service.bat uninstall

原理很简单
Tomcat/bin目录下自带了一个service.bat文件,我们执行的就是这个bat文件,
打开service.bat文件,你会发现以下代码,重要代码用红色标记:


set "EXECUTABLE=%CATALINA_HOME%\bin\tomcat7.exe"

rem Set default Service name
set SERVICE_NAME=Tomcat7
set PR_DISPLAYNAME=Apache Tomcat 7

if "x%1x" == "xx" goto displayUsage
set SERVICE_CMD=%1
shift
if "x%1x" == "xx" goto checkServiceCmd
:checkUser
if "x%1x" == "x/userx" goto runAsUser
if "x%1x" == "x--userx" goto runAsUser
set SERVICE_NAME=%1
set PR_DISPLAYNAME=Apache Tomcat %1
shift
if "x%1x" == "xx" goto checkServiceCmd
goto checkUser
:runAsUser
shift
if "x%1x" == "xx" goto displayUsage
set SERVICE_USER=%1
shift
runas /env /savecred /user:%SERVICE_USER% "%COMSPEC% /K \"%SELF%\" %SERVICE_CMD% %SERVICE_NAME%"
goto end
:checkServiceCmd
if /i %SERVICE_CMD% == install goto doInstall
if /i %SERVICE_CMD% == remove goto doRemove
if /i %SERVICE_CMD% == uninstall goto doRemove
echo Unknown parameter "%1"
:displayUsage
echo.
echo Usage: service.bat install/remove [service_name] [/user username]
goto end


:doRemove
rem Remove the service
"%EXECUTABLE%" //DS//%SERVICE_NAME%
if not errorlevel 1 goto removed
echo Failed removing '%SERVICE_NAME%' service
goto end
:removed
echo The service '%SERVICE_NAME%' has been removed
goto end

:doInstall
rem Install the service
echo Installing the service '%SERVICE_NAME%' ...
echo Using CATALINA_HOME:    "%CATALINA_HOME%"
echo Using CATALINA_BASE:    "%CATALINA_BASE%"
echo Using JAVA_HOME:        "%JAVA_HOME%"
echo Using JRE_HOME:         "%JRE_HOME%"


1.红色代码1:
set SERVICE_NAME=Tomcat7
set PR_DISPLAYNAME=Apache Tomcat
如果把tomcat设成服务成功后,就要会系统服务里面看到,服务名就是在这里设的
你如果改一下服务名的话,可以把上面的SERVICE_NAME,PR_DISPLAYNAME的值换掉。

2.红色代码2:

:doRemove和:doInstall这段代码就相当于这个bat文件有两个方法,一个叫doRemove,一个doInstall,看名字很好理解,doInstall就表示安装服务,doRemove表示删除服务

3.红色代码3:
if %1 == install goto doInstall
if %1 == remove goto doRemove
if %1 == uninstall goto doRemove

但是在cmd命令行里却用的是:
service.bat install
是如何映射的呢?
主要是通过如下代码来实现通过上面可以看到,%1就表示我们在service.bat install输入的第一个参数就是install,也就是%1=install,发现if %1 == install goto doInstall
于是就执行doInstall方法,安装服务到系统,