top
Loading...
一步一步用JBuilder5開發EJB

一、 簡介

Enterprise Java Beans(EJB) 1.1規范正式定義了一個Java服務器端的組件模型,以及應用服務器的編程接口。開發人員建立的這類型組件稱為enterprise beans,包含了企業的商業邏輯。Enterprise beans運行在EJB服務器上,該服務器為beans提供如事務、安全性方面的服務。開發人員并不需要編程來實現這些低層的、復雜的服務,僅僅需要知道當他們開發的beans需要這些服務的時候,這些服務是可用的。這樣,他們就可以將精力集中在處理beans內部的商業邏輯上。

分布式多層應用系統一般來說由一個運行在本地機器上的客戶層、一個運行在應用服務器上包含商業邏輯的中間層、一個后臺的企業信息系統(典型的如數據庫)。而在這里我們關心的焦點是怎樣開發EJB,即中間層的東西。

本文提供一個步驟,通過簡單的例子介紹怎樣在JBuilder5的集成開發環境下開發EJB。這些步驟都很簡單,對于了解EJB體系結構和一般的編程規則的人很容易理解。目的是為了能夠讓大家掌握在JBuilder5下開發分布式的多層應用系統的簡單、快速的方法,達到舉一反三的效果。

二、環境配置

1、 介紹

Borland JBuilder 是 基于Java 2 企業平臺、創建跨平臺環境、純Java 的端對端解決方案的最佳 Java 開發工具。 JBuilder5是開發EJB和基于Java的應用程序的強有力的快速開發工具(RAD)。它提供了一個集成開發環境和大量的向導引導我們一步一步開發我們的應用。

本文將引導讀者利用JBuilder5提供的向導和特性一步一步的開發和配置兩類EJB(session beans 和entity beans)。

2、安裝與配置

■ 安裝:

本文所有的例子都是在Windows NT平臺上完成的。因為Java本身具有的跨平臺特性,所以在其它平臺上基本的步驟都是一樣的。為了完成我們這篇文章的所有例子,所需軟件有:JDK1.3.1、Borland JBuilder5、Inprise Application Server 4.51、InterBase 6.01以及InterClient2.01。你可以使用另外的數據庫系統來代替InterBase和InterClient,只要你的數據庫系統擁有JDBC驅動程序。所有前面列出的軟件,在SUN公司和Borland/Inprise公司的網站上都有評估版可以下載,以滿足學習的需要。如下表:


安裝JBuilder5:首先安裝JBuilder5 Foundation,然后安裝JBuilder 5 Enterprise,你還可以將JBuilder5附帶的文檔和例子安裝進去(本文中,JBuilder5安裝在D:JBuilder5)。安裝完成之后,啟動JBuilder5,選擇"File"-"New",將彈出一個對話框,讓你選擇要建立什么樣的應用。點擊"Enterprise"頁,你將會發現,里面所有項目都是灰色、不可選擇的。不要著急,等我們安裝配置好Inprise Application Server之后,就會有了。

安裝JDK1.3.1:按照提示進行安裝(本文中JDK安裝在D:jdk1.3.1)。

安裝Inprise Application Server 4.51:在安裝IAS45時配置osagent端口為14000(缺省)本文中IAS4.5安裝在D:IAS45目錄下。

安裝InterBase和InterClient:因為在后面的Entity Beans例子中,我們將要訪問數據庫,在這里,我們安裝InterBase6.01和針對InterBase6.01的第三類的JDBC驅動程序InterClient2.01。按照安裝提示進行下去就可以了(本文中,InterBase安裝在D:InterBase CorpInterBase目錄下;InterClient安裝在D:InterBase CorpInterClient目錄下)。

■ 配置:

我們需要配置JBuilder5,讓它知道IAS45的存在。啟動JBuilder5,在菜單欄選擇"Tools"-"Enterprise Setup"。在"Enterprise Setup"窗口中,如圖1。在"CORBA"頁中的"select configuration"中選擇"VisiBroker",然后點擊旁邊的"Edit"按鈕,在"Edit Configuration"窗口中配置"Path of ORB tools"為Inprise Application Server安裝目錄下的"bin"子目錄,在本文中是"D:/IAS45/bin"(注意:這里的路徑符號為"/"),如圖2。

圖1

圖2

在"Application Server"頁中,如圖3,配置IAS安裝目錄為"D:/IAS45"(注意:這里的路徑符號為"/")。

圖3

這兩項配置完成之后,點擊"OK",然后重新啟動JBuilder5。

另外,我們需要建立一個由Inprise Application Server的JAR文件組成的庫,這樣,JBuilder5才能夠依靠庫中的類來編譯項目。

在JBuilder5中,選擇菜單中的"Project"-"Default Project Properties…",在打開的窗口中選擇"Paths"頁面中的"Required Librares"頁,如圖4,然后點擊"Add…"按鈕。在"Select One or More Libraries"窗口中,點擊"New…"按鈕。在"New Library Wizard"窗口中,點擊"Add"按鈕。將D:/IAS45lib目錄下的所有的JAR文件添加進去。如圖5。完成之后如圖6。設置New Library Name為:ias。

圖4

圖5

圖6

三、Session Beans

1. 開發Session Beans

準備工作完成之后,就可以開始我們的JBuilder5--EJB之旅了。首先,我們將建立一個JBuilder的項目(Project)。在這個項目里,我們將寫一個無狀態的(Stateless)的Session Beans,命名為TellerBean。在這個Session Bean中,有一個方法用來返回一個假定的號碼,這個號碼代表一個銀行出納員的編號。完成之后,我們還要建立一個測試用的"客戶"來訪問這個Bean。

打開你的JBuilder5,如果JBuilder5有默認打開的項目,先關閉它。然后,建立一個新的項目。

步驟:

1、 選擇"File"-"New Project…"

2、 設置Project Name、Project directory name為"quickstart";設置Root path為D:/project。(注意路徑),如圖7。

3、 點擊"Finish"。

圖7

然后,我們將建立一個EJB Group,這樣,我們無論什么時候編譯項目時,JBuilder5都將自動的建立一個包含我們的EJBs的、可配置的jar文件。

步驟:

1、 選擇"File"-"New…"-"Enterprise"標簽-"Empty EJB Group"-"OK"。

2、 在"Empty EJB Group Wizard"窗口中設置Name為"quickstart"。

3、 點擊"OK"。如圖8。

圖8

下一步,我們就開始建立Bean。JBuilder5提供了建立EJB的向導,這里,我們當然是用向導了。

步驟:

1、 選擇"File"-"New…"-"Enterprise"標簽-"Enterprise JavaBean"。

2、 點擊"OK"之后,向導提示我們選擇EJB Group,當然是用我們剛才建立的EJB Group。

3、 點擊"Next",設置Class name為TellerBean。其它保持不變。如圖9。

圖9

4、 點擊"Next",設置"Bean home name"為TellerHome。其它保持不變,如圖10。

圖10

5、 點擊"Finish"。

這樣,你在JBuilder5的左邊窗口中將可以看到三個類,其中:TellerHome和Teller是為EJB容器實現的接口;TellerBean是我們自己的Bean。我們將增加一個方法到這個Bean中。

選擇"TellerBean"類,然后在這個類中增加下面的方法:

public int getTellerNo(){
return 1;
}

保存所有的文件。然后編譯這個項目。(單擊工具欄的 圖標)。

現在,我們需要在遠程接口中增加我們的放法簽名,這樣EJB容器才能夠將我們的方法暴露給遠程調用的客戶。

步驟

1、 雙擊項目窗格中的:TellerBean.java。在內容窗格中可以看到TellerBean.java的源文件。

2、 在TellerBean標簽的下面,點擊Bean標簽,再選擇Methods標簽。

3、 選擇int getTellerNo()。如圖11。


圖11

現在,我們已經完成了EJB的代碼編寫工作。下面將要做的工作是關于配置描述符。

配置描述符是EJB重要的組成部分之一。它將編寫EJB代碼與EJB的配置設置分割開。這樣,在不影響源代碼的情況下,可以對應用程序進行分割和調整。

實際上,在我們的項目中已經有了配置描述符。在我們利用EJB Group向導的時候,就生成了。當我們使用向導時,它生成了TellerBean的Java代碼,增加了一個相應的配置描述符入口,現在我們只需要調整一下就可以了。

步驟:

1、 在項目窗格雙擊quickstart.ejbgrp,在下面的結構窗格,展開TellerBean,單擊Container Transactions。如圖12。


圖12

2、在右邊的內容窗格中,單擊下部的"Add"按鈕,為我們的方法增加一個"Required"的事務屬性。如圖13。這個"Required"的事務屬性將對這個Bean的所有方法和接口起作用。

圖13

3、為了驗證配置描述符設置正確,我們可以點擊內容窗格上部的小工具條上的圖標來驗證配置描述符的設置。如圖14,我們看到,驗證得到的信息是:0 errors,0 warnings。

圖14

4、保存所有的文件,然后編譯工程。(單擊工具欄的 圖標)。

現在,所有服務器端的工作我們已經完成。下面我們將建立一個Java客戶來測試我們所寫的EJB。

步驟:

1、 選擇"File"-"New…"-"Enterprise"標簽-"EJB Test Client"。

2、 點擊"OK"之后,在EJB Test Client Wizard窗口中,設置class為Client

僅僅選擇Generate main function。然后點擊"OK",如圖15。

圖15

3、在建立的類的構造方法中,你可以看到一個"try…catch"語句塊。在此語句塊中,包含Context的實例、一個TellerHome的JNDI lookup、一個參考TellerHome類型的返回對象narrow。

4、在這些代碼行之后,仍然在"try…catch"語句塊中,增加下面的代碼:

Teller teller=tellerHome.create();
int t=teller.getTellerNo();
System.out.println("Using Teller No is:"+t);

這幾行代碼建立Bean實例,調用遠程方法,然后輸出結果。

最后,為了能夠調用遠程接口,客戶程序需要建立RMI/IIOP stubs。

步驟:

1、 在項目窗格中,用右鍵點擊"TellerHome.java",選擇"Properties"。

2、 在彈出窗口中,選擇"Build"標簽,再選擇"VisiBroker",然后僅僅選擇"Generate IIOP"。如圖16。

圖16

3、保存所有的文件,然后編譯工程。(單擊工具欄的圖標)。

現在,我們已經完成了這個無狀態的Session Bean和測試用客戶的開發工作。

2. 配置Session Beans

我們將執行這個Bean在JBuilder5內置的EJB容器里面。

步驟:

1、 首先,運行VisiBroker Smart Agent。("Tools"-"VisiBroker Smart Agent")

2、 設置一個配置來運行EJB容器。"Run"-"Configuration…",編輯"default"配置,在EJB標簽中,如圖16-1配置。


圖16-1

3、 點擊工具條上的 ,運行容器。等待容器初始化。

4、 用鼠標右鍵點擊項目窗口的Client.java,選擇"run"。

在JBuilder5窗口底部的消息窗格中,你將看到如下的消息:

"D:JBuilder5jdk1.3injavaw -class……………
Using Teller No:1"

這時,你的測試客戶程序已經成功的調用了遠程接口。

四、Entity Beans

1. 建立數據庫

我們已經成功的開發了一個Session Bean。不要覺得它簡單,至少它是在JBuilder5中開發EJB的基本步驟。在這一章里,我們將要開發EJB的另外一種形態--Entity Beans。

一個Entity Bean是一個穩定的數據的對象表現,在我們的例子里,穩定的數據是一個關系數據庫

首先,我們將在InterBase上建立一個數據庫。

步驟:

1、 啟動InterBase Server。

2、 啟動InterClient中的InterServer。

3、 運行InterBase中的IBConsole。

4、 在IBConsole中,選擇左邊窗口的InterBase Servers -> Local Server雙擊。用戶名和口令用"SYSDBA"、"masterkey"。

5、 右擊Databases,選擇Create database...

6、 在Create database窗口中的Alias中輸入accounts,在File(s)中Filename(s)中輸入d:projectquickstartaccounts.gdb,然后點OK完成。

7、 選擇IBConsole的菜單Tools -> Interactive SQL...,在Interactive SQL-accounts窗口上部的文本框中,輸入下面的建立數據庫表的SQL語句:

CREATE TABLE account
( name VARCHAR(20) NOT NULL,
balance INTEGER NOT NULL,
PRIMARY KEY (name)
)

8、 選擇Query -> Excute。

注:SQL語句最好自己寫上去,copy上去的,可能在excute的時候會出錯,因為有非法的字符。你只要把空格去掉就可以了。CREATE TABLE account ( name VARCHAR(20) NOT NULL,balance INTEGER NOT NULL,PRIMARY KEY (name))

圖17

7、 執行建立的SQL語句。如圖18。

圖18

8、 退出,回答"Yes"提交工作。

2. 開發Entity Beans

我們將利用JBuilder5所提供的向導來生成我們將要開發的Entity bean的代碼,并且將它加入到前面的項目中。

首先,我們需要為剛才建立的數據庫,指定JDBC驅動程序。退出JBuilder5。從InterClient的安裝目錄下(這里是:D:InterBase CorpInterClient)復制interclient.jar文件到JBuilder5安裝目錄下的lib子目錄里面。用任意的文本編輯器打開JBuilder5安裝目錄下的bin子目錄里面的dbpilot.config文件。在此文件的尾部加上:

# Add other database drivers here
addpath http://www.zhujiangroad.com/lib/interclient.jar

保存此文件,重新打開JBuilder5。

檢查以下我們前面所做的工作:

1、 在JBuilder5中,選擇"Tools"-"DataBase pilot"。

2、 在DataBase pilot窗口中,選擇"File"-"New…"。

3、 選擇"Driver"為:interbase.interclient.Driver;"URL"通過旁邊的瀏覽按鈕定位在我們剛才建立數據庫的地方(D:projectquickstartaccounts.gdb)。如圖19。

圖19

4、"OK"之后,在JDBC Explorer中展開我們剛剛建立數據庫URL。用戶名:SYSDBA;密碼:masterkey。登錄之后,展開樹,就可以看到我們所建立的表和表中的列了。如圖20。


圖20

現在,我們就可以開始建立我們的Entity bean了。

步驟:

1、 在JBuilder5中,選擇"File"-"New…"-"Enterprise"標簽--"EJB Entity Bean Modeler",點擊"OK"按鈕之后,在向導的步驟1里,將此Bean加入已經建立的EJB Group(quickstart.ejbgrp)。

2、 選取Schemas and table types中的Schemas。利用前面建立的數據庫URL(Driver;interbase.interclient.Driver;URL:jdbc:interbase://localhost/D:projectquickstartACCOUNTS.GDB),用戶名:SYSDBA;口令:masterkey;登錄到數據庫中,點擊"Next"。如圖21。

圖21

3、 根據提示,選擇ACCOUNT表,"Next",選擇表中所有的列,"Next"到"Finish"。

4、 保存所有的文件,然后編譯工程。

這樣,我們實際上就已經完成了這個Entity Bean的開發工作。JBuilder5的向導已經在配置描述符中增加了一個入口和一個數據源的入口。

一個Entity Bean只不過是生成的代碼。下面我們將建立一個客戶程序來訪問這個Entity Bean。這個客戶程序將建立四個Entity Bean的實例,在數據庫的Account表中建立四行數據。

使用JBuilder5的EJB Test Client Wizard,在這一次我們建立的測試客戶程序,將依靠Account EJB,根據提示,使用缺省的類名:AccountTestClient1就可以了。利用向導,生成main函數,然后在生成的main函數的try…catch語句塊中,"accountHome = (AccountHome) PortableRemoteObject.narrow(ref, AccountHome.class);"的后面,加入下面的代碼:

Account ac1=accountHome.create("John",150);
Account ac2=accountHome.create("Paul",150);
Account ac3=accountHome.create("George",150);
Account ac4=accountHome.create("Ringo",150);

用鼠標右鍵點擊項目窗格的AccountHome.java文件,選擇"Properties…"。在彈出窗口中的"Build"標簽中的"VisiBroker"標簽中,選擇"Generate IIOP",點擊"OK"。

保存所有的文件,然后編譯工程。

3. 配置

我們仍然在JBuilder5中運行EJB容器。客戶程序將依靠運行在EJB容器中的Entity Bean在數據庫的Account表中建立四行數據。

首先,建立一個庫,這樣當我們運行EJB容器的時候,InterClient JDBC驅動程序能夠被添加到classpath。

步驟:

1、 在JBuilder5中選擇"Project"-"Project Properties…"。

2、 在"Required Libraries"標簽中,點擊"Add…"。

3、 在彈出的窗口中,點擊"New…"。

4、 將JBuilder5安裝目錄下的lib子目錄里的interclient.jar文件添加到"Library Paths"中。

5、 "Name"值設為:InterClient。

完成之后,就可以運行你建立的應用了。

確認VisiBroker Smart Agent、InterBase Server和InterClient的InterServer仍然在運行。

點擊工具條上的 ,運行容器。等待容器初始化。

用鼠標右鍵點擊項目窗口的AccountTestClient1.java,選擇"run"。

完成之后,運行JDBC Explorer。

展開"interbase://localhost/D:projectquickstartACCOUNTS.GDB",點擊"Tables"下的ACCOUNT表。在右邊窗格選擇Data標簽。你將看到程序所創建的新的四行數據。
如圖22。

圖22


作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗