【翻譯】Tomcat 6.0 部署與釋出

xingoo發表於2015-04-20

本篇參考Tomcat官方文件:《First Webapp》翻譯,並結合自己的開發經驗介紹關於tomcat部署以及釋出的相關內容。

1 目錄結構

  在tomcat中所有的應用都是放置在CATALINA_HOME/webapps下,其中CATALINA_HOME對應的是你的tomcat的根目錄。

  由於Servlet2.2之後的版本規範規定,tomcat中應用的目錄結構都要滿足固定的格式,這樣便於規範一致性。

  放置在webapps下的檔案通常是兩種格式:一種壓縮好的專案檔案,比如war包!一種是正常的資料夾。

  如果是war包這種專案檔案,tomcat會在啟動後自動的把它解壓縮到當前目錄,變成可訪問的資料夾。

  目錄結構包括如下:

/apps
    |------/WEB-INF
            |------/classes 編譯的位元組碼檔案
            |------/lib 需要的類庫,jar包
            ------web.xml
    |------/META-INF
            ------context.xml
    ------普通前端頁面,jsp等等

  基本的內容細節也如上面描述的一樣。

  其中重點是 web.xml 檔案,這個檔案也叫做部署描述符,用於配置web應用的相關資訊。

  需要注意的是:

  注意相同項的配置順序,tomcat會按照配置順序進行執行或者載入。

  需要注意的地方比如過濾器,還有一些頁面的載入。

 

  其中各項的含義,百度一下也略知一二

<web-app>   
<display-name></display-name>定義了WEB應用的名字   
<description></description> 宣告WEB應用的描述資訊   
 
<context-param></context-param> context-param元素宣告應用範圍內的初始化引數。   
<filter></filter> 過濾器元素將一個名字與一個實現<a href="http://www.cnblogs.com/bukudekong/archive/2011/12/26/2302183.html">javax.servlet.Filter</a>介面的類相關聯。   
<filter-mapping></filter-mapping> 一旦命名了一個過濾器,就要利用filter-mapping元素把它與一個或多個servlet或JSP頁面相關聯。   
<listener></listener>servlet API的版本2.3增加了對事件監聽程式的支援,事件監聽程式在建立、修改和刪除會話或servlet環境時得到通知。   
                     Listener元素指出事件監聽程式類。   
<servlet></servlet> 在向servlet或JSP頁面制定初始化引數或定製URL時,必須首先命名servlet或JSP頁面。Servlet元素就是用來完成此項任務的。   
<servlet-mapping></servlet-mapping> 伺服器一般為servlet提供一個預設的URL:http://host/webAppPrefix/servlet/ServletName。   
            <span style="color: #008000;">  但是,常常會更改這個URL,以便servlet可以訪問初始化引數或更容易地處理相對URL。</span>在更改預設URL時,使用servlet-mapping元素。   
 
<session-config></session-config> 如果某個會話在一定時間內未被訪問,伺服器可以拋棄它以節省記憶體。   
          可通過使用HttpSession的setMaxInactiveInterval方法明確設定單個會話物件的超時值,或者可利用session-config元素制定預設超時值。   
 
<mime-mapping></mime-mapping>如果Web應用具有想到特殊的檔案,希望能保證給他們分配特定的MIME型別,則mime-mapping元素提供這種保證。   
<welcome-file-list></welcome-file-list> 指示伺服器在收到引用一個目錄名而不是檔名的URL時,使用哪個檔案。    
<error-page></error-page> 在返回特定HTTP狀態程式碼時,或者特定型別的異常被丟擲時,能夠制定將要顯示的頁面。   
<taglib></taglib> 對標記庫描述符檔案(Tag Libraryu Descriptor file)指定別名。此功能使你能夠更改TLD檔案的位置,   
                  而不用編輯使用這些檔案的JSP頁面。   
<resource-env-ref></resource-env-ref>宣告與資源相關的一個管理物件。   
<resource-ref></resource-ref> 宣告一個資源工廠使用的外部資源。   
<security-constraint></security-constraint> 制定應該保護的URL。它與login-config元素聯合使用   
<login-config></login-config> 指定伺服器應該怎樣給試圖訪問受保護頁面的使用者授權。它與sercurity-constraint元素聯合使用。   
<security-role></security-role>給出安全形色的一個列表,這些角色將出現在servlet元素內的security-role-ref元素   
                   的role-name子元素中。分別地宣告角色可使高階IDE處理安全資訊更為容易。   
<env-entry></env-entry>宣告Web應用的環境項。   
<ejb-ref></ejb-ref>宣告一個EJB的主目錄的引用。   
< ejb-local-ref></ ejb-local-ref>宣告一個EJB的本地主目錄的應用。   
</web-app>   
View Code

  比較常用的就是監聽器,過濾器,servlet,session管理,初始化引數等等。

 

  classes 資料夾下放置的是編譯出的.class檔案,比如你定義的某個包:com.test.hello.java 經過tomcat的啟動釋出後,就會在響應的應用下的classes資料夾下找到com/test/hello.class檔案。類似的servlet, bean, 普通的java類都會編譯到此處。

  lib 資料夾下放置的是專案應用的jar包。比如使用了SSH,在專案引用了jar包,最後都會放在這裡。這個資料夾下的jar檔案是不會編譯到classes資料夾下的。詳細資訊參考tomcat的類載入機制。

 

  另外呢,這個資料夾下的jar包是屬於應用自己使用的。tomcat根目錄下還有一個lib資料夾,這裡面存放著基本的servlet和jsp需要的jar包。

  如果有一定開發經驗的朋友會發現,有時候自己在IDE裡面開發,會莫名其妙的報一些錯誤。但是這些錯誤並不影響最後的釋出。這就是因為在開發時,IDE沒有找到對應的jar包,這些jar包存放在tomcat中。當應用釋出時,會自動的尋找該資料夾,也就不會報錯了。

  解決辦法,就是再開發時,把tomcat的lib資料夾加入到IDE的編譯環境中。

 

  context.xml 常常用語配置一些執行時改變的引數,這樣tomcat可以定期掃描該檔案,進行相應的操作。

  為什麼要有這個檔案呢?

  就是因為其他的配置檔案比如server.xml都是tomcat在啟動時讀取的資訊,執行時是不能改變的,因此把一些動態的資訊在這裡設定就可以執行時期動態載入了。常用的就是配置資料來源JNDI,其中詳細的內容會在後文介紹配置檔案的時候講解。

2 部署

  什麼是部署?

  其實就是把開發完的程式碼放在tomcat中,如果使用的是記事本開發,就直接拷貝到webapps下。

  如果使用的是IDE開發,則需要把tomcat整合到IDE中,並配置程式碼的對映路徑。

  在IDE中直接右鍵tomcat--->Add and Remove...

 

  如果發現不能把左邊的專案新增到右邊,並提示錯誤。則檢查servelt的版本。通常是由於servlet與tomcat版本不一致導致,版本關係參考:

  舉個例子,tomcat6 僅支援2.5之前的servlet版本,以及1.5之後的JDK版本。、

3 釋出

  釋出就是把應用中的程式碼進行編譯和組織,使使用者可以直接訪問。

  就像生產汽車一樣,tomcat負責把各個零件進行組裝(把程式碼進行編譯組織),最後直接把一個可以執行的車子(可訪問的應用)擺在使用者面前。

  釋出方法:

  1 直接在tomcat中執行:執行startup.bat或者startup.sh檔案。執行方法參考:tomcat啟動

  2 在IDE中啟動:

  在server檢視中右鍵tomcat選擇start或者直接點選右上角的DEBUG或者START圖示

4 測試

  執行釋出後,就可以登入瀏覽器,輸入:http://localhost:8080/[webapp名字] 訪問應用了。

  其中8080是埠號,可以通過server.xml或者IDE中配置介面修改。

  文件中也給出了執行緒池和SSL的配置方式

 

  也可以在IDE中直接雙擊server檢視中的tomcat選項,在彈出的配置介面,修改埠號,記得儲存。

  localhost為主機名:也可以使用 本地地址127.0.0.1,或者本地IP地址[可以同ipconfig /all查詢]

相關文章