eclipse上配置tomcat,發布web工程A,發布檔案的位置在哪
========================================
以下僅個人觀點,僅供參考
如:A項目:D:\javaeclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp7\wtpwebapps\A
說明:(1)D:\javaeclipse\workspace\ 是eclipse當前workspace ,.metadata是eclipse產生的目錄,表示當前 D:\javaeclipse\workspace 是eclipce是工作空間。
(2).metadata\.plugins 是eclipse外掛程式目錄,tomcat是以外掛程式的形式加入到eclipse裡的,因此eclipse的tomcat目錄不是真實tomcat安裝根目錄,而是eclipse工作空間裡的.metadata\.plugins\org.eclipse.wst.server.core
(3)至於tmp7 ,那是在eclipse new 一個tomcat server時,就會在core下建立一個tmp1,2個server就tmp1 和tmp2 ... 以此類推,我建了7個tomcat server,因此會有tmp7,而我的A就在這個tmp7下部署。這裡的tmp7 表示一個臨時的tomcat(裡面的目錄結構有點像tomcat安裝路徑下的目錄結構,可以理解為一個tomcat複製品,我猜tmp是臨時的意思。)
(4)wtpwebapps ,通常,我們用tomcat手動部署項目時,工程的發布位置有2種:1是指conf裡的設定檔中指定webapp的路徑,也就是web工程路徑,這種從開發到部署都是用同一個目錄下的檔案,沒有複製或打包;第2種是把web工程打包成war包複製到{tomcat_home}/webapps目錄下,tomcat自動識別這個war包,解壓war包得到一個web工程,並產生相關jsp檔案放到D:\javaeclipse\workspace\apache-tomcat-6.0.37\work\Catalina\localhost 下(注意,在localhost下的只是web檔案,不是全部工程檔案,全部檔案應該去webapps下找),這種方式的發布有個麻煩的地方,就是修改工程後要重新打包並把新war包放到webapps下,就算你只是修改了一個jsp檔案上的一個文字或標識符,也要重建war包來發布(war包括有改尾碼為rar來查看裡面的內容,但是,修改裡面的檔案再改回war尾碼好像不能被tomcat識別,這點不確定,待測試才知道)
而這裡的wtpwebapps ,應該是相當於實際tomcat的webapps目錄,wtpwebapps 裡的A相當於 webapps下 的A.war產生的A工程,應該是省下來產生war包拷貝到webapps目錄的操作。
換言之,工程的發布檔案就在這個webapps\A 或 eclipse配置的tomcat-wtpwebapps\A 裡。瀏覽器請求訪問的就是寫A檔案夾,而非我們的eclipse下的工作空間workspace裡的真實工程檔案。
這樣就可以解釋,為什麼我們在eclipse修改了web工程裡的一個jsp/js或java檔案後,eclipse會先編譯(building,有沒有發布工程eclipse都會重新編譯這個工程,跟tomcat無關,這是eclipse的自檢查功能),然後publish 到eclipse配置的tomcat上,也就是publish到wtpwebapps上。
(如果eclipse沒有配置tomcat,而是手動發布A,那麼,eclise執行完building後,我們要重建war包去覆蓋tomcat_home\webapps下的原理舊的war包,tomcat會監控war包發生變化而重新發布這個web工程,瀏覽器才能請求到新的jsp或servlet。當然,如果採用的是 tomcat_home\conf\server.xml配置的方式發布,就省事多了,eclise上修改完了,building完成後,tomcat預設會自動重新發布這個工程A。一般的web應用伺服器,如tomcat jboss resin 應該都有自動重新發布工程的功能。)