bjtdeyx

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            1 隨筆 :: 1 文章 :: 3 評論 :: 0 Trackbacks

          可以修改類不用重啟Tomcat加載整個項目(手工啟動) 
              配置reloadable=true(自動重載) 
              使用Debug模式,前提是僅限于局部修改。(修改類不用重啟--熱加載) 

              Tomcat輕小,而WebLogic、WebSphere對硬件要求比較高,吃內(nèi)存、耗CUP。JBoss類更改不會重啟(傳說,我沒用過,不知道!)。 

              在使用Eclipse+Tomcat開發(fā)Java項目的時候常常會碰到這樣的情況,已修改Java文件Tomcat就會自動重啟,接下來就是漫長的等待服務重啟完畢。那其實大多數(shù)的Java文件修改是沒有必要重啟服務的,只有一些特定的Java文件,比如說只有重啟服務的時候才會調(diào)用的Java代碼才需要重啟服務。 

              一修改java代碼就重新部署(console有明顯提示),且會話失效,設置服務器為debug模式(debug on server),否則修改不起作用. 

              什么時候應該redeploy,什么時候應該重啟tomcat。如果項目大,redeploy和重啟tomcat的系統(tǒng)開銷是很大的,經(jīng)常要等很長時間。 

              Tomcat運行時動態(tài)重載類, 實現(xiàn)重載功能的測試jsp。當系統(tǒng)中有很多類時,如果開啟了Tomcat的reloadable=true,那么每當相關文件改變時,Tomcat會停止 web app并釋放內(nèi)存,然后重新加載web app.這實在是個耗時的工程. 如果能有只重載某幾個類的功能,將極大的滿足我這個即時調(diào)試狂。 

          1.修改類不重啟Tomcat(不用手動重啟) 
              首先需要設置server.xml中的Context reloadable="true", true自動重載(不是重啟!), false手動重載。(如果項目在Tomcat中,應該去Tomcat目錄設置。) 
              Eclipse EE 設置方式,文件設置:server.xml > reloadable="false" 界面設置:Server > Modules > Edit > webapp > Auto reloading enabled > false 
              開發(fā)階段通常都設為true,方便開發(fā),在發(fā)布階段應該設置為false,提高應用程序的訪問速度。可以選擇把其他不相關的項目先從webapps移出,這樣tomcat加載的項目就少了,相應也就快了。


          這里是重點:修改tomcat  conf目錄下的server.xml,添加:

          Xml代碼   
          1. <Context path="/struts2" docBase="D:\workspace\lee_struts2\WebRoot" reloadable="true"/>  

              注:docBase="",中的內(nèi)容為項目的WebRoot目錄

           然后在把MyEclipse server中 tomcat 的開發(fā)模式設置debug模式,ok確定。

           然后啟動tomcat,隨意修改項目中的一個文件,就會看到Console窗口重新加載項目,ok,搞定...

          (問題:設置debug模式修改代碼后會出現(xiàn)“hot code replace failed”錯誤,不用管,繼續(xù)就ok,如果不想看見,讓錯誤不提示就ok,原因是debug模式代碼正在用,所以replase失敗,但其實是成功的!而設置run模式就不報錯,同時在修改代碼后也是熱部署的,刷新頁面即可!)

           

          2.修改類不重啟Tomcat有兩種方式:熱部署、熱加載 
              熱部署:容器狀態(tài)在運行時重新部署整個項目。這種情況下一般整個內(nèi)存會清空,重新加載,這種方式可能會造成sessin丟失等情況。tomcat 6確實可以熱部署了,而且會話也沒丟. 
              熱加載:最好是在調(diào)試過程中使用,免得整個項目加載,Debug模式支持熱加載。容器狀態(tài)在運行時重新加載改變編譯后的類。在這種情況下內(nèi)存不會清空,sessin不會丟失,但容易造成內(nèi)存溢出,或者找不到方法。 

              一般改變類的結(jié)構(gòu)和模型就會有異常,在已經(jīng)有的變量和方法中改變是不會出問題的(Eclipse、MyEclipse8、JBuilder、 IntelliJ IDEA…)。 

          3.自動編譯JSP 
          build Automatically 

          修改Tomcat源代碼實現(xiàn)realoadable!不推薦~

          posted on 2012-02-22 11:32 心碎逍遙 閱讀(18154) 評論(1)  編輯  收藏

          評論

          # re: 修改類不重啟tomcat 自動加載項目 2013-10-09 16:47 sfds
          gfd  回復  更多評論
            


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 武邑县| 沙田区| 平武县| 新邵县| 根河市| 修文县| 河北省| 千阳县| 南平市| 家居| 芜湖市| 乐业县| 红河县| 容城县| 梅河口市| 凤翔县| 昭通市| 岳普湖县| 宾阳县| 沽源县| 苏州市| 兖州市| 丹巴县| 宜都市| 樟树市| 喀喇沁旗| 尖扎县| 和平区| 呈贡县| 平阴县| 绿春县| 涡阳县| 扶风县| 栾川县| 巴彦县| 岑溪市| 昂仁县| 卓尼县| 锡林郭勒盟| 措美县| 凤翔县|