Tomcat運行時須要jre的支持,通常有兩種方式,一種是用jdk帶的jre,另外一種無需安裝jdk只利用jre。這兩種方式的區別在於啓動的 時候是利用JAVA_HOME仍是利用JRE_HOME(參加Tomcat目錄下的RUNNING.txt)。第一種的好處在於編譯跟運行時用的是一樣的 環境,引用外部包的時候只要能編譯經過,運行時通常是沒有問題的,即便不把外部包拷貝到Tomcat下的lib目錄也能夠正常運行。第二種的好處在於部署 的時候比較精簡,不須要帶上jdk,解壓縮後環境設置一下便可。apache
利用第二種方式,能夠實現Tomcat的綠化部署,將Tomcat跟jre打包成zip文件,解壓便可,啓動時利用批處理設置一下環境變量,下面是我本身的一些腳本:tomcat
直接將jre拷貝到Tomcat主目錄下,這裏爲jre7;如下批處理文件也直接放在Tomcat主目錄下,若是放到其餘目錄能夠自行修改。jvm
解壓縮之後,爲防止window防火牆攔截,直接用命令行打開對應8080端口,可根據具體環境修改:
- @echo off
- ::open the firewall port
- netsh firewall add portopening protocol = ALL port = 8080 name = Tomcat mode = ENABLE
- exit
- @echo off
- set JRE_HOME=%cd%\jre7
- .\bin\startup.bat
- @echo off
- set JRE_HOME=%cd%\jre7
- .\bin\shutdown.bat
若是不想出現Tomcat窗口,能夠將Tomcat安裝爲服務,利用bin目錄的service.bat進行安裝。但注意service.bat中默認只查找jdk路徑,若是隻設置JRE_HOME的話,會致使安裝失敗,若是設置JAVA_HOME的話能夠直接啓動。爲了只用jre進行綠化,須要修改service.bat內容,具體把下面兩行:
- rem Set the server jvm from JAVA_HOME
- set "PR_JVM=%JAVA_HOME%\jre\bin\server\jvm.dll"
- if exist "%PR_JVM%" goto foundJvm
- rem Set the client jvm from JAVA_HOME
- set "PR_JVM=%JAVA_HOME%\jre\bin\client\jvm.dll"
- if exist "%PR_JVM%" goto foundJvm
- rem Set the server jvm from JAVA_HOME
- set "PR_JVM=%cd%\jre7\bin\client\jvm.dll"
- if exist "%PR_JVM%" goto foundJvm
- rem Set the client jvm from JAVA_HOME
- set "PR_JVM=%cd%\jre7\bin\client\jvm.dll"
- if exist "%PR_JVM%" goto foundJvm
- @echo off
- set JRE_HOME=%cd%\jre7
- sc query tomcat6 | find "SERVICE_NAME: tomcat6" > nul
- if %errorlevel% EQU 0 (echo Tomcat6已經安裝) else (call .\bin\service.bat install)
- sc query tomcat6 | find "STATE : 4 RUNNING" > nul
- if %errorlevel% EQU 0 (echo Tomcat6已經啓動) else (net start tomcat6)
- exit