發(fā)表于: 2005.03.14 21:29
分類: eclipse開發(fā)
出處: http://zzw0598.itpub.net/post/455/21855
---------------------------------------------------------------
ZT
大躍進時代,菜鳥也能玩轉(zhuǎn)EJB
曾在一個論壇上看到一個帖子“國內(nèi)有些程序員拿著嚇人的工資,使用嚇人的技術(shù),做著嚇人的項目--得出的結(jié)果也很嚇人!”。對于J2EE開發(fā)而言,所謂的嚇人的技術(shù)指的就是EJB。學(xué)會EJB就可以拿著嚇人的工資,你是否也動心了呢?
EJB包括實體Bean、會話Bean、消息驅(qū)動Bean。實體Bean現(xiàn)在被稱為ORM(對象關(guān)系映射),是對象關(guān)系映射。會話Bean一般對應(yīng)系統(tǒng)的一個功能模塊,分為有狀態(tài)Bean和無狀態(tài)Bean兩種;有狀態(tài)bean是指在bean不同的調(diào)用方法中能保存bean狀態(tài),無狀態(tài)bean不保存狀態(tài)。現(xiàn)在一般非常建議使用無狀態(tài)Bean,因為這樣效率最高。
EJB的學(xué)習(xí)成本非常高,高得足以把很多人嚇跑。所以會EJB的人可以拿嚇人的工資,但隨著Hibernate等輕量級的ORM技術(shù)的流行、Spring等輕量級的容器的興起,這些情況正在悄悄的發(fā)生改變。特別是Spring的締造者對EJB發(fā)表了猛烈的抨擊后,EJB專家組終于被逼瘋,于是吸取了Hibernate和Spring思想,制定了EJB3的規(guī)范。
如果你學(xué)過Hibernate,或懂得ORM,EntityBean就不難看懂;假如有XDoclet的基礎(chǔ),學(xué)EJB3真是小菜一碟。如果你是一個初學(xué)者也沒關(guān)系,EJB3好簡單,只要把開發(fā)環(huán)境搭建起來,你就可以進入EJB的殿堂里徜徉,欣賞其優(yōu)美的ORM,慢慢地掉入沉思,也會有所悟。
環(huán)境搭建(Eclipse3.1M4+JBoss4)
1.下載并安裝JDK5.0:http://java.sun.com.自己找并安裝。(我安裝在:C:Java)。
2.下載Eclipse3.1M4: [url]
http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/S-3.1M4-200412162000/eclipse-SDK-3.1M4-win32.zip&url=ftp://gd.tuwien.ac.at/softeng/eclipse/S-3.1M4-200412162000/eclipse-SDK-3.1M4-win32.zip&mirror_id=7[/url]
。安裝完JDK,Eclipse下載完解壓縮就能用了。(我的是E:Eclipse)
3.下載JBoss4:http://optusnet.dl.sourceforge.net/sourceforge/jboss/jboss-4.0.0.zip。下載完解壓縮就能用。(我安裝在:d:JBoss4)
4.下載JBoss的EJB3插件:http://belnet.dl.sourceforge.net/sourceforge/jboss/jboss-EJB-3.0_Preview_2.zip。安裝該插件的方法請參考:http://docs.jboss.org/ejb3/tutorial/installing.html。安裝很簡單的,把jboss-EJB-3.0_Preview_2.zip解壓后,把lib下面的所有東西拷貝到{JBoss_Home}serveralldeploy下面就OK了。(我的是:D:JBoss4serveralldeploy)。
5.設(shè)置環(huán)境變量:JAVA_HOME和JBOSS_HOME。我的是:JAVA_HOME=C:Javajdk1.5.0和JBOSS_HOME=D:JBoss4
6.啟動JBoss,從命令行運行:d:JBoss4binrun.bat -c all
7.打開Eclipse,新建一個project(我建的是ejb_test),如果你看到工程下面的JRE System Library有jre1.5的字樣,那就恭喜你,你的Eclipse能認出JDK5了。如果看不到,您還得按右鍵configure。
8.在你的工程下新建一個名為lib的目錄,找到開發(fā)EJB所需要的jar,分別是:D:JBoss4lib的所有jar;D:JBoss4serveralllib的所有jar;D:JBoss4serveralldeployejb3.deployer的所有jar;把D:JBoss4serveralldeployjboss-aop.deployer這個文件用WinRAR打開解壓后得的所有jar。把這些jar拷貝到新建的lib目錄。
9.為了享受Eclipse自動編譯的好處,你還需要把Eclipse編譯java生成的class存放在如下指定的目錄:在你的工程下創(chuàng)建一個名為build的目錄,在該目錄下創(chuàng)建名為classes的目錄,然后右鍵選中你的工程,選中properties,把Default Output folder設(shè)置為:你的工程名字/build/classes
10.把我貼出來的ejb_test.rar解壓,把所有的東東拷貝覆蓋到你的工程,再刷新Eclipse。
11.環(huán)境配置完畢,為了照顧很多不會的人,配置是煩了點--高手看了我寫的東西肯定會笑死的^_^。
開發(fā)模板
EJB2下的開發(fā)我沒經(jīng)歷過,只是看過幾個EJB的Demo,我這里所貼出來的開發(fā)模板是我仿照我在Spring+Hibernate+XDoclet下的開發(fā)方法做的(對錯否望指正)。
我貼出來的開發(fā)模板可以將其劃分成三層:ORM層、Dao層、Service層。
ORM層是為對象關(guān)系映射層,是EntityBean的定義,和Hibernate差不了哪去,就是把XDoclet改成Annotation而已。
Dao層是Data Access Object層,Dao是對單個表(或Entity)的增刪查改,按照慣例,使用了接口。
Service層是通過調(diào)用Dao層來對多個表(或Entity)的的負責(zé)操作。這一層我是從Spring+Hibernate移植過來的,感覺有好多問題--總覺得通過調(diào)用Dao層這種方法的遠程調(diào)用代價太高,而且怎樣給SessionBean配置另一個SessionBean的實例我還沒配置成功。
運行方法
1.先啟動JBoss4,JBoss4的配置采用默認的設(shè)置.
2.本工程要用到j(luò)unit,如果沒有junit的包,你的工程出現(xiàn)了紅色的錯誤提示信息。出現(xiàn)該錯誤信息時,把鼠標放在錯誤信息的那一行,按CTRL+1,eclipse會提示你把junit的包import進來的。保證無語法錯誤后,就可以運行junit測試了。
3.運行工程下的ant腳本build.xml:右鍵點擊該文件->Run As->Ant Build。這樣會打包和部署ejb到j(luò)boss服務(wù)器。
4.運行junit測試套件org.ggyy.test.AllTests.java,(右鍵->Run As->Junit Test),如果能看到綠線,就恭喜你,測試通過。
調(diào)試EJB
不知道是我的孤陋寡聞,還是IDE技術(shù)本身的落后,我以前好像記得EJB無法調(diào)試的,也就是無法一步一步的調(diào)試跟蹤,這是EJB飽受批評的地方。
今天我到JBoss的網(wǎng)站看一下,JBoss IDE 出來新版本(測試版),能夠Debug EJB3.0!
JBoss IDE 的下載地址是:http://voxel.dl.sourceforge.net/sourceforge/jboss/JBossIDE-1.5-Preview-jre1.5-ALL.zip
下載后,解壓,從Eclipse的Help->SoftWare Updates->Find and Update->Search New Features to install->New Local Site,然后選擇剛才解壓的目錄進行安裝,一直Next下去就OK了。[/url]
調(diào)試方法
我們使用Junit測試時,所能調(diào)試的都是遠程的Bean,而遠程Bean在部署的服務(wù)器的。為此,我們需要在Eclipse里面啟動JBoss服務(wù)器。先把JBoss IDE面板顯示出來:Windows->Show View->other..->JBoss IDE->Server Navigator。
在JBoss IDE 面板右鍵->Configuration->JBoss4.0.x,按右鍵->New,選擇JBoss安裝路徑,進行其它設(shè)置就OK。
由于我們調(diào)試的都是遠程程序,而我們編寫的EJB的實現(xiàn)是經(jīng)過服務(wù)器的所謂代理的,所以在Junit外面是無法單步跟蹤到我們編寫的EJB的實現(xiàn)的(這點和被Spring 攔截代理相似),所以我們必須在自己寫的Bean的實現(xiàn)中設(shè)置斷點才能調(diào)試我們的EJB。