站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2EE 专题JBoss EJB3(HelloWorld)備忘記

JBoss EJB3(HelloWorld)備忘記

摘要: EJB (Enterprise JavaBeans) 是 J2EE 的核心組件, 主要目的是提供開發員一個企業基建架構, 使其更容易開發實用的應用程式. 由於這個目的在 EJB2 時徹底失敗. 更加重開發員的工作. 故 EJB3 的主要目標是修正及改良 EJB2 的問題. 期望能夠真正簡化開發員的工作.

版权声明:任何获得 Matrix 授权的网站,转载时请务必保留以下作者信息和链接
作者:joeyta(作者的blog:http://blog.matrix.org.cn/page/joeyta)
原文:http://blog.matrix.org.cn/page/joeyta?entry=jboss_ejb3_helloworld_%E5%82%99%E5%BF%98%E8%A8%98
关键字:ejb3 jboss

原本來自:
EJB (Enterprise JavaBeans) 是 J2EE 的核心組件,
主要目的是提供開發員一個企業基建架構, 使其更容易開發實用的應用程式.
由於這個目的在 EJB2 時徹底失敗. 更加重開發員的工作.
故 EJB3 的主要目標是修正及改良 EJB2 的問題. 期望能夠真正簡化開發員的工作.

這裡並不打算介紹 EJB2 的不足及 EJB3 增強的特性. 亦不打算對 EJB 作簡介.
因為這些在網路上很容易找到相關的教學. 亦不是這編文章的目的.
這編備忘記主要是實作 Stateless Session Beans HelloWorld.

JBoss 是一個開源的 J2EE 服務器, JBoss 4 版本之後支持 EJB3 ,
當其他 J2EE 應用系統需要重啟動才能檢測發佈時, JBoss 2.0 版本後便提供自動發佈檢測,
這是第一個 J2EE 應用系統提供自動發佈及重發佈檢測. JBoss 3.0 後更增強此功能,
加入自動追蹤與發佈相依的服務. 這特性尤其適合要求高的電信系統.

只要簡單設定 JBoss URL, 就能夠從任何的遠端網絡啟動服務,
這可使得單獨的服務器更容易集中管理分佈式的 JBoss 系統.

JBoss 提供以下遠端呼叫協定:
Fast Socket
Fast Socket over HTTP (HTTP tunneling)
IIOP
JMS
SOAP

備忘記開始:
[1]
安裝 jdk 5
[2] 安裝 JBoss EJB3
[3] 第一次啟動 JBoss
[4] 安裝 Eclipse WTP
[5] 安裝 JBoss IDE
[6] 使用 Eclipse 建立第一個 EJB3 Project [ 即 HelloWorld ]
[7] 建立 HelloWorld Stateless Session Bean 及 Local, Remote interfaces
[8] 建立客戶端測試程式
[9] 使用 ANT 建立 EJB-JAR 並執行 Client 程式

這..這.. 簡稱它為 JBoss EJB3 HelloWorld 9 步曲.

[1] 安裝 jdk 5:
下載 jdk-1_5_0_07-nb-5_0-win-ml.exe
http://java.sun.com/j2se/1.5.0/download-netbeans.html
安裝至 D:\jdk1.5.0_07
新增環境變數 JAVA_HOME=D:\jdk1.5.0_07
D:\jdk1.5.0_07\bin 加入至 PATH 中
D:\jdk1.5.0_07\lib\dt.jar 及 D:\jdk1.5.0_07\lib\tools.jar 加入至 CLASSPATH 中
執行 D:\>java -version
輸出 java version "1.5.0_07" 表示安裝成功.

[2] 安裝 JBoss EJB3:
這裡為了簡化備忘過程, 故使用網上直接執行安裝,
[ 亦可選擇下載 JBoss AS 包 及 EJB3 包安裝 ]
http://jboss.sourceforge.net/jnlp/jboss-4.0.4.GA-installer.jnlp
http://labs.jboss.com/portal/jbossas/download
安裝至 D:\jboss
安裝時必需選擇 ejb3-clustered [ 這很重要 ], 如下圖所示


安裝完後, 新增環境變數 JBOSS_HOME=D:\jboss
D:\jboss\bin 加入至 PATH 中

JBOSS 目錄結構如下所示:
D:\jboss
|-- bin
|-- client
’-- docs
+|-- dtd
|-- lib
`-- server
+|-- all
+|-- mininal
`-- default
+|-- conf
+|-- data
+|-- deploy
|-- lib
|-- log
+|-- tmp
+|-- work

bin : JBoss 開關 Scripts.
client : 與JBoss通訊使用的客戶端 libraries ( JARs )
docs : 設定文檔樣本. ( 如資訊庫設定文檔樣本等 )
docs/dtd : JBoss 不同XML 的 Document Type Definitions (DTDs) 檔.
lib : JBoss 啟動時, 會讀取放在這裡被不同配置共享的 libraries.
server : 存放 JBoss 不同配置檔案.
server/default : JBoss 預設的配置檔案.
server/default/conf : JBoss 配置檔案.
server/default/data : JBoss 資料庫檔案.
server/default/deploy : JBoss 自動發佈檢測目錄. ( EBJ-JARs, WARs 及 EARs 放下去, JBoss 會自動檢測 )
server/default/lib : JBoss 啟動此配置目錄時, 會讀取這裡的 libraries.
server/default/log : 存放 JBoss 記錄(日誌)檔案.
server/default/tmp : 存放 JBoss 暫存檔案.
server/default/work : 存放 JBoss 編譯後的java byte code.

[3] 第一次啟動 JBoss:
run.bat -c config-name
[ 這裡使用 ejb3-clustered 安裝, 只能選其中一種, 預設是 default ]
[ config-name 為 mininal , 啟動最小配置模式 ]
[ config-name 為 default , 啟動預設配置模式, 不加任何參數亦是此預設模式 ]
[ config-name 為 all , 啟動全部配置模式 ]

使用預設配置模式, 執行
D:\jboss\bin>run.bat
網頁輸入 http://localhost:8080/ ,出現如下畫面即安裝成功:

如果分開安裝 JBoss AS 及 EJB3 就可以打開下面連結. 網上安裝則沒有此功能.
點擊上圖的 JBoss Web Console 進入JBoss Web控制介面. 如下圖所示:


[4] 安裝 Eclipse WTP:

下載 wtp-all-in-one-sdk-R-1.5.0-200606281455-win32.zip
http://www.eclipse.org/webtools/
http://www.eclipse.org/downloads/download.php?file=/webtools/downloads/drops/R-1.5.0-200606281455/wtp-all-in-one-sdk-R-1.5.0-200606281455-win32.zip
解壓至 D:\eclipse_wtp

[5] 安裝 JBoss IDE:
Eclipse:Help -> Software Updates -> Find and Install -> Search for new features to install
按 New Remote Site
Name: JBOSS IDE
URL: http://download.jboss.org/jbosside/updates/stable
選擇最新的版本然後安裝.

[6] 使用 Eclipse 建立第一個 EJB3 Project [ 即 HelloWorld ]:
Eclipse: File -> New -> Other -> EJB 3.0 -> EJB 3.0 Project
Project Name: HelloWorldEJB3 -> Next
選擇 Create a JBoss configuration
打開後右鍵點選 JBoss 4.0.x -> new
Name : jboss_configuration
JBoss 4.0.x Home Directory : D:\jboss
Server Configuration:default
這裡 JDK 面版裡的 Runtime JRE 要設定 jdk 5 的.
然後按 Apply 及 Close, [ 這裡如果按 Debug 就會在 Eclipse 裡啟動 JBoss ]
設定如下圖所示:

然後按 Finish. HelloWorldEJB3 project 就會成功建立.

[7] 建立 HelloWorld Stateless Session Bean 及 Local, Remote interfaces:
/*----------------------- HelloWorld.java ---------------------*/
package ejb3.joeyta.sessions;
public interface HelloWorld {
public String echo(String msg);
}
/*----------------------- HelloWorld.java ---------------------*/

/*----------------------- HelloWorldLocal.java ----------------*/
package ejb3.joeyta.sessions;
import javax.ejb.Local;
@Local
public interface HelloWorldLocal extends HelloWorld {
}
/*----------------------- HelloWorldLocal.java ----------------*/

/*----------------------- HelloWorldRemote.java ---------------*/
package ejb3.joeyta.sessions;
import javax.ejb.Remote;
@Remote
public interface HelloWorldRemote extends HelloWorld {
}
/*----------------------- HelloWorldRemote.java ---------------*/

/*----------------------- HelloWorldBean.java -----------------*/
package ejb3.joeyta.sessions;
import javax.ejb.Stateless;
@Stateless
public class HelloWorldBean implements HelloWorldRemote, HelloWorldLocal {
public String echo(String msg) {
System.out.println("Joeyta try Hello World.");
return msg;
}
}
/*----------------------- HelloWorldBean.java -----------------*/

[8] 建立客戶端測試程式:
/*----------------------- HelloWorldClient.java ---------------*/
package ejb3.joeyta.clients;
import javax.naming.InitialContext;
import ejb3.joeyta.sessions.HelloWorld;
public class HelloWorldClient
{
public static void main(String[] args) throws Exception
{
InitialContext ctx = new InitialContext();
HelloWorld helloWorld = (HelloWorld) ctx.lookup("HelloWorldBean/remote");
System.out.println(helloWorld.echo("Hello World, Joeyta"));
}
}
/*----------------------- HelloWorldClient.java ---------------*/

目結構如下所示:

[9] 使用 ANT 建立 EJB-JAR 並執行 Client 程式:
在 HelloWorldEJB3 project 下建立 build.xml [ ANT build File ]
內容如下:


























點選 build -> Run As -> 2. Ant Build
Eclipse Console 輸出為
Hello World, Joeyta
如下圖所示:


JBoss Console 輸出為
Joeyta try Hello World.
如下圖所示:


這次 JBoss EJB3 HelloWorld 教學己到了終點.
正籌備 EJB3 Statefull Session Bean, Entity Bean , Transaction, Message Driven Bean 教學.
不過我相信有了上面這個起點, 學下去也相當容易.


↑返回目录
前一篇: JBoss EJB3(Stateful Session Beans)備忘記
后一篇: 使用VTD-XML简化XML处理-克服DOM及SAX缺点的新选择