Linux Tomcat 簡介

Dus發表於2015-02-20

如今,基於Web的應用越來越多,傳統的Html已經滿足不了如今的需求。我們需要一個互動式的Web,於是便誕生了各種Web語言。如Asp,Jsp,Php等。當然,這些語言與傳統的語言有著密切的聯絡,如Php基於C和C++語言,Jsp基於Java語言。本文所要介紹的Tomcat即是一個Jsp和Servlet的執行平臺。 

一:什麼是Jsp和Servlet 

Jsp(JavaServer Page)是在普通Html中嵌入了Java程式碼的一個指令碼,在這一點上,它與其它的指令碼語言(如Php)一樣,但它與其它語言不同的是:其它指令碼語言由伺服器直接解釋這個指令碼,而Jsp則由Jsp容器(如Tomcat)首先將其轉化為Servlet,然後再呼叫Javac將Servlet編譯為Class檔案。最終,伺服器解釋的是Class檔案。那麼什麼是Servlet呢?Servlet其實是一個特殊的Java類,Servlet類一般從HttpServlet類繼承而來,在這個類中至少要實現doGet或者doPost函式,在這兩個函式中處理來自客戶的請求,然後將結果返回。Servlet和Jsp是Sun公司J2EE架構中重要的部分。由於基於Java語言,因此其可以方便的呼叫功能強大的Java API(如JDBC)。 

二:Tomcat概述 

Tomcat是一個免費的開源的Serlvet容器,它是Apache基金會的Jakarta專案中的一個核心專案,由Apache,Sun和其它一些公司及個人共同開發而成。由於有了Sun的參與和支援,最新的Servlet和Jsp規範總能在Tomcat中得到體現。Tomcat被JavaWorld雜誌的編輯選為2001年度最具創新的java產品,可見其在業界的地位。 

Tomcat 最新版本是4.0x。4.0x與3.x的架構不同,而是重新設計的。Tomcat4.0x中採用了新的Servlet容器:Catalina,完整的實現了Servlet2.3和Jsp1.2規範。Tomcat提供了各種平臺的版本供下載,可以從http://jakarta.apache.org上下載其原始碼版或者二進位制版。由於Java的跨平臺特性,基於Java的Tomcat也具有跨平臺性。 

與傳統的桌面應用程式不同,Tomcat中的應用程式是一個WAR(Web Archive)檔案。WAR是Sun提出的一種Web應用程式格式,與JAR類似,也是許多檔案的一個壓縮包。這個包中的檔案按一定目錄結構來組織:通常其根目錄下包含有Html和Jsp檔案或者包含這兩種檔案的目錄,另外還會有一個WEB-INF目錄,這個目錄很重要。通常在WEB-INF目錄下有一個web.xml檔案和一個classes目錄,web.xml是這個應用的配置檔案,而classes目錄下則包含編譯好的Servlet類和Jsp或Servlet所依賴的其它類(如JavaBean)。通常這些所依賴的類也可以打包成JAR放到WEB-INF下的lib目錄下,當然也可以放到系統的CLASSPATH中,但那樣移植和管理起來不方便。 

在Tomcat中,應用程式的部署很簡單,你只需將你的WAR放到Tomcat的webapp目錄下,Tomcat會自動檢測到這個檔案,並將其解壓。你在瀏覽器中訪問這個應用的Jsp時,通常第一次會很慢,因為Tomcat要將Jsp轉化為Servlet檔案,然後編譯。編譯以後,訪問將會很快。另外Tomcat也提供了一個應用:manager,訪問這個應用需要使用者名稱和密碼,使用者名稱和密碼儲存在一個xml檔案中。通過這個應用,輔助於Ftp,你可以在遠端通過Web部署和撤銷應用。當然本地也可以。 

Tomcat不僅僅是一個Servlet容器,它也具有傳統的Web伺服器的功能:處理Html頁面。但是與Apache相比,它的處理靜態Html的能力就不如Apache。我們可以將Tomcat和Apache整合到一塊,讓Apache處理靜態Html,而Tomcat處理Jsp和Servlet。這種整合只需要修改一下Apache和Tomcat的配置檔案即可。 

另外,Tomcat提供Realm支援。Realm類似於Unix裡面的group。在Unix中,一個group對應著系統的一定資源,某個group不能訪問不屬於它的資源。Tomcat用Realm來對不同的應用(類似系統資源)賦給不同的使用者(類似group)。沒有許可權的使用者則不能訪問這個應用。Tomcat提供三種Realm,1:JDBCRealm,這個Realm將使用者資訊存在資料庫裡,通過JDBC獲得使用者資訊來進行驗證。2:JNDIRealm,使用者資訊存在基於LDAP的伺服器裡,通過JNDI獲取使用者資訊。3:MemoryRealm,使用者資訊存在一個xml檔案裡面,上面講的manager應用驗證使用者時即使用此種Realm。通過Realm我們可以方便地對訪問某個應用的客戶進行驗證。 

在Tomcat4中,你還可以利用Servlet2.3提供的事件監聽器功能,來對你的應用或者Session實行監聽。Tomcat也提供其它的一些特徵,如與SSL整合到一塊,實現安全傳輸。還有Tomcat也提供JNDI支援,這與那些J2EE應用伺服器提供的是一致的。說到這裡我們要介紹一下通常所說的應用伺服器(如WebLogic)與Tomcat有何區別。應用伺服器提供更多的J2EE特徵,如EJB,JMS,JAAS等,同時也支援Jsp和Servlet。而Tomcat則功能沒有那麼強大,它不提供EJB等支援。但如果與JBoss(一個開源的應用伺服器)整合到一塊,則可以實現J2EE的全部功能。既然應用伺服器具有Tomcat的功能,那麼Tomcat有沒有存在的必要呢?事實上,我們的很多中小應用不需要採用EJB等技術,Jsp和Servlet已經足夠,這時如果用應用伺服器就有些浪費了。而Tomcat短小精悍,配置方便,能滿足我們的需求,這種情況下我們自然會選擇Tomcat。 

基於Tomcat的開發其實主要是Jsp和Servlet的開發,開發Jsp和Servlet非常簡單,你可以用普通的文字編輯器或者IDE,然後將其打包成WAR即可。我們這裡要提到另外一個工具Ant,Ant也是Jakarta中的一個子專案,它所實現的功能類似於Unix中的make。你需要寫一個build.xml檔案,然後執行Ant就可以完成xml檔案中定義的工作,這個工具對於一個大的應用來說非常好,我們只需在xml中寫很少的東西就可以將其編譯並打包成WAR。事實上,在很多應用伺服器的釋出中都包含了Ant。另外,在Jsp1.2中,可以利用標籤庫實現Java程式碼與Html檔案的分離,使Jsp的維護更方便。 

Tomcat也可以與其它一些軟體整合起來實現更多的功能。如與上面提到的JBoss整合起來開發EJB,與Cocoon(Apache的另外一個專案)整合起來開發基於Xml的應用,與OpenJMS 

整合起來開發JMS應用,除了我們提到的這幾種,可以與Tomcat整合的軟體還有很多。 

三:展望 

Tomcat確實是一個很好的工具,不僅僅因為其免費,功能強大,更因為其開放性。如今,開源軟體越來越收到人們的重視,Linux就是一個成功的典型。人們不再限於只使用軟體,而且已經關心起軟體的具體實現。我們有理由相信Tomcat會走得更遠。

 

 

本文來源: 收集、整理來自網際網路

相關文章