- 相關(guān)推薦
j2ee服務(wù)器有哪些
眾所周知,J2EE應(yīng)用服務(wù)器百花齊放,種類(lèi)眾多。那么J2EE應(yīng)用服務(wù)器有哪些?又有哪些功能呢?一起來(lái)看看吧!
從功能實(shí)現(xiàn)上劃分:
有實(shí)現(xiàn)完整J2EE規(guī)范(full profile)的Weblogic, WebSphere, GlassFish
有實(shí)現(xiàn)web應(yīng)用規(guī)范(web profile)的 TomEE, JBoss/WildFly
有基本的Servlet及Jsp規(guī)范的Web容器(Web Container) Tomcat, Jetty, Resin
回顧過(guò)去的2015年,各應(yīng)用服務(wù)器市場(chǎng)占有率各有千秋。
下圖為各個(gè)應(yīng)用服務(wù)器使用率餅圖
我們看到,在眾多J2EE應(yīng)用服務(wù)器中,Tomcat使用率達(dá)到58.66%,穩(wěn)坐第一。
相較2014年,Tomcat使用率大幅增長(zhǎng),增長(zhǎng)將近19%。
整體而言,Tomcat做為Servlet和Jsp規(guī)范的參考實(shí)現(xiàn)(Reference implementation , 簡(jiǎn)稱(chēng)RI),一般都會(huì)在第一時(shí)間實(shí)現(xiàn)規(guī)范的新特性并通過(guò)Oracle的CTS 測(cè)試認(rèn)證。目前最新的Tomcat 9.0,雖還是alpha版,但已經(jīng)實(shí)現(xiàn)了Servlet 4.0草案,感興趣的朋友,可以下載嘗鮮哦!
Tomcat是一個(gè)實(shí)現(xiàn)了JAVA EE標(biāo)準(zhǔn)的最小的WEB服務(wù)器,是Apache 軟件基金會(huì)的Jakarta 項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache、Sun 和其他一些公司及個(gè)人共同開(kāi)發(fā)而成。因?yàn)門(mén)omcat 技術(shù)先進(jìn)、性能穩(wěn)定,而且開(kāi)源免費(fèi),因而深受Java 愛(ài)好者的喜愛(ài)并得到了部分軟件開(kāi)發(fā)商的認(rèn)可,成為目前比較流行的Web 應(yīng)用服務(wù)器。學(xué)習(xí)JavaWeb開(kāi)發(fā)一般都使用Tomcat服務(wù)器,該服務(wù)器支持全部JSP以及Servlet規(guī)范,啟動(dòng)界面如圖:
Tomcat 是一款非常優(yōu)秀的 Java Web 服務(wù)器,以致于很多開(kāi)源 Java 應(yīng)用服務(wù)器(如 JOnAS) 直接集成它作為 servlet 容器。
Tomcat的總體結(jié)構(gòu)
Tomcat中主要涉及Server,Service,Engine,Connector,Host,Context組件,之前用過(guò)Tomcat的童鞋是不是覺(jué)得這些組件的名稱(chēng)有點(diǎn)似曾相識(shí)的趕腳,沒(méi)趕腳?!您再想想。好吧,不用你想了,我來(lái)告訴你吧。其實(shí)在Tomcat二進(jìn)制分發(fā)包解壓后,在conf目錄中有一個(gè)server.xml文件,你打開(kāi)它瞄兩眼看看,是不是發(fā)現(xiàn)server.xml文件中已經(jīng)包含了上述的幾個(gè)名稱(chēng)。
Tomcat 集群源碼的類(lèi)圖
從圖中我們可以看出 Tomcat 集群包括以下幾個(gè)方面的內(nèi)容:
Session: Session 分為 StandardSession 與ClusterSession 兩種,后者用于 Session 復(fù)制。
Session Manager: 有用于集群 Session 管理的ClusterSession,也有用于對(duì) Session 進(jìn)行一般日常管理的,如 PersistentManager,BackupManager,SimpleTcpReplicationManager。
組通迅框架:SessionManager調(diào)用組通訊框架進(jìn)行 Session 的傳輸,Tomcat采用的組通
訊框架是 tribe,目前 tribe 已被獨(dú)立為開(kāi)放的 apache 工程。
Cluster: 方便集群管理而派生出的邏輯概念,可將實(shí)際物理機(jī)劃分為一個(gè) Cluster,也可 將一臺(tái)物理機(jī)上不同端口的實(shí)例劃分為一個(gè) Cluster,它有一個(gè)簡(jiǎn)單的實(shí)現(xiàn)類(lèi) SimpleTcpCluster。
1.1 Session
服務(wù)器集群通常操縱兩種session:
1. Stickysessions: 盡量讓同一個(gè)客戶(hù)請(qǐng)求由同一臺(tái)服務(wù)器來(lái)處理,這樣 sticky sessions 就是 存在于單機(jī)服務(wù)器中接受客戶(hù)端請(qǐng)求的 session,它不需要進(jìn)行 Session 復(fù)制,如果這個(gè) 單機(jī)失敗的話,用戶(hù)必須重新登錄網(wǎng)站。
2. Replicatedsessions: 在一臺(tái)服務(wù)器中的 session 狀態(tài)被復(fù)制到集群的其他服務(wù)器上,無(wú)論 何時(shí),只要 session 改變了,session 數(shù)據(jù)都要重新全部或部分(依據(jù)復(fù)制策略)被復(fù)制 到其他服務(wù)器上。
Tomcat 支持以下三種 session 持久性類(lèi)型:
1. 內(nèi)存復(fù)制:在 JVM 內(nèi)存中復(fù)制 session狀態(tài),使用 Tomcat自帶的 SimpleTcpCluster 和SimpleTcpClusterManager類(lèi)。
2. 數(shù)據(jù)庫(kù)持久性:在這種類(lèi)型中,session 狀態(tài)保存在一個(gè)關(guān)系數(shù)據(jù)庫(kù)中,服務(wù)器使用org.apache.catalina.session.JDBCManager類(lèi)從數(shù)據(jù)庫(kù)中獲取 Session 信息。
3. 基于文件的持久性:這里使用類(lèi)org.apache.catalina.session.FileManager 把session 狀態(tài)保存到一個(gè)文件系統(tǒng)。
Session Manager
Tomcat 通過(guò) org.apache.catalina.Manager 來(lái)管理 Session,Manager 接口總是和 Context Container 相關(guān)聯(lián)。它主要負(fù)責(zé) session 的建立、更新和銷(xiāo)毀。該接口中一些重要的方法有:
用戶(hù)在 Servlet 中通過(guò) javax.servlet.http.HttpServletRequest 接口的 getSession 方法獲得 Session,而該接口的實(shí)現(xiàn)位于 org.apache.catalina.connector.Request 類(lèi)中的 doGetSession 方 法中,在該方法中通過(guò) org.apache.catalina.Manager 來(lái)獲得 Session , doGetSession 方法的 部分代碼如下:
組通訊框架--Tribe
組通訊框架 Tribe 在 Tomcat 中的位置可如下圖
如圖所示,Tribe 的核心主要是 Channel 類(lèi),由此看出,它采用 NIO 進(jìn)行 Socket 通訊,運(yùn)用
了組播,事件、心跳檢測(cè)等技術(shù),下面我們來(lái)著重看看代碼中 Tomcat 是如何與 Tribe 衍接首先在 SimpleTcpReplication 類(lèi)中的實(shí)現(xiàn) Manager 接口的 start 方法中:
Cluster
Cluster 用于管理集群中的 Session 復(fù)制,它有一個(gè)簡(jiǎn)單的實(shí)現(xiàn)類(lèi) SimpleTcpCluster。
【j2ee服務(wù)器有哪些】相關(guān)文章:
舞蹈的種類(lèi)有哪些05-20
徽菜有哪些做法07-16
立冬習(xí)俗有哪些11-07
婚姻感悟有哪些04-05
綠茶有哪些種類(lèi)03-07
街舞的種類(lèi)有哪些?11-30
競(jìng)走的好處有哪些05-17
色調(diào)有哪些種類(lèi)11-29
淮劇的經(jīng)典劇目有哪些12-02
滬劇有哪些經(jīng)典劇目08-04