??? 在Java規(guī)范的三個(gè)版本中,J2EE(Java 2 Enterprise Edition)是面向企業(yè)應(yīng)用定義了一系列分布式服務(wù)的規(guī)范,Apusic應(yīng)用服務(wù)器" title="應(yīng)用服務(wù)器">應(yīng)用服務(wù)器是國(guó)內(nèi)第一個(gè)自有知識(shí)產(chǎn)權(quán)嚴(yán)格遵循J2EE規(guī)范的應(yīng)用服務(wù)器產(chǎn)品,同時(shí)還為企業(yè)應(yīng)用提供了很多功能拓展。Apusic應(yīng)用服務(wù)器的體系結(jié)構(gòu)為:
??????????????????????????????????????? 圖一: Apusic應(yīng)用服務(wù)器的體系結(jié)構(gòu)
Apusic應(yīng)用服務(wù)器提供了下列服務(wù)和功能:
.EJB容器(無(wú)狀態(tài)Session Bean、有狀態(tài)Session Bean、Entity Beans、Message-Driven Beans);
.?Web容器;
.分布式事務(wù)服務(wù);
.安全服務(wù);
.?基于JMX的管理服務(wù);
.?JMS;
.?Web Services;
.?JDBC服務(wù);
.?Java Mail服務(wù)等。
在此,就以下幾個(gè)方面分析Apusic應(yīng)用服務(wù)器提供的服務(wù)和功能:
表現(xiàn)層
業(yè)務(wù)邏輯層
數(shù)據(jù)層
安全服務(wù)
事務(wù)服務(wù)
名字服務(wù)
Web Services
與CORBA的互操作
一.?表示層
多層應(yīng)用模型中的表示層主要被用于與瀏覽器、桌面應(yīng)用、無(wú)線設(shè)備及其他客戶端" title="客戶端">客戶端的交互,Apusic應(yīng)用服務(wù)器支持所有的客戶機(jī)/服務(wù)器的交互機(jī)制。
J2EE?規(guī)范中包含了JSP和Servlet規(guī)范,JSP和Servlet定義了J2EE企業(yè)應(yīng)用中的表示層的編程模型。通過(guò)使用JSP和Servlet,實(shí)現(xiàn)Web內(nèi)容的動(dòng)態(tài)生成。Apusic應(yīng)用服務(wù)器完全支持JSP、Servlet規(guī)范,提供了對(duì)于諸如Filter等最新特性的支持
對(duì)于通過(guò)瀏覽器進(jìn)行的HTTP請(qǐng)求,Apusic應(yīng)用服務(wù)器提供了一個(gè)高效可靠的Web服務(wù)器。通過(guò)使用Servlet和JSP實(shí)例池、結(jié)果緩存、JSP編譯調(diào)試工具等工具和技術(shù),對(duì)部署于服務(wù)器上的JSP和Servlet,Apusic應(yīng)用服務(wù)器服提供了一個(gè)高效可靠的運(yùn)行時(shí)環(huán)境和開(kāi)發(fā)、部署和維護(hù)的高效易用的平臺(tái)。
除了對(duì)J2EE相關(guān)JSP和Servlet規(guī)范的實(shí)現(xiàn),Apusic應(yīng)用服務(wù)器中的Web容器和相關(guān)工具還提供了一些特有的特性,通過(guò)這些特有的特性,使得面向Apusic應(yīng)用服務(wù)器的表示層的開(kāi)發(fā)、部署、運(yùn)行和維護(hù)變得更加方便和高效。
·? 虛擬主機(jī)
可以在單個(gè)的Apusic應(yīng)用服務(wù)器上配置多個(gè)Web站點(diǎn)。通過(guò)域名與應(yīng)用服務(wù)器的路徑映射實(shí)現(xiàn)此功能,只需指定域名即可實(shí)現(xiàn)對(duì)站點(diǎn)的訪問(wèn)。
·? 多路復(fù)用
Apusic 應(yīng)用服務(wù)器采用了多路復(fù)用(multiplexing)通訊技術(shù)。在一個(gè)TCP/IP 連接上建立多個(gè)雙向的虛擬連接,每個(gè)虛擬連接可以進(jìn)行完全獨(dú)立的通訊功能。通訊雙方可以根據(jù)需要打開(kāi)或關(guān)閉虛擬連接,進(jìn)行通訊,實(shí)現(xiàn)了將多個(gè)服務(wù)統(tǒng)一到一個(gè)端口上,降低服務(wù)器的管理成本。
·? 使用第三方Web服務(wù)器
除了Apusic應(yīng)用服務(wù)器內(nèi)置的Web服務(wù)器外 ,Apusic應(yīng)用服務(wù)器可以與其他現(xiàn)有的Web服務(wù)器進(jìn)行整合,如Apache、Microsoft IIS等,通過(guò)使用Apusic應(yīng)用服務(wù)器提供的負(fù)載均衡功能,為企業(yè)應(yīng)用提供一個(gè)更高可用性和伸縮性的平臺(tái)。
·? 負(fù)載均衡與失效恢復(fù)
Apusic應(yīng)用服務(wù)器提供了基于Web層的負(fù)載均衡的功能。當(dāng)使用Apusic作為集群中的負(fù)載均衡器時(shí),服務(wù)器提供了獨(dú)有的負(fù)載均衡和失效恢復(fù)的特性。
·? JSPC工具
為提高表示層JSP的開(kāi)發(fā)調(diào)試的效率,Apusic提供了一個(gè)簡(jiǎn)單易用的JSP命令行編譯工具JSPC,通過(guò)此工具,開(kāi)發(fā)者可以對(duì)JSP進(jìn)行更為高效的開(kāi)發(fā)和調(diào)試,通過(guò)設(shè)置相關(guān)調(diào)試工具,可以實(shí)現(xiàn)對(duì)JSP的源碼級(jí)調(diào)試。
二.業(yè)務(wù)邏輯層
多層應(yīng)用模型中的業(yè)務(wù)邏輯層被用于封裝應(yīng)用業(yè)務(wù)邏輯,包括獨(dú)立于應(yīng)用界面的業(yè)務(wù)組件,通過(guò)應(yīng)用服務(wù)器中的組件容器提供運(yùn)行時(shí)環(huán)境。 Enterprise JavaBeans?(以下稱EJB)是J2EE?應(yīng)用中的業(yè)務(wù)邏輯層的組件模型。Apusic應(yīng)用服務(wù)器提供了對(duì)EJB2.0規(guī)范的完全實(shí)現(xiàn),同時(shí)提供了相關(guān)的特有特性,以簡(jiǎn)化對(duì)J2EE應(yīng)用邏輯層的開(kāi)發(fā)、部署、管理和維護(hù)。
Apusic應(yīng)用服務(wù)器中的EJB容器提供對(duì)EJB的生存周期管理、緩存、持久性和事務(wù)管理等服務(wù),Apusic提供三種類型的EJB的支持:Session Bean、Entity Bean和Message-driven Bean。 同時(shí)提供了相關(guān)的一些特性,如CMR、EJB QL等,為提高應(yīng)用執(zhí)行的效率,還提供了新的Local接口。
1.Entity Bean
Entity Bean被用于表示應(yīng)用中的業(yè)務(wù)實(shí)體,通常與數(shù)據(jù)庫(kù)或傳統(tǒng)應(yīng)用中的業(yè)務(wù)數(shù)據(jù)實(shí)體保持映射關(guān)系,可以理解為數(shù)據(jù)庫(kù)或傳統(tǒng)應(yīng)用中的業(yè)務(wù)數(shù)據(jù)實(shí)體在內(nèi)存中的對(duì)象表示方式。
Apusic應(yīng)用服務(wù)器支持新的容器管理關(guān)系模型(CMR)和Entity Bean的查詢語(yǔ)言EJB QL。
(1) 容器管理持久性(Container Managed Persistence)指由EJB容器處理Entity Bean需要的對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。使Entity Bean可以脫離特定類型的數(shù)據(jù)庫(kù),從而具有更高的靈活性。
(2) 容器管理關(guān)系(Container Managed Relation)
容器管理關(guān)系用于對(duì)實(shí)體數(shù)據(jù)對(duì)象之間關(guān)系的管理。
容器管理持久性的Entity Bean有以下四種容器管理關(guān)系:
·? one-to-one,一個(gè)Bean的單個(gè)實(shí)例關(guān)聯(lián)另一個(gè)Bean的單個(gè)實(shí)例;
·? one-to-many,一個(gè)Bean的單個(gè)實(shí)例關(guān)聯(lián)另一個(gè)Bean的多個(gè)實(shí)例;
·? many-to-one,一個(gè)Bean的多個(gè)實(shí)例關(guān)聯(lián)另一個(gè)Bean的單個(gè)實(shí)例;
·? many-to-many,一個(gè)Bean的多個(gè)實(shí)例關(guān)聯(lián)另一個(gè)Bean的多個(gè)實(shí)例;
容器管理關(guān)系的方向可以是雙向或單向。在一個(gè)雙向的關(guān)系中,涉及的Bean都有一個(gè)關(guān)系域與另外的Bean關(guān)聯(lián),通過(guò)關(guān)系域,可以從一個(gè)Bean的實(shí)例中訪問(wèn)關(guān)聯(lián)的Bean對(duì)象,反之亦可。在一個(gè)單向的關(guān)系中,只有一個(gè)Bean擁有關(guān)聯(lián)其他Bean的關(guān)系域,只能從這個(gè)Bean的實(shí)例訪問(wèn)被關(guān)聯(lián)的Bean對(duì)象,而不可從被關(guān)聯(lián)的Bean對(duì)象訪問(wèn)到這個(gè)實(shí)例。
(3)EJBQL
對(duì)于容器管理持久性的Entity Bean,需要在部署描述中定義抽象模式的名字。這些名字將可以通過(guò)使用Enterprise JavaBeas? Query Language(EJB? QL)編寫(xiě)的查詢語(yǔ)句進(jìn)行引用。例如,必須為每一個(gè)finder方法定義一個(gè)EJB QL查詢語(yǔ)句,通過(guò)此語(yǔ)句定義當(dāng)此finder方法被調(diào)用時(shí),容器執(zhí)行的查詢。
另外在Apusic的自有特性中提供了對(duì)從EJBQL中查詢出的對(duì)象進(jìn)行排序的功能,即擴(kuò)展的了EJBQL的語(yǔ)句提供了Order By語(yǔ)句可以進(jìn)行排序。
2.Session Bean
Session Bean通常被用于實(shí)現(xiàn)業(yè)務(wù)過(guò)程邏輯,通過(guò)對(duì)Entity Bean的操作完成業(yè)務(wù)過(guò)程并封裝過(guò)程邏輯。 盡管在需要的情況下,Session Bean可以有保持?jǐn)?shù)據(jù)到持久存儲(chǔ)機(jī)制的能力,如數(shù)據(jù)庫(kù),但Session Beans不是持久的。
相對(duì)于表示業(yè)務(wù)實(shí)體的Entity Bean,Session Bean的生存時(shí)間要短,大致等于于一個(gè)客戶端會(huì)話的延續(xù)時(shí)間。例如,客戶通過(guò)瀏覽器,訪問(wèn)與Session Bean表示的相關(guān)業(yè)務(wù)過(guò)程,或通過(guò)一個(gè)Java應(yīng)用程序" title="應(yīng)用程序">應(yīng)用程序或者是Applet訪問(wèn)的相關(guān)業(yè)務(wù)過(guò)程的持續(xù)時(shí)間,或其它Enterprise Bean訪問(wèn)此業(yè)務(wù)過(guò)程的持續(xù)時(shí)間。
Session Bean是非持久的,其狀態(tài)不被保存到持久存儲(chǔ)機(jī)制(如數(shù)據(jù)庫(kù)、文件系統(tǒng))中,盡管Session Bean本身可以執(zhí)行對(duì)數(shù)據(jù)庫(kù)的操作,但它并不是一種持久對(duì)象的表示。
Session Bean表示客戶端與應(yīng)用之間的會(huì)話。會(huì)話由客戶端與組件之間的交互組成,一般表現(xiàn)為一系列的方法調(diào)用" title="方法調(diào)用">方法調(diào)用。
根據(jù)Session Bean保持會(huì)話狀態(tài)的方式,可分為狀態(tài)的和無(wú)狀態(tài)的Session Bean。
(1)無(wú)狀態(tài)(Stateless)的Session Bean,會(huì)話狀態(tài)只會(huì)在單個(gè)方法調(diào)用中被保持,一旦方法調(diào)用結(jié)束,組件將丟棄方法調(diào)用過(guò)程中保持的狀態(tài),不保持跨越方法調(diào)用的會(huì)話狀態(tài)。
(2)對(duì)于有狀態(tài)(Stateful)的Session Bean,在整個(gè)會(huì)話期間,特定組件實(shí)例將保持與某個(gè)特定客戶端之間跨越方法調(diào)用的會(huì)話狀態(tài)。
3.Message-driven Bean
Message-driven Bean 是EJB2.0規(guī)范中新增的一個(gè)enterprise bean 類型,通常被用于異步接收從客戶端發(fā)送的消息,觸發(fā)相應(yīng)的業(yè)務(wù)處理過(guò)程。
Message-Driven Bean 作為EJB2.0規(guī)范中新增的一個(gè)enterprise bean 類型,除得到應(yīng)用服務(wù)器管理的事務(wù),安全和資源訪問(wèn)的服務(wù)之外,同時(shí)作為 JMS消息系統(tǒng)中的消息使用者 (Message Consumer)接收并處理應(yīng)用消息。
通過(guò)消息機(jī)制而非直接的方法調(diào)用,客戶端可以繼續(xù)執(zhí)行而不必等待服務(wù)器的運(yùn)行結(jié)果,服務(wù)器可以選擇在方法調(diào)用完成后通知客戶,而消息機(jī)制本身保證了信息傳輸?shù)目煽啃裕?同時(shí)使用消息域(Message Domain)中的消息類型模型以達(dá)到事件廣播的機(jī)制。
(1) Message-driven Bean 作為一般的JMS 使用者(consumer)
作為一種具有JMS使用者(consumer)功能的Enterprise Bean組件模型,Message-Driven Bean由EJB容器進(jìn)行管理,具有一般的JMS使用者(consumer)所不具有的優(yōu)點(diǎn),如對(duì)于一個(gè)Message-driven Bean,容器可創(chuàng)建多個(gè)實(shí)例來(lái)處理大量的并發(fā)消息,而一般的JMS使用者 (consumer)開(kāi)發(fā)時(shí)則必須對(duì)此進(jìn)行處理才能獲得類似的功能。同時(shí)Message-Driven Bean可取得EJB所能獲得的標(biāo)準(zhǔn)服務(wù),如容器管理事務(wù)等服務(wù)。
(2) Message-driven Bean 與其他Enterprise Bean
作為Enterprise Bean組件模型之一,Message-driven Bean,具有一些與Session Bean 和Entity Bean相同的方法,但由于Message-driven Bean本身不處理客戶端調(diào)用,也無(wú)會(huì)話狀態(tài),客戶只能通過(guò)向與Message Driven Bean關(guān)聯(lián)的隊(duì)列或主題發(fā)送消息從而與Message-driven Bean 進(jìn)行交互,因此,Message-driven Bean 與Session Bean 和Entity Bean之間最大的不同之處在于Message-Driven Bean不具有組件接口及Home接口。
另外,Message-driven Bean異步地處理隊(duì)列(Queue)或主題(Topic)中的消息,而非方法調(diào)用。
4.Apusic專有特性
除了對(duì)EJB2.0規(guī)范的實(shí)現(xiàn),Apusic應(yīng)用服務(wù)器中的EJB容器和相關(guān)系統(tǒng)服務(wù)還提供了一些高端增值特性,通過(guò)這些增值特性,使得面向Apusic應(yīng)用服務(wù)器的業(yè)務(wù)邏輯層的開(kāi)發(fā)、部署、運(yùn)行和維護(hù)變得更加方便、高效和可靠。
(1)實(shí)例池
通過(guò)圖形化的配置工具或簡(jiǎn)單修改組件配置文件,Apusic應(yīng)用服務(wù)器可以預(yù)先裝載指定數(shù)量的對(duì)象實(shí)例到實(shí)例池中,使對(duì)客戶請(qǐng)求進(jìn)行響應(yīng)的過(guò)程更加高效。
(2)CMP Entity Bean自動(dòng)升遷
對(duì)于一個(gè)按照EJB1.1規(guī)范編寫(xiě)的CMP Entity Bean,應(yīng)用服務(wù)器在運(yùn)行時(shí)將其自動(dòng)升級(jí)到EJB2.0,使按照EJB1.1規(guī)范編寫(xiě)的EJB可以使用EJB2.0規(guī)范中提供的Lazy Loading和Smart Update技術(shù)以提高應(yīng)用執(zhí)行的效率,同時(shí)降低已有應(yīng)用在維護(hù)上的成本。
(3)熱部署
為提高企業(yè)應(yīng)用開(kāi)發(fā)、調(diào)試和維護(hù)的效率,Apusic應(yīng)用服務(wù)器提供了熱部署的功能。在運(yùn)行時(shí),可以動(dòng)態(tài)地部署和修改應(yīng)用中的應(yīng)用程序,無(wú)需停止和重新啟動(dòng)服務(wù)器即可應(yīng)用新的改動(dòng)。
(4)自動(dòng)遷移及部署
不同的應(yīng)用服務(wù)器廠商提供的基于J2EE?規(guī)范實(shí)現(xiàn)的應(yīng)用服務(wù)器的不同,使得多數(shù)企業(yè)應(yīng)用在不同的服務(wù)器之間遷移時(shí),需要改動(dòng)一些配置,提高了應(yīng)用移植的成本,Apusic應(yīng)用服務(wù)器提供了自動(dòng)遷移和部署的能力,對(duì)于面向其他非Apusic應(yīng)用服務(wù)器開(kāi)發(fā)的企業(yè)應(yīng)用,可以不改動(dòng)應(yīng)用程序,而由應(yīng)用服務(wù)器自動(dòng)完成移植的工作并部署到應(yīng)用服務(wù)器,大大降低了應(yīng)用移植的成本。
目前對(duì)于面向Weblogic8.1和J2EE?RI開(kāi)發(fā)的企業(yè)應(yīng)用,可以直接使用這項(xiàng)功能,Apusic應(yīng)用服務(wù)器還將在此項(xiàng)功能上添加對(duì)當(dāng)前其他主流應(yīng)用服務(wù)器的支持。
(5)自動(dòng)生成查詢
為提高面向CMP Entity Bean的開(kāi)發(fā)效率和降低開(kāi)發(fā)的難度,Apusic應(yīng)用服務(wù)器可為CMP Entity Bean自動(dòng)生成缺省的finder query。
三. 數(shù)據(jù)層
Apusic應(yīng)用服務(wù)器模型中的數(shù)據(jù)層提供企業(yè)應(yīng)用對(duì)關(guān)系型數(shù)據(jù)庫(kù)和傳統(tǒng)企業(yè)應(yīng)用數(shù)據(jù)的高效而可靠的訪問(wèn)。使得企業(yè)應(yīng)用可以通過(guò)JDBC實(shí)現(xiàn)對(duì)關(guān)系型數(shù)據(jù)庫(kù)安全、可靠而且高效的訪問(wèn)。目前Apusic應(yīng)用服務(wù)器提供了對(duì)最新的JDBC3.0版本的支持。任意合法的J2EE?編程模型都可以從Apusic應(yīng)用服務(wù)器數(shù)據(jù)庫(kù)連接池中獲得對(duì)關(guān)系型數(shù)據(jù)庫(kù)的連接。
按照J(rèn)2EE?的規(guī)范,Entity Bean被設(shè)計(jì)為與數(shù)據(jù)庫(kù)直接交互的最佳模型,但在實(shí)際的企業(yè)運(yùn)用開(kāi)發(fā)中,任何一種編程模型都有可能直接與數(shù)據(jù)庫(kù)進(jìn)行交互,針對(duì)這種情形,Apusic應(yīng)用服務(wù)器提供了很多功能或特性,使對(duì)數(shù)據(jù)層訪問(wèn)的開(kāi)發(fā)更為簡(jiǎn)單同時(shí)達(dá)到更為高效而安全的目標(biāo)。
·? JDBC結(jié)果集緩存
對(duì)于Session Bean、JSP、Servlets為主的J2EE應(yīng)用中,頻繁訪問(wèn)數(shù)據(jù)庫(kù)而缺少對(duì)應(yīng)的數(shù)據(jù)緩存等機(jī)制,往往會(huì)成為企業(yè)應(yīng)用的瓶頸。因此,Apusic應(yīng)用服務(wù)器提供了JDBC結(jié)果集緩存技術(shù),通過(guò)將數(shù)據(jù)庫(kù)返回的結(jié)果集保存在內(nèi)存中可以大幅提高應(yīng)用系統(tǒng)的性能,同時(shí),使用結(jié)果集緩存對(duì)應(yīng)用開(kāi)發(fā)者是完全透明的,保證了應(yīng)用的可移植特性。
·? JDBC語(yǔ)句緩存
對(duì)于Session Bean、JSP、Servlets為主的J2EE應(yīng)用中,頻繁訪問(wèn)數(shù)據(jù)庫(kù)而缺少對(duì)應(yīng)的數(shù)據(jù)緩存等機(jī)制,往往會(huì)成為企業(yè)應(yīng)用的瓶頸。因此,Apusic應(yīng)用服務(wù)器提供了JDBC語(yǔ)句緩存技術(shù),同時(shí)使用預(yù)編譯的查詢語(yǔ)句,提高應(yīng)用程序訪問(wèn)數(shù)據(jù)庫(kù)的效率。
·? 連接池
對(duì)于復(fù)雜的企業(yè)應(yīng)用而言,對(duì)數(shù)據(jù)庫(kù)連接池的可靠、效率,成本都有著極高的要求,Apusic應(yīng)用服務(wù)器提供了對(duì)連接資源的優(yōu)化,使有限的數(shù)據(jù)庫(kù)連接資源得到最大程度的利用,同時(shí),對(duì)于應(yīng)用錯(cuò)誤使用連接造成的死鎖" title="死鎖">死鎖或阻塞,提供了死鎖檢測(cè)的技術(shù),而以上的特性對(duì)于用戶而言是完全透明的。
四.安全服務(wù)
對(duì)于企業(yè)應(yīng)用而言,應(yīng)用服務(wù)器所能提供的安全方面的功能是保證企業(yè)應(yīng)用數(shù)據(jù)完整、邏輯完整和減少被入侵可能的 重要特性,針對(duì)多層的分布式企業(yè)應(yīng)用的安全要求,Apusic應(yīng)用服務(wù)器提供了可靠高效的安全構(gòu)架。同時(shí),為應(yīng)用程序的加密需求提供了一個(gè)安全、強(qiáng)壯、高效的JCE(Java Cryptography Extension)提供者。
?
?????????????????????????????????????? 圖二 Apusic服務(wù)器數(shù)據(jù)安全功能的架構(gòu)
·? 身份鑒定
Apusic應(yīng)用服務(wù)器提供了面向用戶、調(diào)用過(guò)程和客戶端調(diào)用等方式的身份鑒定,通過(guò)使用用戶名和密碼、證書(shū)等等方式,將合法的應(yīng)用用戶和調(diào)用程序區(qū)別于非法的入侵者。
·? 授權(quán)
授權(quán)是使企業(yè)應(yīng)用的完整性和安全性得以保證的重要因素,Apusic應(yīng)用服務(wù)器對(duì)企業(yè)應(yīng)用的授權(quán)策略提供了易于配置和修改的方法與工具,同時(shí)提供了可靠安全的授權(quán)機(jī)制。
·? 加密
對(duì)于企業(yè)應(yīng)用中的敏感數(shù)據(jù)的保存和交換,Apusic提供了高效可靠的加密機(jī)制。
Apusic 安全服務(wù)提供了數(shù)字簽名、消息摘要、消息鑒別碼、RSA 非對(duì)稱加密、序列密碼加密、分組密鑰密碼加密、密鑰生成、密鑰交換等常用的算法。
·? 安全數(shù)據(jù)存儲(chǔ)
對(duì)于系統(tǒng)中的關(guān)鍵數(shù)據(jù),如消息、用戶信息等等,Apusic提供了極安全的內(nèi)部保護(hù)存儲(chǔ)機(jī)制。
Apusic 應(yīng)用服務(wù)器的加密算法完全是自主實(shí)現(xiàn)的,一舉打破國(guó)際對(duì)中國(guó)加密算法位數(shù)的限制。國(guó)內(nèi)企業(yè),政府部門(mén)等使用Apusic 應(yīng)用服務(wù)器會(huì)更加安全可靠。
Apusic應(yīng)用服務(wù)器同時(shí)提供了對(duì)JSSE的實(shí)現(xiàn)。
五.事務(wù)服務(wù)
J2EE中對(duì)于事務(wù)的處理是分布式的,Apusic完全提供對(duì)XA事務(wù)的支持,顯示對(duì)大型企業(yè)應(yīng)用的支持。
為了簡(jiǎn)化開(kāi)發(fā)者對(duì)事務(wù)的處理,Apusic應(yīng)用服務(wù)器在EJB容器中提供容器管理事務(wù)(Container Managed Transaction),應(yīng)用開(kāi)發(fā)者使用EJB管理數(shù)據(jù)即自動(dòng)獲得了事務(wù)的保證,由于EJB容器對(duì)數(shù)據(jù)庫(kù)的管理是分布式的開(kāi)發(fā)者又由此自動(dòng)獲得了對(duì)應(yīng)用開(kāi)發(fā)較為困難的分布事務(wù)管理能力,這一切都由應(yīng)用服務(wù)器完成。
為保證應(yīng)用數(shù)據(jù)和業(yè)務(wù)邏輯的的完整性,除了提供完全符合規(guī)范和強(qiáng)壯的事務(wù)管理器之外,Apusic應(yīng)用服務(wù)器對(duì)Entity Bean中特別是CMP類型的組件,提供了強(qiáng)壯而靈活的事務(wù)構(gòu)架。
·? 死鎖檢測(cè)
能夠根據(jù)資源等待圖自動(dòng)檢測(cè)出死鎖狀態(tài),當(dāng)事務(wù)發(fā)生死鎖時(shí)將其中一個(gè)事務(wù)回滾,以釋放事務(wù)所占用的資源,使其他事務(wù)能夠繼續(xù)執(zhí)行。
·? 并發(fā)控制
提供了靈活和強(qiáng)壯的EJB并發(fā)控制機(jī)制,單獨(dú)分離出了并發(fā)控制部分,可以使用插件的形式同時(shí)提供多種并發(fā)控制協(xié)議。
·? JMS全局事務(wù)
提供了一個(gè)作為事務(wù)性資源管理器的JMS 提供者(Provider),允許從JSP,Servlet, EJB 等應(yīng)用組件中對(duì)JMS 進(jìn)行事務(wù)性的訪問(wèn)。同時(shí),從一個(gè)單一事務(wù)邊界中允許多個(gè)應(yīng)用組件訪問(wèn)JMS 提供者。
六.名字服務(wù)
由于J2EE應(yīng)用的關(guān)鍵特性是分布式的,其提供的服務(wù)可能分布在任何一個(gè)機(jī)器或網(wǎng)絡(luò),應(yīng)用的開(kāi)發(fā)統(tǒng)一通過(guò)JNDI(Java Naming and Directory Interface)來(lái)獲得服務(wù),開(kāi)發(fā)者在開(kāi)發(fā)時(shí)可以不用關(guān)心服務(wù)的物理所在。
Apusic完全支持使用JNDI,并且開(kāi)發(fā)完成后,部署者(Deployer)可以在部署工具中配置應(yīng)用所需要的環(huán)境、資源、服務(wù),使應(yīng)用獲得所需的分布式服務(wù),完成最終生產(chǎn)環(huán)境的建立。
七.Web Services
Apusic應(yīng)用服務(wù)器實(shí)現(xiàn)了對(duì)Web Services的支持。Apusic Web Services 是一個(gè)開(kāi)放的遵循業(yè)界標(biāo)準(zhǔn)的Web Services實(shí)現(xiàn),主要實(shí)現(xiàn)了以下 的Web Services相關(guān)規(guī)范:
.?JAX-RPC1.0
.?JAXM1.1
.?SAAJ1.1
.?JAXR1.0
.?SOAP1.1
.?SOAP with Attachments
.?WSDL1.1
.?UDDI2.0
Apusic Web Services支持和其他Web Services產(chǎn)品的交互,包括Weblogic和.Net。
八.與CORBA的互操作
CORBA(Common Object Request Broker Architecture, 公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu))是由OMG(對(duì)象管理組織,Object Management Group)提出的應(yīng)用軟件體系結(jié)構(gòu)和對(duì)象技術(shù)規(guī)范,被廣泛的用來(lái)開(kāi)發(fā)分布式系統(tǒng)。Apusic應(yīng)用服務(wù)器完整的實(shí)現(xiàn)了CORBA-EJB映射規(guī)范,因此可以和CORBA對(duì)象進(jìn)行互相調(diào)用。CORBA和EJB的互操作規(guī)范包含以下四個(gè)方面:
.?EJB接口到CORBA接口的映射;
.?JNDI名字到CORBA名稱服務(wù)(CosNaming )的映射;
.?EJB和CORBA之間的事務(wù)傳播;
.?EJB和CORBA之間的安全傳播。
Apusic應(yīng)用服務(wù)器實(shí)現(xiàn)了RMI-IIOP(Internet Inter-ORB Protocol)協(xié)議,能夠在多個(gè)Apusic服務(wù)器實(shí)例之間傳播事務(wù)、安全等上下文信息(Context)。
經(jīng)過(guò)上面的初步分析可以看出,Apusic應(yīng)用服務(wù)器是一個(gè)完全基于J2EE?1.3規(guī)范的應(yīng)用服務(wù)器產(chǎn)品,為分布式企業(yè)應(yīng)用提供了安全、可靠、高效的開(kāi)發(fā)、部署、維護(hù)的平臺(tái)。特別適合為電子商務(wù)、電子政務(wù)和行業(yè)應(yīng)用的開(kāi)發(fā)提供基礎(chǔ)平臺(tái)。