1. 程式人生 > >Tomcat 啟動兩次的問題

Tomcat 啟動兩次的問題

前提:

    1、存在某個應用:hello

    2、該應用存放路徑:D:/apache-tomcat-5.5.17/webapps/hello

    3、Tomcat的server.xml部分配置資訊如下:

...

<Context path="" reloadable="true" docBase="hello"/>

...

    (這麼做的目的就是為了將hello應用設為根,訪問IP時就直接訪問該應用)

    4、hello下有一個 servlet(目的是為了系統在啟動時執行某些初始化的操作),該servlet裡存在init()方法,目前該方法裡只打印“hello word”字串;

    5、hello 應用的 web.xml 部分配置資訊如下:

  <servlet>

    <servlet-name>HelloServlet</servlet-name>

    <servlet-class>HelloServlet</servlet-class>

    <load-on-startup>1</load-on-startup>

  </servlet>

問題:

    在啟動 tomcat5 時,控制檯視窗會打印出兩行“hello word”字串?

問題原因:

    因為hello應用本來就放在Tomat的預設webapp目錄下(tomcat在啟動時肯定會載入1次),然後又在server.xml中做了配置,為了達到訪問根就可以訪問hello應用(這樣tomcat就又載入1次);結果,Tomcat就會載入兩次。

解決辦法:

    辦法1、不要將 hello 應用放在Tomat的預設webapp目錄下,把它移出去,然後在server.xml中修改docBase的值為hello應用在新位置的絕對路徑就可以了;

    辦法2、刪除掉server.xml中 Context 的手動配置,這樣就不會載入兩次,因為hello應用在webapp下,所以在訪問時,就只能是:http://ip:port/hello  這樣來訪問了。