明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

漫談EJB (1)

[摘要]本文面向的觀眾是對J2EE技術有興趣的入門者。Java語言 Java語言最早被稱為Oak,它是為了實現(xiàn)嵌入式的消費類電子產品應用而產生的,它的作者是James Gosling。Ed Frank, Patrick Naughton, Jonathan Payne, Chris Warth在隨后...
本文面向的觀眾是對J2EE技術有興趣的入門者。

Java語言

Java語言最早被稱為Oak,它是為了實現(xiàn)嵌入式的消費類電子產品應用而產生的,它的作者是James Gosling。Ed Frank, Patrick Naughton, Jonathan Payne, Chris Warth在隨后的幾年時間中為Java語言加入了大量的特性,并把Java語言的目標做了一個重新的定位,定位于適合Internet的語言。

Java語言是一種多用途的語言、并發(fā)的語言、以類為基礎,面向對象的語言。它的設計盡可能的做到和操作系統(tǒng)是無關的,也就是Java所宣傳的那句話:“一次編寫,到處運行!盝ava的設計參考了C和C++語言,因此熟悉C和C++的程序員對Java語言上手很快,而Java設計的原則是能夠利用Java語言快捷的編寫應用,所以我們可以發(fā)現(xiàn),在Java語言中,并沒有那些C和C++中的復雜的機制。最明顯的就是C中被大量使用的指針,由于它的隨意性,被Java以引用來代替了。而C++中的操作符重載、模板、泛型的特性也因為使用比較復雜,Java也不予采用。但是目前Java仍然不斷的推出新的特性,以滿足應用的發(fā)展。例如在新推出的JDK1.4中,Java語言就能夠支持Assertment機制和Perl語言中最有用的正則表達式機制。

Java語言主要由以下五種元素組成:標識符、關鍵字、文字、運算符和分隔符。這五種元素有著不同的語法含義和組成規(guī)則,它們互相配合,共同完成Java語言的語意表達。

1:標識符。變量,類和方法都需要一定的名稱,我們將這種名稱叫做標識符。

2:關鍵字。關鍵字是Java語言本身使用的標識符,它有其特定的語法含義。所有的Java關鍵字將不能被用作標識符。

3:數(shù)據(jù)類型。Java有著不同的數(shù)據(jù)類型。比較值得一提的是字符串數(shù)據(jù)類型,字符串數(shù)據(jù)類型是用一對雙引號括起來的字符序列,字符串數(shù)據(jù)實際上是由String類所實現(xiàn),而不是C語言中所用的字符數(shù)組。每一個字符串數(shù)據(jù)將產生一個String類的新的實例,用戶不必對字符串與類這個概念發(fā)生關系而感到擔心,由于類的特性,你不必擔心如何去實現(xiàn)它們,它們會自己照顧好自己,需要說明的是字符串在Java里作為類只是出于安全的考慮。

4:運算符。任何語言都有自己的運算符,Java語言也不例外,如+、-、*、/等都是運算符,運算符的作用是與一定的運算數(shù)據(jù)組成表達式來完成相應的運算。對不同的數(shù)據(jù)類型,有著不同的運算符。

5:分隔符。分隔符用來使編譯器確認代碼在何處分隔。‘’‘’‘;’‘:’都是Java語言的分隔符。

學習 Java 語言很簡單,畢竟 Java 語言也只包含五十多個關鍵詞(keyword)與幾十個算符(operator),再加上 Java 語法(syntax)也很簡單,所以一般人可以很快就學會 Java 語言。危險的是,很多人認為已經完全掌控 Java 語言,但其實對于內部的運作機制仍不能掌握,這些盲點有時候會讓你無法完全掌控 Java 語言?朔@些盲點的方式是看「The Java Language Specification, 2nd Ed.」(沒有中文版)來徹底弄懂 Java 程序語言,并看「Inside the Java Virtual Machine, 2nd Ed.」來徹底掌握 Java 虛擬機器的運作方式。學會了語言,并不代表就可以設計出好的對象導向系統(tǒng)架構。想要成為對象導向的專家,往往需要:(1) 多看相關的書,特別是 Design Pattern 和 Refactoring 的書。(2) 多觀摩別人的程序(例如 Java API 的 design 與 implementation)(3) 多寫程序。學會 Java 語言之后,還需要學會一些 API 才能寫出有用的程序。Java 的 API 非常多,必須規(guī)劃好一個學習路徑,才不會在浩瀚的 API 大海中迷失。必備的 API 包括了:IO、New IO、Collection Framework、Network、RMI、JAXP... 等。至于其它的 API,就看你的需求而定,大致上分成:

* GUI 類:JavaBean -> Swing -> JavaHelp -> Java2D -> Image IO -> JAI -> Java 3D ...
* Enterprise 類:JDBC -> JDO -> Servlet -> JSP -> EJB -> JMS -> JTA/JTS...
* J2ME 類(這一類不是我的專長,無法提供學習順序建議)

Java語言通常都是根據(jù)Java虛擬機規(guī)范(The Java Virtual Machine Specification)中的定義,編譯為字節(jié)碼指令集和二進制格式。因此我們接下來就討論Java虛擬機(JVM)

JVM

我們已經談過Java語言的語法類似于C和C++,但是摒棄了C和C++中復雜、疑惑和不安全的特性。Java語言最早是用來構建消費類網(wǎng)絡設備的軟件的,因此它要支持多主機的架構,并要求能夠提供安全的軟件組件。為了滿足這些需求,編譯好的代碼就必須能夠通過網(wǎng)絡來傳播,能夠在任何客戶端上運行,同時還要保證客戶端是足夠安全的。

Java虛擬機是Java和Java 2 平臺的基石。它能夠保證Java語言和硬件、操作系統(tǒng)無關,保證編譯后的代碼最小,并保護用戶不受惡意程序的攻擊。Java虛擬機到底是什么呢。其實它就是一臺不實際存在的計算機。和真實的計算機類似,它也有自己的指令集,并可以在運行環(huán)境中分配內存區(qū)域。使用虛擬機機制來實現(xiàn)編程語言并不是Java的創(chuàng)舉,這已經是非常普遍的做法了,最著名的許你就莫過于UCSD Pascal的P-Code機。

只要瀏覽器檢測到目前所處理的Web文件內容含有一個Java Applet,瀏覽器將會為這個Java小程序另外開一個JVM,執(zhí)行這個Java應用小程序。在JVM中執(zhí)行的Java小程序可以得到充分安全的保護。如同我們上面所說,JVM是一個自給自足的作業(yè)環(huán)境,就像是一臺獨立的計算機一樣。例如,在JVM運作的Applet,無法存取主機操作系統(tǒng)。優(yōu)點是:

1. 系統(tǒng)中立。Java應用程序可以在任何JVM中運作,不論該系統(tǒng)使用何種硬件、軟件。

2. 安全。正因JVM跟操作系統(tǒng)沒有任何接觸,Java程序很難損害到其它檔案或應用程序。

缺點是,由于在JVM運作的程序獨立在操作系統(tǒng)之外,也就無法享受操作系統(tǒng)各項特殊功能。

Java技術之所以在今天得到了如此廣闊的應用,其中它的安全性是不能不提的。不同于其它技術(例如Microsoft的ActiveX)中安全性作為附加設計和補丁,Java從設計之初便考慮到了安全性。因此Java的安全性是在語言層次實現(xiàn)的。Java的安全性由下列三個方面保證:

1、 語言特性(包括數(shù)組的邊界檢查、類型轉換、取消指針型變量)。

2、 資源訪問控制(包括本地文件系統(tǒng)訪問、Socket連接訪問)。

3、 代碼數(shù)字簽名(通過數(shù)字簽名來確認代碼源以及代碼是否完整)。

Java的源代碼是先編譯成為一種字節(jié)碼的中間代碼,存放這種代碼的文件就是.class的文件。真正執(zhí)行的時候是將class文件裝載到JVM(虛擬機)中,然后由JVM解釋執(zhí)行的。所以數(shù)組的上下界檢查及合法的類型轉換是通過JVM得到保證的。Java通過一個類裝載器類(ClassLoader)將虛擬機代碼文件(即class文件)裝載到JVM中,當完成裝載后,一個被稱做安全管理器(SecurityManager)的類開始運行,例如當一個Applet的class文件被缺省的類裝載器裝載到JVM中后,JVM會立即為它裝載一個SecurityManager的子類AppletSecurity,由這個管理器來驗證操作。代碼的所有動作(例如文件讀寫)都要先經過驗證,只有被該安全管理器接受的動作才能完成,否則就會拋出SecurityException異常。

對于JDK1.0,權限被籠統(tǒng)的劃分為兩大塊。一是擁有所有的權限,一個是僅擁有"沙箱\\"(sandBox)權限,這也是普通的Applet所擁有的權限。這時本地文件讀寫或是與源主機(Orignal Server)以外的主機連接都是被禁止的。這種劃分的最大問題就是缺乏靈活性。例如我們希望一個Applet在用戶信任的情況下能夠對本地文件系統(tǒng)的某個目錄進行讀寫,但并不要通過Socket與其它主機連接。這是JDK1.0的權限劃分就不能達到要求。JDK1.1后改進了權限的劃分,引入了權限集(PermissionSet)的概念。

由于我們的文章并不是討論JVM,因此,我們只是對JVM做一個簡單的介紹。如果需要詳細了解的,可以參考『The JavaTM TMVirtual Machine Specification』。

客觀的看待Java

相對于其他編程語音,Java有一個無庸置疑的優(yōu)點:用戶以及編譯器第一次不必了解生成可執(zhí)行代碼的特定CPU細節(jié)。Java引入了一個編譯代碼中間層,叫做字節(jié)代碼,并使用一個虛擬抽象的機器,而不是一個真實的機器。當Java編譯器結束了一個源文件的編譯后,你所得到的不是可以立即在一個給定平臺上運行的代碼,而是可以在任何真實的平臺上運行的字節(jié)代碼,唯一的條件就是這個平臺要理解和支持Java。這些發(fā)展包含著一個文化的變革。作為一個開發(fā)人員,你只需要確定Java虛擬機(JVM)提供的抽象層,不同的OS銷售商負責執(zhí)行代碼層,從而將中立于平臺的字節(jié)代碼映射到主機平臺的機構中。在這種情況下,Java似乎是統(tǒng)一分布式計算機世界的領袖候選人了!熬帉懸淮,永遠運行”(并且無論在哪里)就成為Java誘人但卻真實的口號。

但我們平心而論,Java的跨平臺并不是一個非常誘人的特性?跨平臺理論的發(fā)展很好地證明了這一點。我們看到,將Java代碼從一個平臺移植到另一個平臺—Java這個語言最重要和最受吹捧的特點—并不象宣傳的那樣容易。任何Java平臺都有其自己的虛擬機,它可以理解通用的字節(jié)代碼,并且及時地將其編譯為本地代碼。矛盾由此產生,不同虛擬機的執(zhí)行也很不相同,這一點足以使代碼的移植比預期耗費多得多的時間,而且基本上不是自動的。在企業(yè)用戶的角度上來說,也很少會有企業(yè)會頻繁的更換平臺,因此這個特性是否能夠帶來高價值是很難評價的。

那么,Java模型的好處在哪里呢?首先,Java是一種先進的、面向對象的語言,包含了預防常見錯誤的內置功能,并在僅僅一兩個對象中攜帶了許多經常需要用到的功能。與C++相比,Java更易于讀寫,不容易出錯,而且更加美觀,但是它速度較慢也不太靈活。想實現(xiàn)在任何軟件和硬件平臺上都可虛擬移植,Java盡可能少地使用了公分母模型,也就是說放棄了將每個平臺開發(fā)到極限的能力。第二,虛擬機的概念本身就是可移植和可共用的,因此對于分布式環(huán)境來說是理想的。Java對于為非Windows平臺開發(fā)代碼是最好的語言。

那么對于Windows平臺來說,Java又怎么樣呢?讓Java適應Windows是不可能的,這是由于Sun的許可約束問題。但是Java實在是太吸引人了,Microsoft比誰都能更清楚這一點。Microsoft在以前推出的Visual J++證明了這一點,但是可惜的是,Microsoft又犯了霸權的老毛病,Visual J++并不好用。因此,Microsoft又一次采取了“拿來主義”的手法,很好地利用了Java 的眾多特性,隆重推出了Windows平臺的新銳力量,它就是相當簡單但十分強大的面向對象的C#編程語言。C#超過了C++,它天生就包含了.NET框架類庫中的所有類,并使語法簡單化。說到這里已經有一些離題了,不過Java也不是說在Windows平臺上就不能夠使用,JDK和大部分的IDE都支持Windows平臺。

Java技術的架構--J2ME、J2SE和J2EE

通常我們以 JDK(Sun 所開發(fā)的一套 Java 開發(fā)工具)的版本來定義 Java 的版本。JDK 1.0 版于 1996 年初公開,JDK 1.1 版于 1997 年初公開,JDK 1.2 版于 1998 年底公開;谑袌鲂袖N的考量,Sun 在 JDK 1.2 版公開后旋即將 Java 改名為「Java 2」,將 JDK 改名為「Java 2 Software Development Kit(以下簡稱 J2SDK)」。J2SDK(原稱 JDK)1.3 于 2000 年 4 月公開,此版本仍稱做「Java 2」。目前 J2SDK 1.4 也已經公開了,大家可以到Sun的官方Java站點上查閱到大量的JDK1.4的信息。

Java 技術根據(jù)硬件平臺與適用環(huán)境的差異,分成幾個分支。JDK 1.1 的時代,適用于一般消費性電子產品等,嵌入式系統(tǒng)的 Java 平臺是 PersonalJava 與 EmbeddedJava,此二者并無明確的界線,大致上來說,運算資源、內存、以及顯示裝置比較豐富者,使用 PersonalJava,例如 Set-Top Box、視訊電話 ... 等;反之,資源較有限者使用 EmbeddedJava,例如呼叫器、行動電話 ... 等。除了 PC 使用的 Java 平臺、IA 使用的 PersonalJava 與 EmbeddedJava 平臺之外,JavaCard 也是一個 Java 平臺,使用于 Smart Card(IC Card)上。

Java 2 出現(xiàn)后,推翻了先前的 PersonalJava 與 EmeddedJava 的分法,改分成 Java 2 Platform Enterprise Edition(簡稱 J2EE)、Java 2 Platform Standard Edition(簡稱 J2SE)、Java 2 Platform Micro Edition(簡稱 J2ME)。J2EE 適用于服務器,目前已經成為企業(yè)運算、電子商務等領域中相當熱門的技術;J2SE 適用于一般的計算機;J2ME 適用于消費性電子產品。除了這三者之外,JavaCard 依然是獨立的一套標準。

目前,Java技術的架構包括三個方面:

J2EE(Java 2 Platform Enterprise Edition )—企業(yè)版 (J2EE) 是為面向以企業(yè)為環(huán)境而開發(fā)應用程序的解決方案。
J2SE(Java 2 Platform Stand Edition)—標準版 (J2SE) 為桌面開發(fā)和低端商務應用提供了可行的解決方案。
J2ME(Java 2 Platform Micro Edition )—小型版(J2ME)是致力于消費產品和嵌入式設備的最佳解決方案






J2EE

J2EE已經成為開發(fā)商創(chuàng)建電子商務應用的事實標準。正是認識到J2EE平臺作為一種可擴展的、全功能的平臺,可以將關鍵的企業(yè)應用擴展到任何Web瀏覽器上并可適合多種不同的Internet數(shù)據(jù)流、可連接到幾乎任何一種傳統(tǒng)數(shù)據(jù)庫和解決方案、使企業(yè)經理根據(jù)多家企業(yè)所提供的產品和技術開發(fā)和部署最佳的解決方案進而降低開發(fā)網(wǎng)絡化應用的費用和復雜性這一巨大優(yōu)勢,很多廠家都表示將對J2EE給予支持,并將J2EE技術作為大型BtoB市場和海量交易處理的安全穩(wěn)定的端到端平臺。J2EE技術的基礎就是J2SE標準版,它鞏固了標準版中的許多優(yōu)點。其最終目的就是成為一個能夠使企業(yè)開發(fā)者大幅縮短投放市場時間的體系結構。它為靈活配置各種多層企業(yè)應用軟件,特別是B2B、B2C等電子商務應用,提供了強大的服務功能。最近又新加了Connector API服務,使企業(yè)應用的開發(fā)和部署有了一系列成熟的技術。

J2SE

J2SE是Java 2平臺的標準版, 它適用于桌面系統(tǒng),提供CORBA標準的ORB技術,結合Java的RMI支持分布式互操作環(huán)境。它運行在Java虛擬機上。在引入了Java IDL后, J2SE支持IIOP通信。它是高可移植性、異構性的實現(xiàn)環(huán)境和健壯平臺,也是實現(xiàn)可伸縮性、可移植性、分布式異構互操作應用軟件開發(fā)的標準平臺。

J2ME

J2ME提供了HTTP高級Internet協(xié)議,使移動電話能以Client/Server方式直接訪問Internet的全部信息,不同的Client訪問不同的文件,此外還能訪問本地存儲區(qū),提供最高效率的無線交流。J2ME是Java 2平臺的微型版,它分成CDC(connected device configuration)和CLDC(connected limited device configuration)兩部分。CDC運行在連接虛擬機上,為手提式計算機一類較復雜的移動設備提供應用平臺;CLDC運行在核心虛擬機(KVM)上,它實現(xiàn)MIDP(Mobile Information Device Profile)移動信息設備應用平臺,即針對手機之類的設備建立移動計算平臺。

在小型的J2ME(Java 2 Micro Edition)方面,主要是應用在內存容量小、體積也較小的電子裝置上。小至智能卡、行動電話,個人數(shù)字助理都是運用J2ME的最佳平臺。Java在Palm的應用上,PalmOS 4.0內含KJava,Sun也推出針對PalmOS使用的J2ME版本。所以,以既有的Java程序設計知識,就可以在Palm PDA上開發(fā)出Palm的各式各樣應用系統(tǒng)。Java和Palm這兩個標準平臺的結合,將是下一波PDA應用的趨勢。Java在手機的應用上,Nokia、Motorola、Ericsson 都將推出利用J2ME技術的新手機,所以Java程序設計師有更多的平臺可供施展。此種結合J2ME及無線通訊技術的無線開放應用平臺,將提供行動商務極佳的解決方案。

在中型的J2SE(Java 2 Standard Edition)方面,Sun推出一個新的解決方案,稱為Java Web Start。原先的Java Applet是在WebBrowser 中間開出一塊方形區(qū)域來執(zhí)行Java程序,但是這樣在執(zhí)行效能和兼容性上都受限于原有的 Web Browser,F(xiàn)在新推出的Java Web Start則是在操作系統(tǒng)上直接執(zhí)行的Java Application,但是可以在網(wǎng)頁上激活。如此一來既可和網(wǎng)頁結合,在執(zhí)行上也更快、更有效率。并且,Sun和IBM都將推出支持64位運算的Java版本,這對一般計算機上執(zhí)行的客戶端Java應用系統(tǒng)的開發(fā)將會是一大利器。

另外在大型的J2EE(Java 2 Enterprise Edition)應用上,可以說"J2EE"已經成為服務器運算環(huán)境的標準。Java Servlets、JSP(Java ServerPages)、EJB(Enterprise JavaBeans)、JavaMail、JDBC、JMS等,都是各家廠商產品開發(fā)的重點方向。J2EE兼容的是一般Intel個人計算機(Linux、Windows.....)、麥金塔以及各家高效能高穩(wěn)定度的UNIX伺服主機,未來必定成為服務器運算市場上的主要選擇之一。

除了以上這三大Java組合之外,Java和XML的整合也是未來的重點。Sun公司已經推出Java處理XML的標準延伸API - Java API for XML Parsing (JAXP),可以讓各家所制作的XML解析器有接口上的標準。所以在Java程序中,只要了解一套API(JAXP)就可以完全處理XML文件,讓XML的應用更加方便。Java這個跨平臺的開發(fā)環(huán)境,加上XML這個跨平臺的資料格式,此種跨平臺優(yōu)勢組合勢將成為未來訊息傳遞及資料交換的主要應用技術,如虎添翼地結合成一個最佳的跨平臺解決方案。

藉由J2SE (Java 2 Standard Edition)可以開發(fā)在PC上的應用軟件,藉由J2ME (Java 2 Micro Edition) 可以跨足更廣大的家電、智能卡、電子裝置等市場,再藉由J2EE (Java 2 Enterprise Edition ) 可以整合伺服主機運算環(huán)境。Java技術的應用范圍幾乎已經無所不在,Java技術更可以在網(wǎng)際網(wǎng)絡及電子商務各領域中,提供全方位的解決方案。

隨著應用領域的不同,Java 有許多 API(Application Programming Interface),這些 API 分成三大類:

· Java Core API:由 Sun 制定的基本 API,任何 Java 平臺都必須提供。

· Java Standard Extension API (javax):由 Sun 制定的擴充 API,Java 平臺可以選擇性地提供或加裝。

· 廠商或組織所提供的 API:由各家公司或組織所提供。

其中 Core API 和 Standard Extension API 已經逐漸涵蓋了大部份的信息應用領域,例如多媒體、數(shù)據(jù)庫、Web、企業(yè)運算、語音、實時系統(tǒng)、網(wǎng)絡、電話、影像處理、加解密、GUI、分布式運算 ......。如果你有某項需求尚未有標準的 Java API 可遵循,你可以向 Sun 提出制定新 API 的請求。經過審核之后,你的要求可能會通過、駁回 ...... 等。如果通過,就會開始進入制定 API 的程序。Java API 的制定過程因為公開,且經過許多業(yè)界技術領先公司的共同參與,所以相當完善而優(yōu)異。


EJB的生態(tài)環(huán)境

在sun公司提供的EJB規(guī)范中,我們一個完整的基于EJB的分布式計算結構由六個角色組成,這六個角色可以由不同的開發(fā)商提供,每個角色所作的工作必須遵循Sun公司提供的EJB規(guī)范,以保證彼此之間的兼容性。


EJB組件開發(fā)者: 開發(fā)并銷售 EJB。
應用組合者: 將不同的 EJB 搭建成應用。
部署者: 使用相應工具在運行環(huán)境下配置 EJB。
EJB 服務器提供者: 開發(fā)并銷售 EJB 服務器
EJB 容器供應商: 開發(fā)并銷售 EJB 容器
系統(tǒng)管理員: 監(jiān)視運行時情況\r

1、EJB組件開發(fā)者(Enterprise Bean Provider)

EJB組件開發(fā)者負責開發(fā)執(zhí)行商業(yè)邏輯規(guī)則的EJB組件,開發(fā)出的EJB組件打包成ejb-jar文件。EJB組件開發(fā)者負責定義EJB的remote和home接口,編寫執(zhí)行商業(yè)邏輯的EJB class,提供部署EJB的部署文件(deployment descriptor)。部署文件包含EJB的名字,EJB用到的資源配置,如JDBC等。EJB組件開發(fā)者是典型的商業(yè)應用開發(fā)領域專家。

EJB組件開發(fā)者不需要精通系統(tǒng)級的編程,因此,不需要知道一些系統(tǒng)級的處理細節(jié),如事務、同步、安全、分布式計算等。

2、應用組合者(Application Assembler)

應用組合者負責利用各種EJB組合一個完整的應用系統(tǒng)。應用組合者有時需要提供一些相關的程序,如在一個電子商務系統(tǒng)里,應用組合者需要提供JSP(Java Server Page)程序。

應用組合者必須掌握所用的EJB的home和remote接口,但不需要知道這些接口的實現(xiàn)。

3、部署者(Deployer)

部署者負責將ejb-jar文件部署到用戶的系統(tǒng)環(huán)境中。系統(tǒng)環(huán)境包含某種EJB Server和EJB Container。部署者必須保證所有由EJB組件開發(fā)者在部署文件中聲明的資源可用,例如,部署者必須配置好EJB所需的數(shù)據(jù)庫資源。

部署過程分兩步:部署者首先利用EJB Container提供的工具生成一些類和接口,使EJB Container能夠利用這些類和接口在運行狀態(tài)管理EJB。 部署者安裝EJB組件和其他在上一步生成的類到EJB Container中。 部署者是某個EJB運行環(huán)境的專家。

某些情況下,部署者在部署時還需要了解EJB包含的業(yè)務方法,以便在部署完成后,寫一些簡單的程序測試。

4、EJB 服務器提供者(EJB Server Provider)

EJB 服務器提供者是系統(tǒng)領域的專家,精通分布式交易管理,分布式對象管理及其它系統(tǒng)級的服務。EJB 服務器提供者一般由操作系統(tǒng)開發(fā)商、中間件開發(fā)商或數(shù)據(jù)庫開發(fā)商提供。

在目前的EJB規(guī)范中,假定EJB 服務器提供者和EJB 容器提供者來自同一個開發(fā)商,所以,沒有定義EJB 服務器提供者和EJB容器提供者之間的接口標準。

5、EJB 容器提供者(EJB Container Provider)

EJB 容器提供者提供以下功能:

提供EJB部署工具為部署好的EJB組件提供運行環(huán)境 。EJB容器負責為EJB提供交易管理,安全管理等服務。

EJB 容器提供者必須是系統(tǒng)級的編程專家,還要具備一些應用領域的經驗。EJB 容器提供者的工作主要集中在開發(fā)一個可伸縮的,具有交易管理功能的集成在EJB 服務器中的容器。EJB 容器提供者為EJB組件開發(fā)者提供了一組標準的、易用的API訪問EJB 容器,使EJB組件開發(fā)者不需要了解EJB服務器中的各種技術細節(jié)。

EJB容器提供者負責提供系統(tǒng)監(jiān)測工具用來實時監(jiān)測EJB容器和運行在容器中的EJB組件狀態(tài)。

6、系統(tǒng)管理員(System Administrator)

系統(tǒng)管理員負責為EJB服務器和容器提供一個企業(yè)級的計算和網(wǎng)絡環(huán)境。

系統(tǒng)管理員負責利用EJB 服務器和容器提供的監(jiān)測管理工具監(jiān)測EJB組件的運行情況。

將責任分離的另一個好處是在代碼級上,可以將基于EJBs的系統(tǒng)邏輯的分派給更適合的專家。SUN的EJB規(guī)范建議使用幾個獨立的角色,對于確定運作環(huán)境的責任鏈是非常重要的。舉例說,EJB提供者是由商業(yè)專家和分析人員扮演的角色,他們確定一個組織內的最佳信息流程。但是仍舊有Second Domain Expert,如應用程序匯編人員,他們集成不同的EJB組件并確保它可以確保滿足應用程序的需求。

還有兩種角色歸入到系統(tǒng)級的部分,第一個是配置人員,他們負責實際的安裝和配置基于EJB的系統(tǒng)。這需要有設置目錄服務和集成現(xiàn)有應用程序的經驗。第二個是系統(tǒng)管理員,他們要提供全天的監(jiān)視和支持,確保應用程序正常運作。盡管系統(tǒng)管理員這個角色不需要是Java編程專家,但是他需要能夠應付以下問題:

設置Java Virtual Machine (JVM)并關聯(lián)系統(tǒng)環(huán)境參數(shù)(如:CLASSPATH)
使用Java Archive (jar)命令保存類文件
懂得WEB服務器和Servlet的工作原理。
要能通過監(jiān)視運行中程序的狀態(tài)確定優(yōu)化方法。

很明顯,有些角色是可以交叉的,比如系統(tǒng)管理員和配置人員。盡管配置人員可能是將類文件復制到服務器而系統(tǒng)管理員需要確定配置人員是否復制到了正確的位置。


標簽:漫談EJB (1) 

相關文章