J2EE基本之EJB周全懂得。本站提示廣大學習愛好者:(J2EE基本之EJB周全懂得)文章只能為提供參考,不一定能成為您想要的結果。以下是J2EE基本之EJB周全懂得正文
1、甚麼是EJB?
EJB(Enterprise Java Beans),是JavaEE中的貿易運用組件技巧,是JavaEE三年夜組件(Servlet,JSP,EJB)之一。EJB供給了讓客戶端應用長途散布式對象的框架,極年夜地簡化了具有優越的可擴大性的企業級運用的開辟。EJB組件構造是基於組件的散布式盤算構造,是散布式運用體系中的組件。
EJB是Java辦事器端辦事框架的標准,為辦事器端構件體系界說了一個技巧標准。該標准能供給一個尺度的、散布式的、基於面向對象的系統構造。它為構件開辟者和應用者屏障失落龐雜的體系級底層功效完成,使開辟者專注於營業邏輯的完成,個中一些龐雜的底層辦事由EJB容器擔任。EJB可以依據運用的增加而擴大,EJB辦事器供給了負載均衡功效,和資本的拜訪權限掌握。
2、EJB容器及組件間通訊
EJB容器為EJB組件供給了運轉情況,EJB容器治理EJB的方法與Web容器治理Servlet的方法相似,EJB必需在EJB容器裡運轉。EJB容器重要治理了EJB的耐久性、性命周期治理、平安性治理、事務治理、長途銜接、並發處置、集群和負載平衡等成績。容器治理EJB組件的實例,使EJB組件完成最年夜的效能和內存應用率。容器可以或許激活和鈍化EJB組件、治理實例池等。容器擔任治理散布式事務處置的龐雜成績,為長途銜接治理低層的通訊成績,並且對EJB組件的開辟者和客戶都隱藏了通訊成績。是以,EJB組件開辟人員可以把精神集中於封裝商務邏輯,容器擔任處置其他一切事務。EJB經由過程ejbContent、JNDJ、回調函數等機制與容器交互。
JBoss是一個治理EJB的容器和辦事器,支撐EJB1.1、EJB2.0和EJB3的標准,其普通和Tomcat或Jetty綁定應用。
上面請看圖一(EJB容器的任務道理圖):
圖一:EJB容器任務道理
EJB組件是一種散布式對象,當它被實例化後,可以與其他地址空間中的運用法式停止通訊。EJB實例被封裝在框架(skeleton)對象中,它經由過程存根(stub)對象與客戶端交換。存根不包含商務邏輯,但完成了貿易接口。每當存根貿易接口上的貿易辦法被挪用時,存根就把收集新聞發送給框架,告知它挪用了哪些辦法。框架挪用EJB實例的響應辦法,並把EJB實例前往的成果發送給存根,由存根把這些成果再前往給響應的運用法式。經由過程存根和框架這兩個中央對象,屏障了散布式對象之間的龐雜通訊進程。框架由容器完成,而存根由開辟對象主動生成,兩者都不須要編寫代碼。上面請看圖二(EJB組件通訊道理圖):
圖二:EJB組件間通訊道理
3、EJB分類
EJB組件可以分為會話Bean和新聞驅動Bean兩種。會話Bean封裝了商務邏輯,客戶端可以經由過程當地、長途、Web辦事的方法挪用會話Bean的辦法來拜訪安排在辦事器上的運用法式,從而挪用其他Bean的辦法,會話Bean不具有耐久性,即它的數據不保留在數據庫裡。個中會話Bean又包含有狀況會話Bean、無狀況會話Bean和單件會話Bean三種。新聞驅動Bean平日用作特定類型新聞的監聽器,使JavaEE可以處置異步新聞,而客戶端不會經由過程接口拜訪新聞驅動Bean。
上面將順次詳細引見有狀況會話Bean、無狀況會話Bean、單件會話Bean和新聞驅動會話Bean。
4、無狀況會話Bean
無狀況會話Bean只為客戶端供給商務邏輯,不為客戶端保存會話狀況。在客戶端挪用無狀況會話Bean的辦法時,對應會話Bean的屬性會描寫這個挪用狀況,但僅僅只在該辦法挪用時代堅持這個狀況。當辦法挪用停止,狀況就被消除。
無狀況會話Bean的性命周期由容器掌握。當EJB容器收到客戶端對無狀況會話Bean的要求時,假如EJB不存在,則容器會創立一個Bean的實例,再將須要的資本注入組件,然後容器回調PostConstruct辦法,組件創立終了。此時,Bean從“不存在”狀況轉換到“存在”狀況。客戶端挪用停止,容器回調PreDestroy辦法,Bean將被燒毀,此時,Bean從“存在”狀況轉換成“不存在”狀況。上面請看圖三(無狀況會話Bean的性命周期):
圖三:無狀況會話Bean的性命周期
5、有狀況會話Bean
有狀況會話Bean為用戶保存了一次會話狀況,它不克不及像無狀況會話Bean一樣被放到組件池裡讓分歧用戶同享。關於有狀況會話Bean來講,只需有客戶端發送要求,容器就創立一個實例與該客戶端對應,一個客戶端對應一個實例。在生計期內,有狀況會話Bean堅持了用戶的信息,一旦會話停止,有狀況會話Bean的性命周期也告停止。
有狀況會話Bean有三種運動狀況:不存在、運動和鈍化。當有狀況會話Bean處於運動狀況一段時光後,假如依然沒有收到內部客戶真個要求,為了節儉體系資本,容器會把有狀況會話Bean中的狀況信息序列化莅臨時存儲空間,並把有狀況會話Bean從內存中移除,這個進程稱為“鈍化”。在鈍化之前,容器回調PrePassivate辦法。當容器收到對曾經被鈍化的有狀況會話Bean的要求,會從新初始化有狀況會話Bean的實例,並將狀況信息從暫時空間掏出,使之從新回到運動狀況,這個進程稱之為“激活”。在激活以後,容器回調ProActivate辦法。當有狀況會話Bean鈍化一段時光後,容器將完全消除該實例,回調PreDestroy辦法。上面請看圖四(有狀況會話Bean的性命周期):
圖四:有狀況會話Bean的性命周期
6、單間會話Bean
單件會話Bean對每一個運用法式實例化一次,而且在運用法式的性命周期中一向存在。單件會話Bean為特定的情形而設計,客戶端可以以同享且並發的形式拜訪這個獨一的EJB實例。
單件會話Bean與無狀況會話Bean很類似,差別在於單件會話Bean在運用中只要一個實例,而無狀況會話Bean可以有許多實例,每個實例都被放在組件池裡,應用戶同享。
單件會話Bean像無狀況會話Bean一樣,從不鈍化。其性命周期只包括兩種狀體:“不存在”和“存在”。上面請看圖五(單件會話Bean的性命周期):
圖五:單件會話Bean的性命周期
7、新聞驅動Bean
新聞驅動Bean是設計用來專門處置基於新聞要求的組件。新聞驅動Bean集成了Java新聞辦事(Java Message Service,JMS)和企業Bean的功效。不克不及由客戶端直接獲得其援用而挪用辦法,只能由體系新聞來啟動。
EJB容器平日創立一個新聞驅動Bean的組件池。與無狀況會話Bean相似,新聞驅動Bean從不被鈍化,其性命周期只包括兩個階段:不存在和存在。
新聞驅動Bean類必需完成MessageListener接口。當容器檢測到Bean監聽的隊列裡的一條新聞時,就挪用onMessage()辦法,將新聞作為參數傳入。
以上這篇J2EE基本之EJB周全懂得就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。