EJB學習筆記

1 J2ee概述

J2ee是企業級的計算平臺,它爲分佈式和基於組件的軟件開發提供了一個「操做系統」 javascript

Ant是什麼工具?? html

EJB java

什麼是EJB web

是一種server端組件結構,簡化了開發分佈式企業級程序的過程 算法

類比:應用server是一個CD播放器,而組件是一張cd,因爲有了cd標準,不論什麼cd播放器都能播放cd 數據庫

EJB分爲兩個部分: 編程

一、 規範 api

列出了組件與應用server之間相互約定的規則 緩存

二、 一組java接口 安全

組件和server都應該

Java bean ejb的差異?

Javabean僅僅是一個含有get/setjava類,javabean是不能部署的

EJB中的角色分工:6種分工

一、 bean供應商:編寫組件

二、 應用系統組裝商:整個系統的架構師,組織組件協同工做

三、 EJB系統部署員:瞭解各類執行環境,知道怎麼樣在server中部署bean

四、 系統管理員:維護和監控已經部署好的系統

五、 容器和server提供商:如weblogicwebsphere等等

六、 工具供應商:JbuilderwsadJuintant等等

2 EJB基礎

EJB技術是基於RMIJNDI的,學習以前應瞭解這兩項技術

一個企業級BEAN是一個可以在分佈式環境中部署的server端軟件組件,一個EJB多是由一個或者多個java對象組成,Bean用戶沒必要關係組件的組成,它們僅僅和組件的接口打交道。

21 企業Bean

Bean類型:

一、 會話Bean

模擬商務過程對象,就像動詞同樣,運行動做

二、 實體Bean

模擬商務數據對象,就像名詞同樣,如產品、訂單等等數據庫對象

三、 消息驅動Bean

與會話Bean類似,也是表明動做,僅僅能經過消息來調用它們

22 分佈式對象:EJB基礎
23 分佈式對象和中間件
24 企業級Bean的組成部分
241 Enterprise Bean

所有的Ejb類都必須實現的接口是:javax.ejb.EnterpriseBean

所有的會話bean都必須實現javax.ejb.SessionBean接口

所有的實體bean都必須實現javax.ejb.EntityBean接口

所有的消息驅動bean都必須實現javax.ejb.MessageDriveBean接口

242 EJB對象

◆遠程接口(Remote接口):

        EJB對象必須clone bean類的每個公開的商務方法,bean供應商編寫了一個特殊的接口,該接口複製相應的bean類的所有公開的商務方法,該接口稱爲遠程接口(Remote接口)

        所有的Remote接口必須來源於javax.ejb.EJBObject

client不能直接調用EJB,client調用的是EJB對象,而不是調用Bean,是client-》EJB對象-》EJB

什麼是EJB對象?

EJB對象把所有的client請求都傳遞給bean,是一種代理對象,具備網絡功能,EJB對象把client和Bean鏈接在一塊兒

243 Home對象

client是經過EJB對象調用Bean的,那麼,client是怎樣調用獲得EJB對象的引用的呢?

就是經過Home對象來引用EJB對象的

EJB對象的製造生成庫

功能:

        生成EJB對象

        查找現存的EJB對象

        刪除EJB對象

Home接口:

Home對象、EJB對象、Bean實例之間的關係??

244 本地接口

由於Home接口生成Bean的速度是很慢的

可以經過本地對象高速、高效的調用企業級Bean,而不是經過EJB對象調用,本地對象實現本地接口,而不是遠程接口

EJB對象:請求攔截器

遠程接口:請求攔截器上的接口

Home對象:製造生成庫

Home接口:製造生成庫接口

245 部署描寫敘述

       必須在部署文件裏聲明組件對中間件服務的要求,好比,使用部署描寫敘述來聲明:

一、 Bean的管理和生命週期要求:指明EJB容器應該怎麼管理這些Bean

二、 持久性要求:是本身處理持久性仍是託付容器處理持久性問題

三、 事務處理要求:

四、 安全性要求:

EJB的部署描寫敘述是一個XML文件,Bean的提供商負責描寫敘述部署文件

246 供應商特有文件

247 EJB-JAR文件

Bean類、Home接口、Remote接口以及部署文件一旦生成,就可以打包成EJB-JAR文件了

3 編寫第一個Bean

31 怎樣開發EJB組件
開發一個EJB組件,通常遵循例如如下步驟:
一、 編寫Beanjava文件、組件接口、home接口、EJB class文件
二、 編寫部署描寫敘述附
三、 編寫java文件到.CLASS文件裏
四、 使用工具生成ejb-jar文件
五、 公佈ejb-jar文件
六、 配置EJBserver,可能需要調整數據庫鏈接、緩衝池等等
七、 開啓EJBserver
八、 測試

311 Remote接口
Remote接口複製咱們要暴露的每一個業務方法,注意兩點:
一、 該接口繼承自javax.ejb.EJBObject,必須實現EJBObject接口所要求的幾個方法,如:remove等等
二、 必須編寫實際的業務代碼

產生hello.java文件,繼承自javax.ejb.EJBOjbect

312 本地接口
本地client將會使用本地接口而不是remote接口,本地接口和remote接口有微小的差異

產生HelloLocal.java文件,繼承自javax.ejb.EJBLocalObject
312 Home接口

Home接口擁有CreateDestroy EJB對象的方法。由Home對象運行Home接口
Home接口注意下面幾點:
一、 Create方法通常用於對EJB對象的引用,Create方法也通常用於初始化Bean

要傳遞建立Bean時的參數,需要覆蓋Home接口的create方法,並且要與Bean相應

產生HelloHome.java文件,繼承自javax.ejb.EJBHome
313 Local Home 接口
Local Home接口比Home接口有更高的性能

產生HelloLocalHome.java文件,繼承自javax.ejb.EJBLocalHome

314 Bean
好比:Bean類包括javax.ejb.SessionBean接口,必須實現該接口定義的幾個方法,如:ejbActivate()ejbPassivate()ejbRemove()setSessionContext等方法

產生HelloBean.java文件,實現javax.ejb.SessionBean接口

EJBContext:通向容器的途徑
容器經過setSessionContext方法將beancontext對象關聯起來

315 部署描寫敘述附
部署描寫敘述附是一個xml文件
部署描寫敘述文件是對前面描寫敘述的Remote接口、本地接口、Home接口、LocalHome接口、Bean類的總體描寫敘述!!

316 EJB-JAR文件
打包以上所有文件

317 部署Bean
部署步驟:
一、 覈對EJB-JAR文件
二、 EJB容器提供的工具生成EJB對象和Home對象
三、 EJB容器提供的工具生成不論什麼必須的RMI存根和骨架

318 怎樣調用Bean
現在開始討論client的代碼,通常都使用基於RMI的client,使用JAVA命名和JNDI在網絡中查找對象
代碼的特色例如如下:
一、 查找Home對象

EJB的位置透明:

       經過文件夾服務,應用程序代碼不依賴於特定的機器名字和物理位置,使得編寫的代碼可以移植。

什麼是JNDI

       JNDI提供標準接口用於定位用戶、機器、網絡、對象等,好比,可以使用JNDI定位內部網絡中的打印機,也可以定位JAVA對象及鏈接數據庫。在EJB中,JNDI用於查找Home對象

JNDI怎樣定位Home對象?
client使用別名來確認所想要的Home對象

JNDI有兩個屬性必須設置:
一、 上下文生成庫的名字
二、 提供者的URL地址

二、 使用Home對象建立EJB對象
三、 調用EJB對象的商務方法
四、 從內存中清除EJB對象

4 Session Bean

Session BeanEntity Bean的一個顯著的差異是:Session Bean的生命週期比較短

41 Session的子類型
411 狀態會話Bean
一個商務過程包括很是多步驟而且持續很是久時,需要使用有狀態的Session Bean,在每個方法之間都要保存一種狀態(有事務的概念)
412 無狀態會話Bean
       一個商務過程僅僅需要一次請求對話,一個方法調用完畢以後,該bean可能被銷燬。
爲了獲得更高的性能你應該選擇無狀態會話Bean
42 狀態Bean的特徵

421狀態Session Bean的調度原則:
       內存中僅僅有幾個有限的Bean實例,EJB容器採用LRU算法鈍化策略

422對話狀態聽從的原則:
       EJB容器鈍化Bean對象時,使用對象序列化將對象轉換成比特流,寫入硬盤
容器必須保留在鈍化和激活過程當中成員變量先前的值

423 激活/鈍化回調方法:
瞭解Bean鈍化和激活的過程當中發生了什麼??
       使用ejbPassivate方法鈍化,該方法告知bean,它所保留的對話狀態即將被交換出去,並且讓Bean釋放一些如數據庫鏈接、套接字等。

鈍化的時機:
client調用bean對象時,內存中不存在該對象,且EJB容器的緩存區已滿,此時,EJB容器在處理請求以前必須鈍化一個Bean
      
激活:
       調用ejbActivate,序列號的對象的狀態被讀會內存

42 一個簡單的狀態會話Bean

42 會話Bean的生命週期圖表

5 實體Bean
51持久的概念
511 Java對象序列號
將對象持久化到物理存儲空間中去

512 對象-關係映射(ORMAP
眼下通常手工完畢ORMAP

513 對象數據庫
Java自己作爲對象被完整的存儲,沒有ormap映射層
對象查詢語言:OQL
眼下對象數據庫的應用並不普遍

52 什麼是實體Bean
實體Bean
內存中一個實體的持久數據的Java表現形式
實體Bean類包括的文件:
       包含遠程接口、Home接口、企業Bean、部署描寫敘述符等等
與其它Bean的區別:
一、 實體Bean類映射一個數據庫模式中的實體定義
二、 實體Bean類有主鍵類

53 實體Bean的特徵
特徵:
一、 實體Bean是永久存在的
二、 實體Bean實例是一個相應到數據庫中的視圖
更新實體Bean的同一時候數據庫會本身主動被更新
EJB容器經過調用Beanejbloadejbstore方法在java對象和數據庫之間來回的傳送數據
三、 幾個實體Bean可能表明同一底層數據
四、 實體Bean可能收集再利用
五、 保存實體Bean的兩種方法
BMPBean管理持久,組件開發人員必須編寫代碼將內存中的字段轉換成數據庫中的字段,實體Bean可以經過JDBC運行Insert/Delete語句
CMP:容器管理持久,可以經過容器完畢持久化操做,容器爲您生成數據庫訪問的代碼,容器本身主動生成Insert/Delete方法。
六、 實體的建立和刪除

6 編寫Bean管理的實體Bean
編寫Bean管理的實體Bean時,您必須本身編寫數據訪問邏輯

61實體Bean編程基礎
查詢已存在的實體BeanejbFind()
(在J2EE1.4SDK中怎麼沒有ejbFind這種方法呢??)
       該方法用於在存儲空間中查詢一個已存在的實體Bean

7 編寫容器管理的實體Bean

8 消息驅動Bean

這一章咱們將會學習messaging,是一種輕量級的通信方式,它在不少場景下比RMI更合適
將會討論:
一、 messaging的簡單介紹,包含異步的預覽和麪向消息的中間件
二、 JMS的大綱,消息驅動的Bean是依靠JMS
三、 消息驅動Bean的特性
四、 消息驅動Bean與實體BeanSessionBean的比較
五、 怎樣開發消息驅動的Bean

81 爲何要使用消息驅動的Bean
在前面的章節中學習了怎樣去編寫會話Bean和實體Bean,他們都是使用RMIRMI是一種傳統的、重量級的調用組件的方式
RMI有例如如下幾點不足:
一、 性能:
RMIclient必須等待server的執行
二、 可靠性
當client調用時,server必須執行,假設server癱瘓或者網絡癱瘓,client將不會執行
三、 支持多發送和接收者
RMI限制client和server單點會話,server和client之間不能多點廣播

Messaging是一個server和client的中間人,它從消息提供商接收消息,而後爲客戶廣播消息
異步程序:

性能方面:Messagingclient運行一個請求時不會被掛起
MOMmessage-oriented middleware,面向消息的中間件

811 JMSJava 消息服務)
JMS有兩部分:
一、 API,需要編寫發送和接收消息的的代碼
二、 SPI,服務提供商接口

JMS承諾僅僅需學習JMS API一次,而後在不一樣的MOM中重用你的代碼

怎樣保證消息被髮送了呢?
       MOM中間件把消息存放在文件或者數據庫中,直到client收到消息,若client沒有對應,消息將被重發

812 消息機制的域
幾種方式:
1、公佈和訂閱方式
2、點到點方式
3、請求應答方式

813 Java消息服務API
JMS消息服務APIRMI更加複雜,需要熟悉很是多中不一樣的接口才幹編程
JMS編程模型:
一、 定位JMS驅動程序
需要訪問特定的JMS產品的驅動程序,此驅動程序稱爲鏈接工廠
二、 建立JMS鏈接
可以用鏈接工廠來得到鏈接
三、 建立JMS會話
JMS會話是鏈接和發送時可以使用的輔助對象
四、 定位JMS目的地
JMS目的地是發送消息或者接收消息所通過的通道
五、 建立JMS發生者或者JMS使用者
可以使用目的地和會話來生成發生者和使用者
六、 發送和接收消息

七、 

APIjavax.jms

814 JMSEJB的集成
什麼是消息驅動的Bean
消息驅動的Bean就是能接收JMS的特殊的EJB組件,消息驅動的Bean使用隊列或者主題的消息

JMS是用來發送消息到消息驅動BeanAPI

消息驅動Bean的特定:
一、 消息驅動Bean沒有主接口、本地主接口、遠程接口
二、 消息驅動Bean僅能接收來自JMS目的地的消息,僅有一種onMessage()方法
三、 消息驅動Bean不具備不論什麼返回值
四、 消息驅動Bean不發送異常給客戶
五、 消息驅動Bean是無狀態的
六、 消息驅動Bean是可持久的

815開發消息驅動Bean

消息驅動的Bean是實現兩個接口的類,這兩個接口是:
一、 javax.jms.messageListener
實現onMessage()方法
二、 javax.ejb.MessageDriveBean
實現ejbCreate方法
開發消息驅動Bean比開發會話Bean和實體Bean要簡單
相關文章
相關標籤/搜索