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

來源:互聯網
上載者:User

標籤:

  下午在看《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就好了。

  

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.