天天看點

JBoss EJB3(HelloWorld)

原本來自:

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 EJB3(HelloWorld)

安裝完後, 新增環境變數 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 EJB3(HelloWorld)

如果分開安裝 JBoss AS 及 EJB3 就可以打開下面連結. 網上安裝則沒有此功能.

點擊上圖的 JBoss Web Console 進入JBoss Web控制介面. 如下圖所示:

JBoss EJB3(HelloWorld)

[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 ]

設定如下圖所示:

JBoss EJB3(HelloWorld)

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

[7] 建立 HelloWorld Stateless Session Bean 及 Local, Remote interfaces:

package ejb3.joeyta.sessions;

public interface HelloWorld {

 public String echo(String msg);

}

package ejb3.joeyta.sessions;

import javax.ejb.Local;

@Local

public interface HelloWorldLocal extends HelloWorld {

}

package ejb3.joeyta.sessions;

import javax.ejb.Remote;

@Remote

public interface HelloWorldRemote extends HelloWorld {

}

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;

 }

}

[8] 建立客戶端測試程式:

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"));

   }

}

項目結構如下所示:

JBoss EJB3(HelloWorld)

[9] 使用 ANT 建立 EJB-JAR 並執行 Client 程式:

在 HelloWorldEJB3 project 下建立 build.xml [ ANT build File ]

內容如下:

<!------------------------- build.xml ------------------------------->

<?xml version="1.0"?>

<project name="JBoss" default="run.HelloWorldClient" basedir=".">

 <property environment="env" />

 <property name="jboss.home" value="${env.JBOSS_HOME}" />

 <property name="classes.dir" value="bin" />

 <path id="classpath">

  <fileset dir="${jboss.home}/client">

   <include name="**/*.jar" />

  </fileset>

  <pathelement location="${classes.dir}" />

 </path>

 <target name="clean">

  <delete file="${basedir}/HelloWorld.jar" />

  <delete file="${jboss.home}/server/default/deploy/HelloWorld.jar" />

 </target>

 <target name="ejbjar" depends="clean">

  <jar jarfile="HelloWorld.jar">

   <fileset dir="${classes.dir}">

    <include name="ejb3/joeyta/sessions/*.class" />

   </fileset>

  </jar>

  <copy file="HelloWorld.jar " todir="${jboss.home}/server/default/deploy" />

 </target>

 <target name="run.HelloWorldClient" depends="ejbjar">

  <java classname="ejb3.joeyta.clients.HelloWorldClient" fork="yes" dir=".">

   <classpath refid="classpath" />

  </java>

 </target>

</project>

<!------------------------- build.xml ------------------------------->

點選 build -> Run As -> 2. Ant Build

Eclipse Console 輸出為

Hello World, Joeyta

如下圖所示:

JBoss EJB3(HelloWorld)

JBoss Console  輸出為

Joeyta try Hello World.

如下圖所示:

JBoss EJB3(HelloWorld)

這次 JBoss EJB3 HelloWorld 教學己到了終點.

正籌備 EJB3 Statefull Session Bean, Entity Bean , Transaction, Message Driven Bean 教學.

不過我相信有了上面這個起點, 學下去也相當容易.

繼續閱讀