love fish大鵬一曰同風(fēng)起,扶搖直上九萬里

          常用鏈接

          統(tǒng)計(jì)

          積分與排名

          friends

          link

          最新評論

          第一個EJB3.0范例(轉(zhuǎn))

          ?

          2004 7 月, EJB 專家委員會公布了新的 EJB3.0 規(guī)范草本。 2004 10 7 號, JBoss 發(fā)布了支持 EJB3.0 的第一個預(yù)覽版本 jboss-EJB-3.0_Preview_1 2004 11 5 號, JBoss 發(fā)布了支持 EJB3.0 的第二個預(yù)覽版本 jboss-EJB-3.0_Preview_2

          我們來完成第一個 EJB3.0 程序。

          搭配環(huán)境

          實(shí)現(xiàn) EJB3.0 的環(huán)境要求使用 JBoss jboss-4.0.1RC1 (已經(jīng)有了 RC2 )和 JDK1.5 及更高版本。 jboss-4.0.1RC1 可以在 www.jboss.org 上下載, JDK1.5 可以在 java.sun.com 得到。我們在 windows 環(huán)境下使用,所以下載相應(yīng) windows 版本。

          首先安裝 JDK 。下載 jdk-1_5_0_01-windows-i586-p.exe ,安裝至相應(yīng)目錄,我安裝至 D:\Program Files\Java\jdk1.5.0_01 。然后配置環(huán)境。在我的電腦 -> 屬性 -> 高級 -> 環(huán)境變量 -> 系統(tǒng)變量中,設(shè)置 JAVA_HOME D:\Program Files\Java\jdk1.5.0_01 Path 中將 D:\Program Files\Java\jdk1.5.0_01\bin; 寫在最前。

          下載 jboss-4.0.1RC1.zip ,直接解壓縮到 D:\jboss4 下。相同方法設(shè)置 JBOSS_HOME D:\jboss4

          由于用到 ant ,所以還需要取得 Apache Ant 相關(guān)執(zhí)行程序。在 Apache 服務(wù)器 ,Weblogic Jbuilder 等安裝目錄下可以找到,最好版本較高。我使用 JBuilder2005 下的,路徑為 D:\Borland\JBuilder2005\thirdparty\ant\bin; 仍然設(shè)置在系統(tǒng)變量的 Path 中,寫在 JDK 路徑之后。(注意:如果 ant 版本較低將編譯時報錯,我的為 Apache Ant version 1.6.2 compiled on July 16 2004 )。

          ?????? 還要用到 jboss-EJB-3.0_Preview_2 包,可以在 www.jboss.org 得到。解壓后包括 docs lib 兩個文件夾和 RELEASE_NOTES.txt INSTALL.html 兩個說明文件。 Docs 文件夾中有主頁文件 index.html, 包括了 EJB3.0 的規(guī)范草本 ejb-3_0-edr-spec.pdf ,指南文件夾 tutorial (包括范例說明文件和源文件),配置說明文件夾 reference Hibernate3 的文件夾。 Lib 文件夾是部署 EJB3.0 環(huán)境所需要的 ejb3-interceptors-aop.xml ejb3.deployer

          ?????? 運(yùn)行簡單的 EJB3.0 范例,我們只需要將 ejb3-interceptors-aop.xml ejb3.deployer 文件夾拷貝到 D:\jboss4\ server\all\deploy 下即可。

          ??? 我們將范例部署在all下,所以運(yùn)行JBoss時我們使用

          ??? Run –c all

          ??? 啟動JBoss后我們就完成了環(huán)境的配置。

          編寫程序

          ??? Docs 文件夾下提供了許多EJB3.0各個方面的范例。我們以無狀態(tài)bean為例運(yùn)行范例。

          ??? 無狀態(tài)bean范例在stateless文件夾下。包括了存放源文件的src和運(yùn)行配置文件build.xmlJNDI配置文件jndi.properties和說明文件stateless.html

          ??? 源文件包括Calculator.java CalculatorBean.java CalculatorLocal.java CalculatorRemote.java Client.java

          ??? EJB3.0環(huán)境下編寫無狀態(tài)bean時很容易的。所有的bean類型就是homeless所以只需要創(chuàng)建一個bean類和實(shí)現(xiàn)至少一個接口。

          CalculatorBean.java我們聲明一個無狀態(tài)bean只需要聲明為 @StatelessEJB容器就會部署這個類為無狀態(tài)bean

          import javax.ejb.Stateless;

          @Stateless

          public class CalculatorBean implements CalculatorRemote, CalculatorLocal

          {

          ?? public int add(int x, int y)

          ?? {

          ????? return x + y;

          ?? }

          ?? public int subtract(int x, int y)

          ?? {

          ????? return x - y;

          ?? }

          }

          這個CalculatorBean實(shí)現(xiàn)了兩個接口。一個是remote,一個是local。現(xiàn)在在EJB3.0中你可以僅僅實(shí)現(xiàn)一個remote,一個local或兩個都實(shí)現(xiàn)。

          ?

          CalculatorRemote.java定義Calculator bean remote接口你僅僅需要標(biāo)識其為@Remote

          import javax.ejb.Remote;

          ?

          @Remote

          public interface CalculatorRemote extends Calculator

          {

          }

          同樣在CalculatorLocal.java你也僅僅需要標(biāo)識一個@Local就可以定義Calculator bean local接口

          import javax.ejb.Local;

          ?

          @Local

          public interface CalculatorLocal extends Calculator

          {

          }

          Calculator bean 需要兩個JNDI的綁定分別對應(yīng)@Remote @Local接口。默認(rèn)的,JBoss使用接口的全名作為JNDI的名字。這使得你可以容易的調(diào)用CalculatorRemote.class.getName()來查找一個JNDI名字對應(yīng)的引用。

          Client.java中你可以發(fā)現(xiàn)是使用remote接口的全名來查找無狀態(tài)bean,也可以注意到并不存在HOME接口。

          import org.jboss.tutorial.stateless.bean.Calculator;

          import org.jboss.tutorial.stateless.bean.CalculatorRemote;

          import javax.naming.InitialContext;

          ?

          public class Client

          {

          ?? public static void main(String[] args) throws Exception

          ?? {

          ????? InitialContext ctx = new InitialContext();

          ????? Calculator calculator = (Calculator) ctx.lookup(CalculatorRemote.class.getName());

          ?

          ????? System.out.println("1 + 1 = " + calculator.add(1, 1));

          ????? System.out.println("1 - 1 = " + calculator.subtract(1, 1));

          ?? }

          }

          現(xiàn)在你可以直接執(zhí)行這個無狀態(tài)bean了。

          運(yùn)行結(jié)果

          ?? 這個實(shí)例使用ant機(jī)制運(yùn)行,所以需要配置build.xml。不同的build.xml中需要設(shè)置不同的run參數(shù)中的classname

          ?? <target name="run" depends="ejbjar">

          ????? <java classname="org.jboss.tutorial.stateless.client.Client" fork="yes" dir=".">

          ???????? <classpath refid="classpath"/>

          ????? </java>

          ?? </target>

          JNDI 的配置相同jndi.properties

          java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory

          java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces

          java.naming.provider.url=localhost

          ?

          ??? 打開命令運(yùn)行窗口,到范例目錄下,如

          D:\jboss-EJB-3.0_Preview_2\docs\tutorial\stateless ,鍵入命令ant編譯文件。編譯成功會顯示:BUILD SUCCESSFUL

          成功編譯后會目錄下會多一個build目錄,為編譯后的class文件和tutorial.ejb3的文件。

          然后運(yùn)行 ant run,執(zhí)行程序,我們可以看到:

          Buildfile: build.xml

          prepare:

          compile:

          ejbjar:

          run:

          ???? [java] 2005-01-12 15:07:25,296 INFO org.jboss.remoting.InvokerRegistry[main

          ] - Failed to load soap remoting transport: org/apache/axis/AxisFault

          ???? [java] 1 + 1 = 2

          ???? [java] 1 - 1 = 0

          BUILD SUCCESSFUL

          Total time: 3 seconds

          ?

          其中的信息

          [java] 2005-01-12 15:07:25,296 INFO org.jboss.remoting.InvokerRegistry[main

          ] - Failed to load soap remoting transport: org/apache/axis/AxisFault

          JBoss的一個bug,我們可以不去關(guān)心。他們會在下一版本改進(jìn)。

          ?

          至此,我完成了一個EJB3.0的范例。我們可以發(fā)現(xiàn)EJB3.0帶給我們的驚喜。我們不必再去配置大量繁瑣的部署描述和復(fù)雜的接口。相信更多的EJB3.0的驚喜在等待著我們?nèi)グl(fā)掘。

          posted on 2006-06-30 11:38 liaojiyong 閱讀(375) 評論(0)  編輯  收藏 所屬分類: EJB

          主站蜘蛛池模板: 闽清县| 无为县| 太康县| 武平县| 南宫市| 华蓥市| 顺昌县| 阳山县| 天台县| 乌鲁木齐市| 司法| 逊克县| 沛县| 分宜县| 鲁山县| 垫江县| 望城县| 巨野县| 密山市| 股票| 灵武市| 兴仁县| 邻水| 普陀区| 娄底市| 措勤县| 锦屏县| 寿宁县| 瓦房店市| 静宁县| 桐梓县| 宝坻区| 武陟县| 墨竹工卡县| 广州市| 汉阴县| 绥中县| 商水县| 陇川县| 普定县| 夏河县|