上一篇文章里詳細介紹了EJB 3.0的開發環境的搭建,本文以上文中所搭建好的開發環境,給大家簡單的介紹下在NetBeans下去開發企業EJB的流程,以一個簡單的示例程序展開介紹.
一、建立EJB模塊
這一步很簡單,選擇“文件”菜單里的“新建項目”選項,在項目類別里選擇“企業”,在右邊項目選項里選擇“EJB模塊”,詳細如下圖示:
二、建立包和會話Bean類
在上面建立的EJB模塊里新建立一個包,如:com.beniao.dayone,然后建立一個無狀態的會話Bean及一個遠程接口。詳細如下:
例如建立一個Hello的無狀態會話Bean,和一個遠程接口,如下圖示:
三、添加商業方法
OK,上面Bean已經建立,現在就是給EJB Bean添加商業方法的時候了,這里可以使用NetBeans為我們提供的強大支持,來添加方法以及接口里的定義,在Bean里點"右鍵",在彈出的菜單里選擇"EJB方法"----添加Business方法便OK.如下如示:
在彈出的窗體里輸入方法名,如果方法有參數的話,則在下面提供的可視話操作中直接添加參數就OK了,如下圖:
OK,到此,NetBeans就會幫我們創建好遠程接口和無狀態會話Bean,并且建立好接口的方法的定義,以及Bean里的方法實現模型,代碼如下:

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

四、實現遠程接口的Bean方法
從上面代碼段可以清晰的看出,HelloBean這個無狀態會話Bean實現了遠程接口HelloRemote(關于無狀態會話Bean及遠程接口,這些知識點將在隨后的文章里介紹)。那好,下面我們就來寫這個Bean的具體實現。代碼如下:

2

3

4

5

6

7

8

9

10

很簡單,就是在傳如的參數前加一個“Hello”,然后將其輸出到控制臺。到這里,我們的EJB模塊就算是開發完成,下面就是成功生成此模塊,并將其部署到應用服務器上。
五、部署EJB到應用服務期
在部署EJB到應用服務器之前必須啟動服務器,啟動方法在上篇文章里有所介紹,這里就不在說明。當服務器啟動成功后,點擊EJB項目處右鍵,在彈出的菜單里選擇“取消部署后再次部署”,成功部署就OK了。
現在我們登錄應用服務器,看上面的工作是不是真的成功完成。在服務器控制臺上點擊“Application Server”選項,然后在右邊選擇“JNDI Browsing”,在彈出的窗體里看是不是已經存在了上面所部署的EJB模塊的JNDI,詳細如下圖:
六、建立應用程序調用EJB模塊
建議一個JAVA應用程序(當然其他的類型程序也是可以的),這里需要注意下,EJB模塊開發完成后總是會打包為jar的,也就是說在我們的應用里需要去調用EJB模塊的話只需要拿到這個jar包就OK,關于本文后面將介紹的是通過添加項目直接就把EJB模塊添加到了自己的應用里,這是因為EJB是在本機開發的,所以可以直接的添加,大家可以看看后面的圖示,實際上在本機直接添加EJB模塊,其實也只是把EJB模塊所部署生成的JAR包添加到了應用中。
1. 建立JAVA應用程序
這一步很簡單,這里我就不多說了。
2. 添加EJB所支持的類庫和EJB模塊
在上一篇文章里對開發EJB所需要的包我們建立了一個為EJB3.0的類庫,這里我們只需要將此類庫直接添加到應用中便OK。操作如下:
添加EJB模塊:選擇“庫”右鍵,在彈出的菜單里選擇“添加項目”,選擇之前開發的EJB模塊項目就OK。
添加EJB類庫:選擇“庫”右鍵,在彈出的菜單里選擇“添加庫”,找到之前建立的EJB3.0的類庫添加就OK。
添加了EJB模塊和類庫后的應用目錄結構如下:
3. 編寫測試程序
測試程序很簡單,大家可以直接查看下面的代碼段,這里面的具體原理不是一句兩句話就能夠介紹清楚,所以這里就不作詳細介紹,有興趣的朋友可以聯系我,相互交流和討論這些原理問題。

2

3

4

5

6

7

8

9

10

11

12

13

程序運行結果如下:
七、開發總結
本文里出現了很多大家都不知道具體是什么意思的東西,不過對于學過EJB3.0的朋友來說,這已不是什么高深的東西了,但是對于新手來說還是很迷茫。下面就對這些東西作個小小的總結,詳細我將在下篇文章里介紹。
1. @Remote--遠程接口
2. @Stateless--無狀態會話Bean
3. JNDI
注:原創文章版權歸作者,歡迎轉載,未經作者同意必須注明文章出處或在頁面適當位置給出原文連接,謝謝!
文章出處:http://beniao.blogjava.net 作者:Beniao 時間:2008.07.31
我查了一下 使用ctx.lookup(HelloRemote.class.getName());正常了。。。能解釋一下為什么么?謝謝!
應該是你的EJB工程沒有部署成功所致.
JNDI不能使用.
而你使用標注后EJB容器可以通過@Remote去查找然后注入.
這也只是我的猜測,具體原因可以查找相關資料了解下.EJB3.0我也沒深入了解過.
謝謝支持,最近比較忙,下篇我將會盡快寫出來. 大家一起學習.
System.out.println("Hello " + str);
}
//同學,你的這個方法寫錯了,這樣在客戶端是怎么都打印不出來的,必須這樣:
public String sayHello(String str) {
return "Hello " + str;
}
就照我問中那樣寫是可以輸出結果的,不然我那個運行結果的圖是什么抓的呢?
這里有非常詳細的、完整的EJB3.0開發教程,包括詳細的開發環境搭建步驟,所有示例均通過實際檢驗。
和TerryLee不一樣的是所用的開發環境稍有不同:
JBoss 5
MyEclipse7
供喜歡使用Eclipse的同學們參考
deployed with moduleid = EJBModule1
**RemoteBusinessJndiName: myejb/hello; remoteBusIntf: com.ccs.manager.UserManagerRemote
LDR5010:已成功加載 [EJBModule1] 的所有 EJB!
我的也是:jndi:myejb/hello
但就是調用不到
Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
請幫忙看一下。