tomcat 和 jboss的熱部署(熱發布)問題


所謂的熱部署(熱發布)(下面稱為“熱部署”),就是說,在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?

  1. <Context cookies="true" crossContext="true" antiResourceLocking="true" antiJARLocking="true" >   
  2.    <Manager pathname=""/>       
  3.    <InstanceListener>org.jboss.web.tomcat.security.RunAsListener</InstanceListener>   
  4. </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

 

  1. <Context cookies="true" crossContext="true" antiResourceLocking="true" antiJARLocking="true" >          
  2.     <Manager pathname=""/>          
  3.     <InstanceListener>org.jboss.web.tomcat.security.RunAsListener</InstanceListener>          
  4. </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就會只對該項目重新部署。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM