溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

什么是 EJB?

發(fā)布時間:2020-08-10 12:28:41 來源:ITPUB博客 閱讀:135 作者:xtzg1031 欄目:編程語言
1.什么是 EJB?
一個技術(shù)規(guī)范:EJB 從技術(shù)上而言不是一種"產(chǎn)品"
EJB 是一種標準描述了構(gòu)建應(yīng)用組件要解決的:
可擴展 (Scalable)
分布式 (Distributed)
事務(wù)處理 (Transactional)
數(shù)據(jù)存儲 (Persistent)
安全性 (Secure)

2.Sun 對 EJB 的期望
提供一個標準的分布的、基于 OO 的組件架構(gòu)
屏蔽復(fù)雜的系統(tǒng)級功能需求
Write once, run anywhere
與非 Java 應(yīng)用之間的互操作能力
兼容 CORBA 標準

3.為什么選擇 EJB?

EJB 服務(wù)器完成"繁雜"的工作:應(yīng)用開發(fā)人員關(guān)注于業(yè)務(wù)邏輯的實現(xiàn)而不是底層的實現(xiàn)機制(類似于 4GL 語言設(shè)計的目標)
支持事務(wù)處理
多個業(yè)務(wù)操作同時成功,或全部失敗
可以通過在代碼外的描述來定義事務(wù)處理級別
可擴展性
EJB 可以根據(jù)您應(yīng)用的增長而擴展
EJB 服務(wù)器往往還提供了負載均衡
安全性:由 EJB 服務(wù)器提供資源的訪問權(quán)限控制

4.EJB 架構(gòu)

為了滿足架構(gòu)的目標,規(guī)范中描述了
服務(wù)器 (Server)
容器 (Container)
類 (Class) 和實例 (Instance)
Home 和 Remote 接口
客戶端 (Client)

5. 簡化的編程模型

關(guān)注于業(yè)務(wù)邏輯實現(xiàn):EJB 負責(zé)生命周期 (lifecycle), 數(shù)據(jù)存儲 (persistence), 事務(wù)處理語義 (transactional semantic), 安全(security), ...
通用的編程模型:各種服務(wù)的高層 API
Java 是其編程語言

1.EJB 特點

由一個 EJB 容器在運行時創(chuàng)建和管理 EJB
在部署 EJB 時定制其運行方式
由 EJB 容器和服務(wù)器來協(xié)調(diào)客戶端的訪問
可以部署到任何兼容的 EJB 容器中
客戶端對 EJB 的視圖是由 Bean 開發(fā)人員決定的

2.EJB 服務(wù)器

管理 EJB 容器 (它管理 Bean)
提供對操作系統(tǒng)服務(wù)的存取
提供 Java 相關(guān)的服務(wù),尤其是
通過 JNDI 訪問命名空間
基于 OTS 的事務(wù)處理服務(wù)

3.EJB 容器

管理 Bean 生命周期:將 EJB 服務(wù)器提供的服務(wù)傳遞給 Bean
生成代碼來實現(xiàn)對 Bean 的存取訪問
強制事務(wù)處理的限制
創(chuàng)建、初始化和回收 Bean
管理持久數(shù)據(jù)的存儲
對客戶端而言 EJB 容器是透明的

4.在一個 EJB 服務(wù)器中的容器

目前容器通常是由 EJB 服務(wù)器本身提供的
在 EJB 1.0 或 1.1 規(guī)范中沒有定義容器-到-服務(wù)器的接口
各廠商可以根據(jù)他們的見解來實現(xiàn)服務(wù)器和容器的各自責(zé)任

5.容器提供服務(wù): 數(shù)據(jù)存儲

容器決定何時載入/儲存狀態(tài)
Container-Managed Persistence(容器管理存儲/CMP)
容器負責(zé)存儲您的 Bean
容器生成必要的類和代碼
Bean-Managed Persistence(Bean 管理存儲/BMP)
Bean 開發(fā)人員提供存儲代碼
開發(fā)人員決定 如何存儲, 容器仍然決定 何時進行

6.容器提供服務(wù): 事務(wù)處理

可以由容器代理來實現(xiàn)
容器將得到業(yè)務(wù)邏輯方法的事務(wù)處理需求
容器提供事務(wù)控制代碼
也可以由程序員通過代碼實現(xiàn)

7.容器提供服務(wù): 其它服務(wù)

其它服務(wù)包括
命名 (Naming)
安全 (Security)
線程管理 (Thread management)
這些服務(wù)由容器代理完成將減少應(yīng)用開發(fā)人員的負擔(dān)


8.分布式對象運算

遠程對象被作為本地對象來處理:傳遞信息的方式不變,但開銷更大
Enterprise JavaBeans 永遠運行在服務(wù)器上:對 Bean 的訪問永遠是遠程調(diào)用

9.Stub 和 Skeleton

由 EJB 生成:
"Stub" 對要傳遞出去的信息編碼
"Tie/Skel" 將接受到的信息解碼并傳遞給目標對象

10.分類: Enterprise JavaBeans

+---Entity Beans--CMP/BMP
Ejb--|
+---Session Beans--Stateful/Stateless

會話 Bean (Session Bean):根據(jù) EJB 規(guī)范,一個會話 Bean 是:

代表單個客戶端來執(zhí)行
可以參與到事務(wù)處理中
不直接代表共享于數(shù)據(jù)庫中的數(shù)據(jù),但它能訪問和更新這些數(shù)據(jù)
相對而言是短暫存在的
當(dāng) EJB 容器失效后就不存在---客戶端需要重新建立一個信新的會話對象來繼續(xù)運算

實體 Bean (Entity Bean):根據(jù) EJB 規(guī)范,一個實體 Bean 是:

提供在數(shù)據(jù)庫中數(shù)據(jù)的對象視圖
允許被多個用戶共享存取訪問
可以是長期存在 (只要它存在于數(shù)據(jù)庫中)
實體 Bean, 它的主鍵對象, 以及它的遠程引用將能跨 EJB 容器的宕機而存在

11.EJB 類和實例

構(gòu)建 EJB 應(yīng)用包括來自三方的代碼
開發(fā)人員編寫的代碼
由 EJB API 定義的類和接口
由容器自動生成的代碼
開發(fā)人員編寫的代碼包括
Bean 類 (定義了業(yè)務(wù)邏輯)
Home 接口 (如何查找或創(chuàng)建 bean)
Remote 接口 (如何存取 bean)
其它組件,根據(jù) bean 實際要求

12.EJB Home 接口

每個 bean 有一個
用于:創(chuàng)建新的 bean 實例、查找現(xiàn)存的 bean (只能是實體 bean)

Remote 接口:定義 bean 的公共接口---只有在 Remote 接口中定義的方法才能被客戶端訪問

EJB 客戶端

可以為 servlet, JSP, 應(yīng)用程序或其它 bean
通過 JNDI 來查找 EJB home 接口,步驟為:
創(chuàng)建一個 JNDI Context (initial context)
使用 JNDI Context 來查找 bean home 接口
使用 bean home 接口來創(chuàng)建/查找 bean 實例
使用 bean 實例完成業(yè)務(wù)操作
實際的存取 (對 EJB) 是通過容器生成的類來完成

EJB 架構(gòu)

客戶端對 bean 訪問永遠不是直接的
EJBObject (tie) 是由容器自身提供的:用來幫助管理 bean 的生命周期

EJB 中的角色

EJB 服務(wù)器供應(yīng)商: 開發(fā)并銷售 EJB 服務(wù)器
EJB 容器供應(yīng)商: 開發(fā)并銷售 EJB 容器
Enterprise bean 開發(fā)人員: 開發(fā)并銷售 EJB
應(yīng)用組裝人員: 將不同的 EJB 搭建成應(yīng)用
部屬人員: 使用相應(yīng)工具在運行環(huán)境下配置 EJB
系統(tǒng)管理員: 監(jiān)視運行時情況

***************
*您學(xué)到了哪些?*
***************
EJB 是構(gòu)建健壯,可擴展并支持事務(wù)處理的分布式對象技術(shù)規(guī)范
有兩種類型的 EJB: Session Bean 和 Entity Bean
一個 EJB 服務(wù)器使用 EJB 容器;容器來管理其所包容 bean 的生命周期
每個 bean 將有三個類: bean 類, home 接口和 remote 接口 [@more@]
向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI