zhyiwww
          用平實的筆,記錄編程路上的點點滴滴………
          posts - 536,comments - 394,trackbacks - 0
          ?

          在我們開發Web程序的過程,可能您也遇到過這樣的問題,如果你正在開發一個web程序,然后發布到tomcat下面,那么,你在修改類的代碼的時候,要想生效,就要重新啟動tomcat,

          這樣就很麻煩,也影響效率。

          其實,這個問題還是有辦法解決的。下面是我在從網上看了一些資料后,自己總結和使用的方法。

          開發環境:

          Eclipse3.3?+?Tomcat6.0.14?+?JDK1.6

          開發環境的安裝和配置略。

          類自動編譯的實現步驟是:

          1)?修改tomcat\conf\server.xml

          添加下面的紫色部分的代碼,內容和位置如下:

          ??<Service?name="Catalina">

          ?

          ?<!--??zhangyi?add?to?reload?servlet?automaticly?-->

          ?<DefaultContext?reloadable="true"/>

          ????<!--The?connectors?can?use?a?shared?executor,?you?can?define?one?or?more?named?thread?pools-->

          ????<!--

          ????<Executor?name="tomcatThreadPool"?namePrefix="catalina-exec-"?

          ????????maxThreads="150"?minSpareThreads="4"/>

          ????-->????

          ????<!--?A?"Connector"?represents?an?endpoint?by?which?requests?are?received

          ?????????and?responses?are?returned.?Documentation?at?:

          ?????????Java?HTTP?Connector:?/docs/config/http.html?(blocking?&?non-blocking)

          ?????????Java?AJP??Connector:?/docs/config/ajp.html

          ?????????APR?(HTTP/AJP)?Connector:?/docs/apr.html

          ?????????Define?a?non-SSL?HTTP/1.1?Connector?on?port?8080

          ????-->

          ????<Connector?port="8080"?protocol="HTTP/1.1"?

          ???????????????connectionTimeout="20000"?

          ???????????????redirectPort="8443"?/>

          2)??在tomcat\conf\Catalina\localhost下面添加工程的發布配置文件

          如:zysd.xml文件,發布我的工程zysd

          配置代碼如下:

          <Context?docBase="H:\\WorkSpace3.3\\ZY-STRUTS-DEMO\\WebRoot"?path="/zysd"?reloadable="true">

          </Context>

          docBase執行你的開發工程的web目錄,這樣你在開發的時候,你的代碼就會自動編譯,但是,要讓編譯生效,還是要加上

          reloadable="true"

          3)?啟動tomcat,測試

          如果上面的配置完畢,就可以生效了。

          我的servlet測試代碼如下:

          package?org.zy.demo.sd.servlet;

          import?java.io.IOException;

          import?java.io.PrintWriter;

          import?javax.servlet.ServletException;

          import?javax.servlet.http.HttpServlet;

          import?javax.servlet.http.HttpServletRequest;

          import?javax.servlet.http.HttpServletResponse;

          import?org.zy.demo.sd.ImageUtil;

          public?class?CollectParam?extends?HttpServlet?{

          ?public?CollectParam()?{

          ??super();

          ?}

          ?public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)

          ???throws?ServletException,?IOException?{

          ?

          ??response.setContentType("text/html");

          ??

          ??PrintWriter?out?=?response.getWriter();

          ??out

          ????.println("<!DOCTYPE?HTML?PUBLIC?\"-//W3C//DTD?HTML?4.01?Transitional//EN\">");

          ??out.println("<HTML>");

          ??out.println("??<HEAD><TITLE>A?Servlet</TITLE></HEAD>");

          ??out.println("??<BODY>");

          ??out.print("????This?is?");

          ??out.print("<br>");

          ??out.print(this.getClass());

          ??out.println("<br>");

          ??

          ??//out.println(ImageUtil.getImageUrl("map.png"));

          ??

          ??out.println("<br>");??

          ??out.println("using?the?GET?method");

          ??out.println("??</BODY>");

          ??out.println("</HTML>");

          ??out.flush();

          ??out.close();

          ?}

          ?public?void?init()?throws?ServletException?{

          ??//?Put?your?code?here

          ?}

          }

          測試url為:http://localhost:8080/zysd/servlet/CollectParam

          結果如下:

          This?is?

          class?org.zy.demo.sd.servlet.CollectParam

          using?the?GET?method?

          入后我就寫了一個測試類:

          package?org.zy.demo.sd;

          public?class?ImageUtil?{

          ?public?static?String?getImageUrl(String?imgName){

          ??return?"/images/view/"+imgName;

          ?}

          }

          然后,在上面的servlet里面調用如下:

          out.println(ImageUtil.getImageUrl("map.png"));

          也就是,直接寫完類,就可以測試上面的鏈接,結果如下:

          This?is?

          class?org.zy.demo.sd.servlet.CollectParam

          /images/view/map.png?

          using?the?GET?method?

          由此可見,修改已經生效。

          我們可以看一下控制臺的輸出:

          信息:?Initialization?processed?in?2712?ms

          2007-9-21?15:55:53?org.apache.catalina.core.StandardService?start

          信息:?Starting?service?Catalina

          2007-9-21?15:55:53?org.apache.catalina.core.StandardEngine?start

          信息:?Starting?Servlet?Engine:?Apache?Tomcat/6.0.14

          log4j:WARN?No?appenders?could?be?found?for?logger?(org.apache.struts.uti

          tyMessageResources).

          log4j:WARN?Please?initialize?the?log4j?system?properly.

          2007-9-21?15:56:04?org.apache.coyote.http11.Http11Protocol?start

          信息:?Starting?Coyote?HTTP/1.1?on?http-8080

          2007-9-21?15:56:04?org.apache.jk.common.ChannelSocket?init

          信息:?JK:?ajp13?listening?on?/0.0.0.0:8009

          2007-9-21?15:56:04?org.apache.jk.server.JkMain?start

          信息:?Jk?running?ID=0?time=0/61??config=null

          2007-9-21?15:56:04?org.apache.catalina.startup.Catalina?start

          信息:?Server?startup?in?11541?ms

          2007-9-21?15:56:34?org.apache.catalina.core.StandardContext?reload

          信息:?Reloading?this?Context?has?started

          2007-9-21?15:57:15?org.apache.catalina.core.StandardContext?reload

          信息:?Reloading?this?Context?has?started

          2007-9-21?15:57:27?org.apache.catalina.core.StandardContext?reload

          有黑體部分,我們可以知道,其實當前的Context已經在自動重載了。

          所以,通過這種開發模式,可以給我們帶來很大的方便。您不妨也試一下,如果有其他的好地新的體會,大家可以共同討論。



          |----------------------------------------------------------------------------------------|
                                     版權聲明  版權所有 @zhyiwww
                      引用請注明來源 http://www.aygfsteel.com/zhyiwww   
          |----------------------------------------------------------------------------------------|
          posted on 2007-09-21 16:28 zhyiwww 閱讀(1733) 評論(5)  編輯  收藏

          FeedBack:
          # re: web開發中類的自動編譯和載入
          2007-09-21 17:38 | 千里冰封
          呵呵,不錯,  回復  更多評論
            
          # re: web開發中類的自動編譯和載入
          2007-09-21 18:09 | zhyiwww
          謝謝您的評論和鼓勵。  回復  更多評論
            
          # re: web開發中類的自動編譯和載入
          2007-09-22 00:07 | 千里冰封
          不錯,頂了  回復  更多評論
            
          # re: web開發中類的自動編譯和載入
          2007-11-14 16:29 | 路過
          自動裝載在開發階段的確非常有用,但是在運行階段,為了得到更好的性能,還是關閉了比較好!  回復  更多評論
            
          # re: web開發中類的自動編譯和載入
          2009-02-09 10:59 | Yvon
          查資料中,謝謝博主分享  回復  更多評論
            

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


          網站導航:
           
          主站蜘蛛池模板: 左贡县| 盐城市| 麦盖提县| 枣强县| 和顺县| 惠东县| 刚察县| 巫山县| 浦北县| 阜宁县| 宜兰市| 全州县| 万全县| 宜君县| 泉州市| 乌鲁木齐县| 明光市| 邻水| 新营市| 铜鼓县| 凉城县| 百色市| 渭南市| 葫芦岛市| 古丈县| 玛曲县| 桃园县| 赣榆县| 亳州市| 宁陵县| 富宁县| 华亭县| 东辽县| 张家港市| 浠水县| 洪湖市| 武穴市| 邵阳市| 南通市| 肃南| 西平县|