使用NetBeans IDE 5.5創建應用程序客戶端

本教程向您介紹如何編寫和部署用於訪問 Enterprise JavaBean EJB的簡單應用程序以及如何訪問建構在 Java EE 5 平臺EJB 3.0 J2EE 1.4 平臺EJB 2.x上的 EJB

使用 NetBeans IDE 5.5 您可以創建作爲獨立項目類型的應用程序客戶端。您還可以創建作爲企業應用程序的一部分或獨立應用程序的應用程序客戶端項目。本文使用 NetBeans IDE 5.5 Release

預計持續時間:30分鐘

教程練習

l      創建作爲企業應用程序的一部分的應用程序客戶端

l      使用獨立應用程序客戶端訪問 EJB

m        訪問一個遠程接口

m        訪問個或多個遠程接口

l      使用獨立應用程序客戶端訪問EJB(EJB 2.1)

入門

前提條件

本教程假定您已經具有了以下技術的一些基本知識或編程經驗:

l      Java 編程

l      NetBeans IDE

教程所需的軟件

本教程需要在計算機上安裝以下軟件:

l      NetBeans IDE 5.5 下載)

l      Java Standard Development Kit (JDK) version 5.0 version 6.0 下載)

l      Sun Java System Application Server, Platform Edition 9.0下載)

本教程需要使用IDE註冊Sun Java System Application Server的本地實例。

創建作爲企業應用程序一部分的應用程序客戶端

首先,我們創建一個名爲EnterpriseAppEE5Java EE 5企業應用程序。在我們創建企業應用程序的同時,還將創建應用程序客戶端。

創建企業應用程序

  1. 從主菜單中選擇File - New Project

  2. Enterprise category中選擇Enterprise Application然後單擊Next

  3. 鍵入EnterpriseAppEE5作爲項目並設置Sun Java System Application Server的服務器。

  4. Java EE Version設置爲Java EE 5然後選擇Create EJB ModuleCreate Application Client Module可任選一個。您可以取消選中Create Web Application Module因爲本教程不需要網絡模板。

  5. 單擊Finish

在企業應用程序中創建會話Bean

現在我們在EJB模塊中創建SessionBean EJB bean。要創建該SessionBean需執行以下操作

  1. 右鍵單擊Project窗口中的EnterpriseAppEE5-ejb EJB模板然後選擇New > File/Folder打開New File嚮導。

  2. Enterprise category中選擇Session Bean然後單擊Next

  3. 鍵入SessionBean作爲EJB名稱,鍵入ejb作爲包。

  4. 選擇Stateless作爲Session Type然後選擇Remote作爲創建接口的類型。您可以取消選中本地接口因爲本教程只使用遠程接口。)單擊Finish

當單擊Finish時,beanSessionBean.javaSource Editor中打開。

  1. Source Editor中單擊右鍵選擇EJB Methods > Add Business Method生成bean的一個業務方法。

  2. Add Business Method對話框中鍵入getResult作爲名稱Return Type設置爲String然後選擇遠程和本地接口框。單擊OK

  3. SessionBean.java中,getResult方法修改爲:

public String getResult() {

    return "This is EJB 3.0 Bean";

}

  1. 保存更改。

從應用程序客戶端中調用會話Bean

現在我們將代碼添加到用於調用EJB bean的應用程序客戶端中。要修改應用程序客戶端,需執行以下操作:

  1. Projects窗口中展開EnterpriseAppEE5-app-client > Source Packages > enterpriseappee5然後雙擊Main.java打開Source Editor中的文件。

  2. Source Editor中右鍵單擊,然後選擇Enterprise Resources >Call Enterprise Bean

  3. Call Enterprise Bean對話框中選擇SessionBean作爲要調用的bean並選擇Remote 作爲Referenced Interface。單擊OK
    當您單擊OK時,以下注釋被添加到Main.java中以調用會話bean

@EJB
private static SessionRemote sessionBean;

  1. 利用以下代碼修改main方法生成一些簡單輸出。我們將使用System.err.println,以便能輕鬆的在Output窗口中查看消息。

System.err.println("result=" + sessionBean.getResult());

  1. 保存更改。

配置企業應用程序

現在幾乎所有事情都已經完成了,我們需要做的最後一件事就是設置作爲模塊的應用程序客戶端,它應該在您運行企業應用程序時運行。要配置企業應用程序,需執行以下操作:

  1. 右鍵單擊Projects窗口中的EnterpriseAppEE5企業應用程序項目節點,並選擇Properties。

  2. Project Properties對話框中選擇Run

  3. 選擇EnterpriseAppEE5-app-client作爲Client Module URI默認情況下應該選擇它。單擊OK

運行企業應用程序

現在我們可以運行企業應用程序測試應用程序客戶端。

1.       右鍵單擊Projects窗口中的EnterpriseAppEE5然後選擇Run

當您運行項目時,IDE構建並部署應用程序。以下消息出現在Output窗口中

result = This is EJB 3.0 Bean

使用獨立應用程序客戶端訪問EJB

在本練習中我們創建一個EJB模塊項目然後創建與EJB連接的應用程序客戶端項目。

我們不能使用EJB註釋將EJB鏈接到應用程序客戶端中,因此我們將使用上下文查找。如果您擁有個以上的遠程接口, bean查找代碼是不同的,那麼我們將本練習分爲兩部分:

l      訪問一個遠程接口

l      訪問個或多個遠程接口

訪問一個遠程接口

在本練習中,我們創建一個具有遠程接口的EJB模塊,然後創建訪問EJB的應用程序客戶端。

創建EJB模塊

在本練習中,我們創建名爲EJBModule30EJB模塊。

  1. 從主菜單中選擇File > New Project

  2. Enterprise category中選擇EJB Module然後單擊Next

  3. 鍵入EJBModule30作爲項目名稱,並設置Sun Java System Application Server的服務器。

  4. Java EE Version設置到Java EE 5中。

  5. 單擊Finish

EJB模塊中創建會話Bean

在本練習中,我們將在EJB模塊中創建Bean30 EJB。要創建Bean30,需執行以下操作:

  1. 右鍵單擊Project窗口中的EJB模塊,然後選擇New > File/Folder打開New File嚮導。

  2. Enterprise category中選擇Session Bean然後單擊Next

  3. 鍵入Bean30作爲EJB名稱鍵入ejb作爲包保持Session TypeStateless不變然後勾選Remote創建遠程接口。單擊Finish

當單擊Finish時,bean類Bean30Bean.java在Source Editor中打開。

  1. Source Editor中右鍵單擊源代碼從彈出窗口中選擇EJB Methods > Add Business Method生成bean的一個業務方法。在Add Business Method對話框中鍵入getResult作爲方法名稱Return Type設置爲String確保勾選了Remote接口框,然後單擊OK

  2. Bean30Bean.java中,修改getResult方法的返回內容,以便其他組件可訪問該方法:

public String getResult() {

    return "This is EJB 3.0 Bean";

}

  1. 修改@Stateless會話bean註釋以更換用於映射bean的默認名稱。我們想要更改從Bean30BeanBean30的映射名稱。然後我們將使用Bean30查看應用程序客戶端的bean。現在註釋應該看起來如下所示(更改黑體部分):

@Stateless(mappedName="Bean30")

public class Bean30Bean implements Bean30Remote {

  1. 保存更改。

創建應用程序客戶端項目

現在我們創建將訪問EJB的應用程序客戶端ApplicationClientForTest

  1. 從主菜單中選擇File > New Project

  2. Enterprise category中選擇Enterprise Application Client,後單擊Next

  3. 鍵入ApplicationClientForTest作爲項目名稱,並設置Sun Java System Application Server的服務器。

  4. Java EE Version設置到Java EE 5中。

  5. 單擊Finish

從應用程序客戶端中調用EJB

現在我們將EJBModule30項目添加到作爲庫的ApplicationClientForTest並添加訪問Bean30的代碼。

  1. 右鍵單擊Projects窗口中的ApplicationClientForTest項目節點,並選擇Properties

  2. Project Properties對話框中,選擇Libraries類,然後單擊Add Project

  3. 找到並選擇EJBModule30項目,單擊Add Project JAR Files,然後單擊OK

單擊OK即可將EJBModule30JAR文件添加到ApplicationClientForTest庫中。通過在Projects窗口中展開項目的Libraries節點您可以看到項目庫。

  1. 雙擊Projects窗口中的Main.java打開Source Editor中的文件。

  2. Source Editor將以下代碼添加到Main.javamain方法中。我們將再次使用System.err.println以便輕鬆看到Output窗口中的消息。

InitialContext ctx = new InitialContext();

Bean30Remote br = (Bean30Remote) ctx.lookup("Bean30");

System.err.println("EJB message is:" + br.getResult());

  1. 修改導入語句(Alt-Shift-F)。

  2. 修改代碼中的錯誤。您可以使用IDE中的建議功能幫助您。

注:在這種情況下,錯誤是由遺漏的throws子句引起的。爲了使用IDE的建議功能,在包含錯誤的代碼第一行中插入光標,在其下畫紅線強調。當“建議燈泡”圖標在左側出現時,單擊燈泡並選擇 “Add throws clause...” 將throws子句添加到方法中。IDE在將throws子句添加到方法中後,添加適當的import語句。

8.       保存更改。

現在萬事俱備可以將EJBModule30ApplicationClientForTest部署到服務器中了,請右鍵單擊Projects窗口中每個項目的項目節點並選擇Deploy Project。部署完兩個項目之後右鍵單擊Projects窗口中的ApplicationClientForTest並選擇Run Project運行應用程序客戶端。在Output窗口中我們應該看到如下所示消息
EJB message is: This is EJB 3.0 Bean

如果使用防火牆您可能需要禁用防火牆以允許應用程序客戶端訪問EJB

訪問個或多個遠程接口

在本練習中,我們在EJBModule30中創建第二個遠程接口。然後我們修改應用程序客戶端中的代碼,以便它可以訪問每個接口。我們在本練習中用來調用EJB的代碼與調用一個遠程接口時所用代碼略有不同。本練習幫助您學習如何處理從一個獨立應用客戶端訪問個或多個遠程接口時的情況。

Bean30 EJB創建第二個遠程接口

在本練習中我們爲Bean30 EJB創建名爲Bean30Remote2的第二個遠程接口。

要創建第二個接口需執行以下操作

  1. 右鍵單擊Projects窗口中的EJB模塊並選擇New > Java class

  2. 鍵入Bean30Remote2作爲類名稱,鍵入ejb作爲包,然後單擊Finish

當單擊Finish時,beanBean30Remote2.javaSource Editor中打開。

  1. @Remote註釋添加到類中聲明作爲遠程接口的類。

  2. 修改接口定義,並通過以下更改(粗體部分)添加getResult方法:

@Remote

public interface Bean30Remote2 {

    String getResult2();

                        }

5.       修改import語句。您將需要導入javax.ejb.Remote

  1. 保存更改。

修改Bean30 Bean實現接口

在本練習中,我們修改Bean30實現接口Bean30Remote2

  1. Bean30Bean.java實現Bean30Remote2.java中的getResult2方法。該方法應該看起來如下所示

public String getResult2() {

    return "This is EJB 3.0 Bean 2";

}

  1. 修改類定義以實現Bean30Remote2

該類現在應該看起來如下所示:

目錄結構如下所示:

修改ApplicationClientForTest

接下來,我們修改應用程序客戶端Main類中的查找代碼。

  1. 雙擊Projects窗口中的Main.java類的ApplicationClientForTest以打開Source Editor中的類。

  2. 修改main方法中的代碼以查找第二個接口。在這種情況下,當有個以上的遠程接口時,我們必須使用全稱查找每個接口。

InitialContext ctx = new InitialContext();

Bean30Remote br = (Bean30Remote) ctx.lookup("Bean30#ejb.Bean30Remote");

System.err.println("EJB 3.0 result:" + br.getResult());

Bean30Remote2 br2 = (Bean30Remote2) ctx.lookup("Bean30#ejb.Bean30Remote2");

System.err.println("EJB 3.0 result 2:" + br2.getResult2());

  1. 修改import語句,爲ejb.Bean30Remote2添加一個import語句。

  2. 保存更改。

現在重新部署EJBModule30,並運行應用程序客戶端。在Output窗口中您將看到以下輸出
EJB 3.0 result: This is EJB 3.0 Bean
EJB 3.0 result:
This is EJB 3.0 Bean 2

總結

在本練習中我們爲您介紹瞭如何使用應用程序客戶端訪問EJB 3.0 Enterprise JavaBeans以及如何從企業應用程序中的應用程序和獨立應用程序客戶端訪問EJB。此外,我們還示範了調用具有一個遠程接口bean和具有一個以上遠程接口bean的區別。

使用獨立應用程序客戶端訪問EJBEJB 2.1

如果您想使用EJB 2.X beans工作流程非常相似但不完全相同。在本練習中,我們將爲您介紹訪問EJB 2.x beans與訪問EJB 3.0 beans有何不同。

創建EJB模塊EJBModule14

首先,我們創建EJB模塊。

  1. 從主菜單中選擇File> New Project

  2. Enterprise category中選擇EJB Module然後單擊Next

  3. 鍵入EJBModule14作爲項目名稱,並設置Sun Java System Application Server的服務器。

  4. Java EE Version設置到J2EE 1.4中。

  5. 單擊Finish

EJBModule14中創建會話Bean

現在我們在EJB模塊中創建Bean14 EJB bean。要創建Bean14需執行以下操作

  1. 右鍵單擊Project窗口中的EJB模塊,然後選擇New > File/Folder打開New File嚮導。

  2. Enterprise category中選擇Session Bean然後單擊 Next

  3. 鍵入Bean14作爲類名稱鍵入ejb作爲包保持Session TypeStateless不變然後勾選Remote創建遠程接口。單擊Finish

當單擊Finish時,beanBean14Bean.javaSource Editor中打開。

  1. Source Editor中右鍵單擊源代碼從彈出菜單中選擇EJB Methods > Add Business Method打開Add Business Method對話框。

  2. Add Business Method對話框中鍵入getResult作爲業務方法名稱Return Type設置爲String並選擇Remote作爲接口。單擊OK

  3. 修改Bean14Bean.java中的getResult方法,以使返回方法訪問其他組件的bean

public String getResult() {

    return "This is EJB 1.4 Bean";

}

  1. 保存更改。

從應用程序客戶端中調用EJB

現在我們將EJBModule14項目添加到ApplicationClientForTest中作爲庫並添加訪問Bean14的代碼。

  1. 右鍵單擊Projects窗口中的應用程序客戶端項目,並選擇Properties

  2. Project Properties對話框中,選擇Libraries類,然後單擊Add Project

  3. 找到並選擇EJBModule14項目,單擊Add Project JAR Files,然後單擊OK

單擊OK即可EJBModule14JAR文件添加到ApplicationClientForTest庫中。通過在Projects窗口中展開項目的Libraries節點您可以看到項目庫。

  1. 雙擊Projects窗口中的Main.java打開Source Editor中的文件。

  2. Source Editor移除或註釋掉用於訪問EJBModule30的代碼並將以下代碼添加到Main.javamain方法中。

Object remote = ctx.lookup("ejb/Bean14Bean");

Bean14RemoteHome sbrh = (Bean14RemoteHome) PortableRemoteObject.narrow(remote, Bean14RemoteHome.class);

Bean14Remote sbr = sbrh.create();

System.err.println("EJB 1.4 result:" + sbr.getResult());

  1. 修改import語句。

  2. 修改源代碼中的錯誤。有錯誤是因爲方法需要throws子句處理NamingExceptionCreateException和查找時的RemoteException您可以使用IDE建議功能幫您處理錯誤。

現在萬事俱備可將EJBModule14ApplicationClientForTest部署到服務器上右鍵單擊項目並選擇Deploy ProjectRun Project),然後運行客戶端。當運行客戶端時我們應該在Output窗口中看到以下消息
EJB 1.4 result: This is EJB 1.4 Bean

下一步

如需有關使用NetBeans IDE 5.5開發Java EE應用程序的更多信息請參見以下資源

l      Java EE 5技術的介紹

l      Java EE 5平臺中的Java持久性

l      Java EE 5平臺與J2EE 1.4平臺的比較

l      Java EE應用程序的學習跟蹤

本文英文地址:

 

 

http://www.netbeans.org/kb/articles/appclient-entappclient.html




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章