通過Eclipse外掛程式啟動Tomcat的問題
目前在通過Eclipse中外掛程式啟動Tomcat時遇到了個問題,就是訪問http://localhost:8080/時出現HTTP Status 404 The requested resource (/) is not available.錯誤,但是通過http://localhost:8080/myapp訪問項目時卻沒有問題,系統配置沒有問題,而且手動運行%TOMCAT_HOME%/bin中的startup.bat和shutdown.bat都沒有問題,能正確訪問http://localhost:8080/,http://localhost:8080/manager,http://localhost:8080/admin/index.jsp。
開發環境
Eclipse
Version: 3.4.2
Build id: M20090211-1700
Tomcat 6.0.18
Tomcat外掛程式
wtp-sdk-R-3.0.4-20090213193639
org.eclipse.jst.server.tomcat.core_1.1.104.v20081006.jar
org.eclipse.jst.server.tomcat.ui_1.1.101.v20080620.jar
解決方案
通過手動啟動Tomcat時,是採用%TOMCAT_HOME%/webapps(包括docs,host-manager,manager,ROOT4個目錄)作為預設的webapp目錄的,%TOMCAT_HOME%/webapps目錄下包括ROOT,對應伺服器的根目錄“/”,也就是通過http://localhost:8080/訪問看到的Tomcat Welcome頁面。
如果在Eclipse中通過外掛程式啟動Tomcat,則是採用%ECLIPSE_WORKSPACE_HOME%/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps作為webapp目錄的,wtpwebapps下沒有ROOT webapp或者有時包括一個空的ROOT webapp。在這種情況下,訪問http://localhost:8080/就會看到HTTP
error 404 或者一個空白頁面。如果把%TOMCAT_HOME%/webapps下的docs,host-manager,manager,ROOT目錄拷貝到wtpwebapps目錄下,此時也是可以通過http://localhost:8080/訪問看到的Tomcat Welcome頁面。
Eclipse中的Tomcat外掛程式預設是把%ECLIPSE_WORKSPACE_HOME%/.metadata作為Server Location的,因此當通過Eclispe外掛程式啟動Tomcat時,伺服器中只運行了Eclipse工作空間中發行到Tomcat上的項目。
雙擊Server視圖中的“Tomcat 6 at localhost”,開啟一個Tomcat Server編輯器,有一欄“Server Locations”是設定管理員的位置。注意:如果已經有項目Publish到Server上了(啟動應用也會發布項目),Server Locations欄是不可修改的,可以先Remove項目並Clean Server,使Server Locations欄可修改。選擇“Use Tomcat installation”,通過Eclispe外掛程式啟動Tomcat時,%TOMCAT_HOME%/webapps目錄下的所有應用都會被啟動。
如果只想運行Eclipse工作空間的應用項目,可以選擇“Use workspace metadata”;反之如果希望同時運行其他Eclipse工作空間之外的應用項目,就可以選擇“Use Tomcat installation”。
Tomcat6.0.18的配置問題
在解決問題的過程中還遇到另外一個問題,手動啟動Tomcat6.0.18時也不能訪問http://localhost:8080/host-manager,同樣報HTTP Status 404 The requested resource (/) is not available.錯誤,而Tomcat5.0.25中就不存在這個問題。
原因:Tomcat6.0.18與Tomcat5.0.25的預設配置有一些不同。Tomcat6處於安全性的考慮,預設關閉了瀏覽目錄功能的。否則,要是訪問目錄下沒有預設首頁,那麼該目錄下的檔案清單就泄露了。
omcat-6.0.18/conf/web.xml配置如下: <servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>同樣的配置選項在Tomcat-5.0.25/conf/web.xml中配置如下: <servlet> <servlet-name>default</servlet-name> <servlet-class> org.apache.catalina.servlets.DefaultServlet </servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>解決方案就是把Tomcat-6.0.18/conf/web.xml中的false改為true。
轉自:http://blog.csdn.net/xingfuzhijianxia/article/details/6543177