學(xué)習(xí)EJB編程的簡單過程
從單層體系結(jié)構(gòu)講到了多層體系結(jié)構(gòu),又講到了N層體系結(jié)構(gòu)。這樣引出了主題(J2EE)。不過這句話翻譯的不錯(cuò):其他需要特別注意的(是)服務(wù)器方資源包括線程,數(shù)據(jù)庫連接,安全、事務(wù)等等。定制處理這些資源的基礎(chǔ)結(jié)構(gòu)是相當(dāng)費(fèi)勁的。這種工作在INTERNET環(huán)境中是不可能的。如果你的開發(fā)周期只有三個(gè)月,能夠?qū)?shù)據(jù)庫訪問建立連接池、對象緩沖區(qū)或“精彩的”對象層嗎?
說了一大堆話終于引出了偉大的J2EE。不過要是不知道N層結(jié)構(gòu)的真應(yīng)該看看!容器:說白了容器就是JAVA程序的運(yùn)行環(huán)境。不知道我的理解是否正確。現(xiàn)在的程度就只能理解到這了。
在學(xué)習(xí)EJB過程中,書上說J2EE規(guī)范定義了四種容器類型:
1.小應(yīng)用程序(APPLET)。
2.應(yīng)用程序客戶容器。(自己以為就是SWING)
3.WEB容器(SERVLET 和 JSP)
4.EJB容器。
看來123都已經(jīng)掌握了,現(xiàn)在就差4了,所以學(xué)習(xí)EJB容器還是必要的哦!書上對EJB寫了個(gè)更加深入的解釋:EJB是個(gè)分布式組件模型,可以開發(fā)安全的、可伸縮的、事務(wù)性的多用戶組件。簡單的說,EJB是包含業(yè)務(wù)邏輯的可復(fù)用軟件單元。就象JSP可以將應(yīng)用程序與業(yè)務(wù)邏輯分開一樣,EJB可以將應(yīng)用程序邏輯和系統(tǒng)層服務(wù)分開,使開發(fā)人員集中考慮業(yè)務(wù)問題,而不必考慮系統(tǒng)編程。
J2EE API:
RMI/IIOP:Remote Method Invocation類似網(wǎng)絡(luò)連接使用的一些東西。
JNDI:Java Naming and Directory Interface。
JDBC:這個(gè)不用說了吧?
JAVAMAIL/JAF:JAVA的MAIL服務(wù),JAF是郵件的附件。
JMS:JAVA MESSAGE SERVER。JAVA消息服務(wù)。
設(shè)計(jì)中為何使用EJB:
說了一大堆,我還是不確定是為什么。再接著看吧!不過這次我更加的確定了,原來EJB容器就相當(dāng)于一個(gè)“功能“服務(wù)器,可以把一些業(yè)務(wù)功能寫在這個(gè)里邊。然后用123來調(diào)用咯?。ú恢肋@么說是不是有點(diǎn)搞笑)。哈哈,我的理解正確了,果然書的第8頁就說了,容器可以看成是執(zhí)行環(huán)境!EJB的容器服務(wù):(這里的容器服務(wù)都是不用編碼,而是容器管理自己實(shí)現(xiàn)的啊。不錯(cuò))
組件池和壽命周期管理:
哈哈,來點(diǎn)白話的,這是我個(gè)人理解的,組件池在容器啟動(dòng)的時(shí)候就自己生成了好多的BEAN的實(shí)例,假如說是10個(gè)吧,這個(gè)時(shí)候客戶1來了,他就拿了BEAN1,這個(gè)時(shí)候別人是不能使用BEAN1的,再來了第2個(gè)客戶,他不能拿BEAN1了,就只能拿BEAN2了。。。。。。。這個(gè)時(shí)候客戶11來了,容器發(fā)現(xiàn)已經(jīng)沒有BEAN給他用了,于是就找個(gè)現(xiàn)在沒人用的BEAN給他用,可是發(fā)現(xiàn)全都在被占用,沒辦法了,就只好再生成一個(gè)給他用了。哈哈,就是這么簡單,可是有人會(huì)問了,這不是越生成越多嗎?沒關(guān)系,容器發(fā)現(xiàn)生成的BEAN沒人用了,就會(huì)自動(dòng)的給刪掉,釋放空間,釋放系統(tǒng)資源嘛!
客戶會(huì)話管理:
理解鈍化和激活就行了。鈍化就是把客戶的BEAN狀態(tài)保存在池中。激活就是把客戶的這個(gè)BEAN狀態(tài)再還給客戶。
數(shù)據(jù)庫連接池:
這個(gè)好象不用講了吧!數(shù)據(jù)資源共享!這個(gè)名起的COOL B了。
事務(wù)管理:
事務(wù)很是昂貴??!
驗(yàn)證和訪問控制:
這個(gè)很簡單!容器如何提供服務(wù):這一部分先不寫,以后再寫,因?yàn)槲乙膊辉趺蠢斫?。哈?/P>
EJB類型:
分為3種類型:
會(huì)話BEAN:
1.無狀態(tài)會(huì)話BEAN。
2.狀態(tài)會(huì)話BEAN。
這兩個(gè)BEAN非常的重要,但是在第3章才有講。哈哈,先擱這!
實(shí)體BEAN:
自己理解就好象是數(shù)據(jù)庫BEAN,就是把數(shù)據(jù)庫的內(nèi)容都讀出來放在BEAN里,也不知道它具體是怎么讀的,這樣做會(huì)不會(huì)很浪費(fèi)系統(tǒng)資源!???
實(shí)體BEAN根據(jù)同步的不一樣又可以分為:
CMP(容器管理的持久性):容器負(fù)責(zé)BEAN與基礎(chǔ)的數(shù)據(jù)庫同步。
BMP(BEAN管理的持久性):這里要編程人員負(fù)責(zé)和基礎(chǔ)數(shù)據(jù)庫同步!容器在適當(dāng)?shù)臅r(shí)候調(diào)用編程人員寫好的SQL語句!
真不明白,為什么已經(jīng)有CMP了還要出了個(gè)BMP,書上是這么解釋的:
有時(shí)需要增加設(shè)計(jì)的靈活性或在非關(guān)系型存儲(chǔ)中支持持久性?這是人話嗎?
還有個(gè)比方:EJB規(guī)范V1.1只允許實(shí)例變量和表格列之間的一對一映射。這樣,使用這個(gè)版本時(shí),如果要在實(shí)體BEAN中表示在多個(gè)表格中存儲(chǔ)狀態(tài)的累計(jì)對象,則無法使用CMP,而要使用BMP。EJB2.0規(guī)范定影了復(fù)雜的查詢語言!
【編輯推薦】