1. 程式人生 > >JAVA 伺服器系列1:Tomcat,Jboss,Weblogic區別與比較

JAVA 伺服器系列1:Tomcat,Jboss,Weblogic區別與比較

​一、tomcat

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

WebLogic是美國bea公司出品的一個application server確切的說是一個基於j2ee架構的中介軟體,webserver是用來構建網站的必要軟體用來解析釋出網頁等功能,它是用純java開發的。weblogic本來不是由bea發明的,是它從別人手中買過來,然後再加工擴充套件。目前weblogic在世界application server市場上佔有最大的份額,其他還有象IBMwebsphere,免費的tomcatresin等中介軟體。

BEA WebLogic是用於開發、整合、部署和管理大型分散式Web應用、網路應用和資料庫應用的Java應用伺服器。將Java的動態功能和Java Enterprise標準的安全性引入大型網路應用的開發、整合、部署和管理之中。

BEA WebLogic Server擁有處理關鍵Web應用系統問題所需的效能 、可擴充套件性和高可用性。

與BEA WebLogic Commerce ServerTM配合使用, BEA WebLogic Server可為部署適應性個性化電子商務應用系統提供完善的解決方案。

BEA WebLogic Server具有開發和部署關鍵任務電子商務Web應用系統 所需的多種特色和優勢,包括:

1)領先的標準

對業內多種標準的全面支援,包括EJB、JSB、JMS、JDBC、XML和WML,使Web應用系統的實施更為簡單,並且保護了投資,同時也使基於標準的解決方案的開發更加簡便。

2)無限的可擴充套件性

BEA WebLogic Server以其高擴充套件的架構體系聞名於業內,包括客戶機連線的共享、資源pooling以及動態網頁和EJB元件群集。

3)快速開發

憑藉對EJB和JSP的支援,以及BEA WebLogic Server 的Servlet元件架 構體系,可加速投放市場速度。這些開放性標準與WebGain Studio配合時,可簡化開發,並可發揮已有的技能,迅速部署應用系統。

4)部署更趨靈活

BEA WebLogic Server的特點是與領先資料庫、作業系統和Web伺服器 緊密整合。

5)關鍵任務可靠性

其容錯、系統管理和安全效能已經在全球數以千記的關鍵任務環境中得以驗證。

6)體系結構

BEA WebLogic Server是專門為企業電子商務應用系統開發的。企業電子商務應用系統需要快速開發,並要求伺服器端元件具有良好的靈活性和安全性,同時還要支援關鍵任務所必需的擴充套件、效能、和高可用性。BEA WebLogic Server簡化了可移植及可擴充套件的應用系統的開發,併為其它應用 系統和系統提供了豐富的互操作性。

憑藉其出色的群集技術,BEA WebLogic Server擁有最高水平的可擴充套件 性和可用性。BEA WebLogic Server既實現了網頁群集,也實現了EJB元件 群集,而且不需要任何專門的硬體或作業系統支援。網頁群集可以實現透明的複製、負載平衡以及表示內容容錯,如Web購物車;元件群集則處理複雜的複製、負載平衡和EJB元件容錯,以及狀態物件(如EJB實體)的恢復。

無論是網頁群集,還是元件群集,對於電子商務解決方案所要求的可擴充套件性和可用性都是至關重要的。共享的客戶機/伺服器和資料庫連線以及資料快取和EJB都增強了效能表現。這是其它Web應用系統所不具備的