所謂的熱部署(熱發布)(下面稱為“熱部署”),就是說,在web工程發布之后,不可避免的,會遇到修改BUG的問題。現在的熱部署就是為了解決這個問題,其功能就是說:在不停止web服務的同時,對jsp和Java類進行修改,修改后的效果同時還能夠在頁面上顯示出來。節省了調試時間,提高了效率。不過,修改配置文件是個例外,如果對配置文件做修改,一定要重啟web服務。
常用的web服務器一般為tomcat和jboss,現一一做介紹。
1.tomcat熱部署
在tomcat中支持熱部署有兩種方式(在原理上來說,這兩種方式是一致的,只是放的位置不同)
a)在catalina_base/conf/catalina/localhost/中依照manager.xml定義一個xml文件,比如我的項目稱作sodoperation,我們就可以寫一個sodoperation.xml,內容如下:
<context path="/sodoperation" docBase="d:/myportal/sodoperation/src/webapp"/>
其中,path指的是你在tomcat中的項目名稱,就像manager一樣,docBase是指你的項目所在的web目錄。一直到歡迎頁面為止(也就是web-inf的前一個目錄)。但是一般來說,這個目錄中最好不要有中文,如果有的話,可以在文件開始加入
<?xml version='1.0" encoding='utf-8' ?>來試一下,即整個文件變為:
<?xml version='1.0" encoding='utf-8' ?>
<context path="/sodoperation" docBase="d:/myportal/sodoperation/src/webapp"/>
這樣就可以了,如果用這種廣告,同時使用myeclipse的部署的話,輕易不要remove,這樣會使文件都會被刪掉,不能持久。所以,建議使用第二種方法。
b)第二種方法和第一種方法在原理上是一致的,其區別就是位置的不同,這次在catalina_base/conf下的server.xml,在文件末加入:
<context path="/sodoperation" docBase="d:/myportal/sodoperation/src/webapp"/>
解釋和上面一樣,這種方法在啟動tomcat后,會在catalina_base/conf/catalina/localhost/中加入一個與第一種方法的文件。這樣保證,只要對server.xml不做修改,你可以隨便對新生成的文件刪除,對熱部署沒有任何問題
2.jboss熱部署
在jboss中做熱部署也有兩種方法,因為jobss集成了tomcat,也可以說這兩種方法是在jobss上的一個修改。
a)修改jboss-4.0.4RC1/server/default/deploy/jbossweb-tomcat55.sar/context.xml
<Context cookies="true" crossContext="true" antiResourceLocking="true" antiJARLocking="true">
<Manager pathname=""/>
<InstanceListener>org.jboss.web.tomcat.security.RunAsListener</InstanceListener>
</Context>
加上紅色的部分,重啟jboss,再用myeclipse Redeploy project的時候就不需要重啟,部署完了直接開瀏覽器預覽啦
在一個jboss中可以發布多個項目,如果修改一個項目后只想重啟該項目,其它項目不重啟,可以使用jboss的熱部署。
1、修改jboss的配置文件server/default/deploy/jboss-web.deployer/context.xml
在Context元素中添加antiResourceLocking="true" 和 antiJARLocking="true" 屬性,如下
[html] view plain copy print?
- <Context cookies="true" crossContext="true" antiResourceLocking="true" antiJARLocking="true" >
- <Manager pathname=""/>
- <InstanceListener>org.jboss.web.tomcat.security.RunAsListener</InstanceListener>
- </Context>
<Context cookies="true" crossContext="true" antiResourceLocking="true" antiJARLocking="true" > <Manager pathname=""/> <InstanceListener>org.jboss.web.tomcat.security.RunAsListener</InstanceListener> </Context>
測試環境中,經常要更新代碼,需要重新加載工程,以前的辦法都是重啟jboss,但是這個浪費太多的時間,有一個辦法可以解決這個問題,就是jboss的熱部署
#vim /usr/local/jboss-4.2.3.GA/server/default/deploy/jboss-web.deployer/context.xml
- <Context cookies="true" crossContext="true" antiResourceLocking="true" antiJARLocking="true" >
- <Manager pathname=""/>
- <InstanceListener>org.jboss.web.tomcat.security.RunAsListener</InstanceListener>
- </Context>
<Context cookies="true" crossContext="true" antiResourceLocking="true" antiJARLocking="true" > <Manager pathname=""/> <InstanceListener>org.jboss.web.tomcat.security.RunAsListener</InstanceListener> </Context>
加入紅色部分,然后重啟jboss,以后不需要重啟jboss就可以加載工程
2、重啟Jboss
3、修改項目下的web.xml(在web.xml中增加或者刪除空行就可以),jboss就會只對該項目重新部署。