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 這樣來訪問了。