當eclipse調用tomcat的時候發生了什么?


  下午在看《tomcat權威指南》的時候想到了這么一個問題:當我在eclipse里調用本機上的一個tomcat運行一個web項目的時候,都發生了什么?

  之前做本科畢設的時候用的是MyEclipse,當時配置好tomcat服務器,運行一個web項目之后,可以在tomcat的webapps文件夾下看到我部署的項目,比如我的項目叫helloworld,那么我在webapps目錄下就會看到一個文件夾,名字為helloworld,這個文件夾就是我的web站點。當tomcat運行起來的時候,我就可以在tomcat的頁面上訪問並管理我的項目了。比如我的tomcat的url是http://localhost:8080,那么我的項目就可以通過http://localhost:8080/helloworld來訪問了。這是因為MyEclipse會將我的工程復制一份到tomcat的webapps目錄下。

  而當我使用eclipse的時候,情況就發生了變化。

  首先,我在tomcat的webapps目錄下看不到我部署的項目,在wtpwebapps目錄下也沒有。其次,我在eclipse里對tomcat的配置里的configurations里找到了這么一些個參數“-Dcatalina.base="E:\Workspaces\EclipseJ2EE\.metadata\.plugins\org.eclipse.wst.server.core\tmp2" -Dcatalina.home="D:\Servers\tomcat7" -Dwtp.deploy="E:\Workspaces\EclipseJ2EE\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps" -Djava.endorsed.dirs="D:\Servers\tomcat7\endorsed"”,同時根據參數中“E:\Workspaces\EclipseJ2EE\.metadata\.plugins\org.eclipse.wst.server.core\tmp2”這個路徑找到了一個和tomcat很像的文件夾,並且在wtpwebapps目錄下找到了我的項目。這些是怎么回事兒呢?

  在上網查閱了一些資料后我才知道原來是這樣的:

  eclipse在啟動tomcat的時候,調用了jdk中的javaw.exe這個程序,並且將我上面看到的那些參數添加了進去。下面看看這些參數的主要部分:

  • Dcatalina.base:它指定了catalina.base的位置。tomcat允許運行多個實例,catalina.base就是各個實例的工作目錄,也就是我們在eclipse啟動的這個tomcat實例的工作目錄。它的目錄結構和tomcat安裝目錄下的結構非常相似,只不過沒有bin和lib目錄。
  • Dcatalina.home:這個參數就是tomcat的安裝目錄,也就是各個tomcat實例公共擁有的目錄。
  • Dwtp.deploy:這個就是你把項目部署到哪里的路徑。比如我的helloworld項目就在這個參數指明的文件夾下。

  此時如果你訪問http://localhost:8080會提示404,找不到頁面,但是http://localhost:8080/helloworld可以訪問到我的項目。那來看conf文件夾下的server.xml文件,找到host標簽,可以找到以下代碼:

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<Context docBase="E:\Workspaces\EclipseJ2EE\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\ROOT" path="" reloadable="false"/>
<Context docBase="E:\Workspaces\EclipseJ2EE\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\HelloWorld" path="/HelloWorld" reloadable="true" source="org.eclipse.jst.jee.server:HelloWorld"/>
</Host>

  其中第一個context指明了ROOT,但是這個路徑下沒有文件,所以訪問http://localhost:8080是沒有頁面的。而下面那個context就是我的helloworld項目,指明了路徑並且路徑下有項目文件,所以才可以訪問到。

  當然,這些配置只是作為eclipse啟動的這個tomcat實例的配置,如果我們不使用eclipse,直接在tomcat的安裝目錄啟動tomcat,那么我們是可以訪問到http://localhost:8080的主頁面,並且在網頁上對tomcat進行監管的。

  最后附上一張圖,解釋一下在eclipse里對tomcat進行配置的地方。想要修改上面說的那些參數,只要點擊中間的Open launch configuration,在彈出的對話框中找到Arguments標簽,就可以在里面修改了。當然你也可以在Server Locations里面進行更改,只不過需要先在server視圖的tomcat服務器上右鍵Clean...一下才可以編輯。

 

 


附:

  關於javaw,它是一個win32的GUI應用程序,它幫助應用去啟動自己的GUI界面而不會啟動控制台console界面。比如啟動eclipse就會用到這個javaw程序,而啟動一個輸出“hello”文本的程序就只用java.exe就好了。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM