Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,它是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發而成。由於有了Sun 的參與和支持,最新的Servlet 和JSP 規范總是能在Tomcat 中得到體現,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 規范。因為Tomcat 技術先進、性能穩定,而且免費,因而深受Java 愛好者的喜愛並得到了部分軟件開發商的認可,成為目前比較流行的Web 應用服務器。
Tomcat 很受廣大程序員的喜歡,因為它運行時占用的系統資源小,擴展性好,支持負載平衡與郵件服務等開發應用系統常用的功能;而且它還在不斷的改進和完善中,任何一個感興趣的程序員都可以更改它或在其中加入新的功能。
Tomcat 是一個小型的輕量級應用服務器,在中小型系統和並發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。對於一個初學者來說,可以這樣認為,當在一台機器上配置好Apache 服務器,可利用它響應對HTML 頁面的訪問請求。實際上Tomcat 部分是Apache 服務器的擴展,但它是獨立運行的,所以當你運行tomcat 時,它實際上作為一個與Apache 獨立的進程單獨運行的。
這里的訣竅是,當配置正確時,Apache 為HTML頁面服務,而Tomcat 實際上運行JSP 頁面和Servlet。另外,Tomcat和IIS、Apache等Web服務器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。不過,Tomcat處理靜態HTML的能力不如Apache服務器。
相關連接:
http://tomcat.apache.org/ 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集成的軟件還有很多。
二、Jboss
JBoss是全世界開發者共同努力的成果,一個基於J2EE的開放源代碼的應用服務器。 因為JBoss代碼遵循LGPL許可,你可以在任何商業應用中免費使用它,而不用支付費用。JBoss支持EJB 1.1和EJB 2.0 EJB3.0的規范,它是一個管理EJB的容器和服務器。類似於Sun's J2SDK Enterprise Edition(J2EE),JBoss的目標是一個源代碼開放的J2EE環境。但是JBoss核心服務僅是提供EJB服務器。JBoss不包括serverlers/JSP page 的WEB容器,當然可以和Tomcat或Jetty綁定使用。 JBoss還具有如下六大優點: 1、JBoss是免費的,開放源代碼J2EE的實現,它通過LGPL許可證進行發布。 2、JBoss需要的內存和硬盤空間比較小。 3、安裝非常簡單。先解壓縮JBoss打包文件再配置一些環境變量就可以了。 4、JBoss能夠"熱部署",部署BEAN只是簡單拷貝BEAN的JAR文件到部署路徑下就可以了。如果沒有加載就加載它;如果已經加載了就卸載掉,然后LOAD這個新的。 5、JBoss與Web服務器在同一個Java虛擬機中運行,Servlet調用EJB不經過網絡,從而大大提高運行效率,提升安全性能。 6、用戶可以直接實施J2EE-EAR,而不是以前分別實施EJB-JAR和Web-WAR,非常方便。 JBoss的安裝和配置可以直接拷貝使用,但是要改動 %JBoss-HOME%\bin\run.bat里JAVA-HOME的設置,改成本機JDK的目錄。運行run.bat來啟動JBoss 關閉JBoss:關閉JBoss的 DOS 窗口或按"CTRL + C" JBoss的目錄結構 1、bin:開始和停止JBoss的地方。 其中有兩個主要的批處理文件:run.bat和shutdown.bat。要啟動JBoss只要執行run.bat文件即可;要停止JBoss必須執行shutdown.bat。 注意,shutdown.bat文件直接執行並不會自動停止JBoss,它必須要輸入參數,參數意義如下: h顯示幫助信息;D設置系統屬性;-停止處理選項;s停止用JNDI URL指定的遠程服務;n通過制定JMX名字來停止服務;a適配到指定的JNDI名稱的遠程服務;u指定用戶名稱;p指定用戶密碼;S停止服務器;e從虛擬機退出;H暫停。 一般,我們使用S選項來停止服務器。即執行shutdown.bat -S。 2、docs:放置JBoss的例子、測試腳本和各種腳本配置文件的DTD。 3、lib:放置JBoss所需要的部分jar包文件。 4、client:放置EJB客戶端運行時所需要的jar包。 5、server:放置各啟動類型的服務器端EJB配置所需要的文件等。 6、backup 以80端口服務 修改這個文件: {%JBOSS_HOME%}\server\default\deploy\jbossweb-tomcat41.sar\META-INF\jboss-service.xml 在"8080"的配置后加入以下代碼 <!-- A HTTP/1.1 Connector on port 80 --> <Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="80" minProcessors="5" maxProcessors="100" enableLookups="true" acceptCount="10" debug="0" connectionTimeout="20000" useURIValidationHack="false"/> 重新啟動JBoss就OK了 JBoss的啟動過程 設置環境變量 JBOSS_CLASSPATH (可以自己加上安全管理器和xml解析器) a) %JBOSS_CLASSPATH%; b) %JAVA_HOME%/lib/tools.jar; c) run.jar d) ../lib/crimson.jar; 設置啟動參數JAXP(xml解析器和相應工廠) 啟動 設置配置信息 讀取配置文件JBoss.properties,保存在系統屬性中(System.properties) 設置缺省屬性jboss.home和java.security.auth.login.config 創建MBeanServer.的實例: 把配置文件和補丁文件所在的目錄指定給特定的遠程類加載器Mlet 加載保存配置文件(mlet會自動在配置文件目錄中查找) 初始化並啟動MBean 配置服務ConfigurationService 加載配置文件 保存配置 服務控制ServiceControl 初始化服務程序(init方法) 啟動服務程序(start方法) 在JBOSS中發布文件 1、制作JSP的war部署文件 用"jar cvf hello.war index.jsp main.jsp"的方式生成把index.jsp和main.jsp文件加入到hello.war中。把生成的hello.war拷貝到jboss安裝目錄\server\default\deploy\下,部署成功。用"http://localhost:8080/hello/"或"http://localhost:8080/hello/index.jsp"這兩個地址進行測試。 2、制作Servlet的war部署文件 A、用"javac -classpath "%CLASSPATH%;%jboss_home%\server\default\lib\javax.servlet.jar" HelloWorld.java"的形式編譯HelloWorld.java(這是一個Servlet)得到HelloWorld.class B、寫一個web.xml配置文件 代碼如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>hello.HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/HelloWorld</url-pattern> </servlet-mapping> </web-app> 每個標記必須小寫,否則會出錯。 C、先在c:\servlet下建立一個web-inf目錄,在目錄中放入web.xml文件。 D、在web-inf目錄下建立一個classes目錄,放入編譯好的HelloWorld.class文件 E、在c:\servlet下執行jar cvf hello.war *.*,很快就生成了一個名為hello.war的文件,接着把hello.war復制到jboss的安裝目錄\server\default\deploy\下完成部署。 3、也可以不打包,把文件放在deploy下的同名文件夾下也可以。比如原來是制作成hello.war文件,可以建立一個名稱為hello.war的文件夾,把要發布的文件拷貝到這個目錄底下也可以發布成功。 補充 1、JBoss的默認端口是8080 3、對於NT和Win2000系統如果你要安裝NT或Win2000服務的話,可以把JBoss加在系統服務中,避免你每次需要到JBoss目錄下運行run.bat命令,只是當系統啟動時,自動啟動JBoss服務器。 三、weblogic
|