Tomcat熱部署

使用過tomcat的人都知道,爲了在tomcat啓動時能夠加載你的Web工程,我們需要將Web工程打包成.war文件放到tomcat指定的目錄下,也就是%CATALINA_HOME%/webapps目錄。這樣Tomcat在啓動的時候就回去加載這個Web工程。這樣做有兩個不好的地方:
[list=1]
[*]不能實現熱部署。也就是當你修改了你的web工程中的某個類時,必須要重新打包才能反應出變化。即使你做了很小的一個修還也要重新打包部署你的web工程,這樣做有時候是很耗費時間的。
[*]沒有辦法定義你自己的Context。在Jboss裏面我們可以在application.xml裏面定義你的Web項目在訪問時候的根目錄,也就是Context。但是在tomcat裏面,如果使用打包部署的方式是沒有辦法指定Context的。
[/list]
爲了解決上面的兩個問題,我們可以再Tomcat的配置文件server.xml中(位於%CATALINA_HOME%/conf/server.xml),添加一個<Context/>標籤。具體如下:

<Host name="localhost"
debug="DEBUG"
appBase="webapps"
unpackWARs="true"
autoDeploy="true"
xmlValidation="false"
xmlNamespaceAware="false">
<Context path="/myapp" docBase="c:/myapp"/>

.....

....
</Hose>

實現tomcat熱部署需要修改context.xml,位於%CATALINA_HOME%/conf/context.xml。如下:

<Context antiJARLocking="true" antiResourceLocking="true">

<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>

<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
</Context>

注意放置<Context>標籤的位置,在<Host>標籤內部。
其中屬性path指定了Context。按照以上的配置,你訪問你的web工程的url應該是:http://localhost:8080/myapp/xxx.do這樣的形式。http://localhost:8080/myapp是根路徑。
doBase屬性告訴tomcat到c:/myapp這個目錄下去加載web工程。一般這個目錄都是我們的開發目錄,這樣我們改動就可以直接反映出來,而不需要重新部署。
當然對代碼做了修改需要重新編譯,而且修改了任何配置文件最好是重新啓動一下Tomcat。 :shock:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章