<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    李順利
    隨筆-50  評論-170  文章-0  trackbacks-0

    Java開發Web程序中修改類文件和配置文件不重啟服務器的方法

     

     

    關鍵詞

    Java Web 開發 配置 文件 重啟 服務器 tomcat JavaRebel 熱加載 重新部署 劉長炯

     

    開發環境

    1.  JDK

    2.  MyEclipse

    3.  Tomcat

    4.  Struts2

    5.  JavaRebel/JRebel

     

    拜讀了劉長炯老師的Java開發生產力視頻: 不重新部署 Web 模塊熱(JavaRebel) 兩招Struts2開發生產力(2008.11.14更新)!,從中學得很多,也學習里面的精華,自己實際操作的一下,發現非常有效率,推薦大家閱讀劉長炯老師的這兩篇博文。

    大家知道,在我們開發web項目的時候重啟應用服務器是我們最煩惱的事情,每次修改類文件或者配置文件后,我們必須重啟服務器來重新加載,使得我們的修改才能及時的顯現出來,這個時候,我們只能等待服務器的重啟,一般都需要20幾秒,每天重啟服務器的次數多了,我們開發項目的效率就大大折扣了,所以我們要尋找一個高效率開發web項目的方法,劉長炯老師就給我們一個非常好的途徑。

    在這里,依著劉長炯老師的思路,我們來個“三步走“

    第一步:修改struts.properties來實現熱加載Struts2的配置文件

    (注:開發環境是在Struts2下)

    src目錄下新建一個文件struts.properties,打開編輯,加入以下語句

    #Whether Struts is in development mode or not

    struts.devMode=true

    #Whether the localization messages should automatically be reloaded

    struts.i18n.reload=true

    #Whether to reload the XML configuration or not

    struts.configuration.xml.reload=true

    上面的語句分別為是否為struts開發模式、是否國際化信息自動加載、是否加載xml配置(true,false),修改后重啟服務器后,就能體現效果。在我們修改Struts2的配置信息的時候就不需再重啟服務器了,而且Struts2的配置還包括include標簽(防止配置文件膨脹),例如下面的配置:

    <struts>

        <include file="struts-back.xml"></include>

        <include file="struts-custom.xml"></include>

    </struts>

    上面的struts.properties會對每個配置文件都產生作用。

    對于上面的測試,我實際上發現:上面的配置在純Struts2開發中,是可以實現對配置文件和國際化文件熱加載功能的,但我在SSH開發中并不能實現功能,而只能實現對國際化的熱加載,不能對配置文件的熱加載。

     

    第二步:解決類的熱加載

     

    方法一:修改MyEclipse 中的Tomcat配置,加入JRebel的應用

    既然要使用JRebel,那就要我們下載JRebel,到JRebel的官網上面下載最新的JRebel包,需要說明的是JRebel并非免費的產品,提供30天的試用期限,不過劉長炯老師也提供了破解方法,需要使用的請看JRebel 3.0 M1 破解版下載及破解手記,在這里我就不說如何破解。

    下載后解壓,就可以看到jrebel.jar了。

    使用配置?

    Jrebel的使用一般都依賴于服務器,就那tomcat來說,主要是配置JDKOptional Java VM arguments(打開Myeclipse中的windows->Preferences->MyEclipse …->Servers->Tomcat->

    選擇配置的Tomcat,單擊,展開JDK選項),加入下面的語句

    -noverify -javaagent:D:\Jars\jrebel-2.1a\jrebel.jar

    說明一下,“-noverify -javaagent:”是固定的,后面加上的是jrebel.jar在你電腦上面的物理路徑,請修改為你的電腦配置,不然不會成功。

    clip_image002

    這一步是為了解決Java類文件熱加載的問題,實際上,有一個更簡單的方法吧,并不需要使用JRebel包,而是我們進行適當的配置

     

    方法二:

    自動加載修改后的項目不需重啟服務器(只對Java文件,對配置文件不可以)

    WebRoot下的META-INF文件夾中新建一個名為context.xml文件,在里面寫

    <Context reloadable = "true">

    </Context>

    注意大小寫

    方法二的思想是源自張孝祥老師的講解,不需要修改tomcat的配置,減少tomcat的啟動時間,最重要的是,能夠完成一樣的作用——對Java類進行熱加載,但是有的時候,特別是在SSH開發中,會出現異常,建議不要使用這種方法,而是使用第一種方法使用JRebel

     

    這兩步下來, 可以在新加入類以及Struts配置修改后, 完全無需重啟或者重新發布即可立即測試! JAR包暴多的情況下, 可以讓我們不再等待1020秒了。

     

    第三步:測試是否有效了

    1.       測試類的熱加載(具體的測試請大家完成,我僅貼出我的測試結果)

    我在一個已知的登錄系統中,加入一個自己留的后臺用戶,不重啟服務器登錄

    if("TestJRebel".equals(operator.getOperatorName()))

           {

               System.out.println("通過自己留后臺用戶TestJRebel登錄,大家不要這樣哦。");

               return true;

           }

    clip_image004

    2.       測試配置文件和i18n文件的熱加載(具體的測試請大家完成)

     

    高效率的開發web程序是我們的追求,謝謝劉長炯老師的博文。

     

    如果有什么問題的話,可以通過Q506817493 E:leeshunli@qq.com,大家一起交流。

     

    順利寫于20091114



    博客中的一些下載已經放到了百度云了,請根據需要下載。【點我去百度云下載】

    最后弱弱地說一下,如果可以的話,轉載請提供出處( ),謝謝。
    posted on 2010-01-07 21:19 李順利 閱讀(4954) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产成人久久一区二区三区| 男女猛烈无遮掩视频免费软件 | 色五月五月丁香亚洲综合网| 免费人妻av无码专区| 手机看片国产免费永久| 亚洲日韩乱码久久久久久| 国产精品视_精品国产免费| 中文字幕不卡免费视频| 亚洲av乱码一区二区三区| 免费一级特黄特色大片在线观看| 最近免费中文字幕中文高清| avtt天堂网手机版亚洲| 亚洲av无码成人精品区| 最近免费中文字幕大全免费 | 狼群影院在线观看免费观看直播| 亚洲精品第一国产综合亚AV| 久久精品国产69国产精品亚洲| 亚洲国产精品免费观看| 视频免费1区二区三区| 亚洲伊人tv综合网色| 国产v片免费播放| 在线免费中文字幕| 天堂亚洲免费视频| 久久亚洲精品专区蓝色区| 亚洲国产av无码精品| 手机在线毛片免费播放| 国产亚洲免费的视频看| 精品特级一级毛片免费观看| 亚洲第一页在线观看| 超清首页国产亚洲丝袜| 成人无码区免费视频观看| 免费人成在线观看网站| 最新亚洲人成网站在线观看| 亚洲精品中文字幕无码AV| 中文亚洲AV片在线观看不卡| 国产精品色午夜免费视频| 99精品全国免费观看视频| 免费在线看污视频| 羞羞视频在线观看免费| 亚洲精品蜜夜内射| 国产v亚洲v天堂a无|