<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    love fish大鵬一曰同風起,扶搖直上九萬里

    常用鏈接

    統計

    積分與排名

    friends

    link

    最新評論

    第一個EJB3.0范例(轉)

    ?

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

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

    搭配環境

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

    首先安裝 JDK 。下載 jdk-1_5_0_01-windows-i586-p.exe ,安裝至相應目錄,我安裝至 D:\Program Files\Java\jdk1.5.0_01 。然后配置環境。在我的電腦 -> 屬性 -> 高級 -> 環境變量 -> 系統變量中,設置 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 下。相同方法設置 JBOSS_HOME D:\jboss4

    由于用到 ant ,所以還需要取得 Apache Ant 相關執行程序。在 Apache 服務器 ,Weblogic Jbuilder 等安裝目錄下可以找到,最好版本較高。我使用 JBuilder2005 下的,路徑為 D:\Borland\JBuilder2005\thirdparty\ant\bin; 仍然設置在系統變量的 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 的規范草本 ejb-3_0-edr-spec.pdf ,指南文件夾 tutorial (包括范例說明文件和源文件),配置說明文件夾 reference Hibernate3 的文件夾。 Lib 文件夾是部署 EJB3.0 環境所需要的 ejb3-interceptors-aop.xml ejb3.deployer

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

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

    ??? Run –c all

    ??? 啟動JBoss后我們就完成了環境的配置。

    編寫程序

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

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

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

    ??? EJB3.0環境下編寫無狀態bean時很容易的。所有的bean類型就是homeless所以只需要創建一個bean類和實現至少一個接口。

    CalculatorBean.java我們聲明一個無狀態bean只需要聲明為 @StatelessEJB容器就會部署這個類為無狀態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實現了兩個接口。一個是remote,一個是local。現在在EJB3.0中你可以僅僅實現一個remote,一個local或兩個都實現。

    ?

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

    import javax.ejb.Remote;

    ?

    @Remote

    public interface CalculatorRemote extends Calculator

    {

    }

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

    import javax.ejb.Local;

    ?

    @Local

    public interface CalculatorLocal extends Calculator

    {

    }

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

    Client.java中你可以發現是使用remote接口的全名來查找無狀態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));

    ?? }

    }

    現在你可以直接執行這個無狀態bean了。

    運行結果

    ?? 這個實例使用ant機制運行,所以需要配置build.xml。不同的build.xml中需要設置不同的run參數中的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

    ?

    ??? 打開命令運行窗口,到范例目錄下,如

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

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

    然后運行 ant run,執行程序,我們可以看到:

    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,我們可以不去關心。他們會在下一版本改進。

    ?

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

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

    主站蜘蛛池模板: 亚洲一区免费在线观看| 91精品免费观看| 国产精品酒店视频免费看| 亚洲人成网站在线观看播放青青 | 亚洲一线产品二线产品| 日本亚洲免费无线码| 亚洲精品白色在线发布| 国产免费的野战视频| 亚洲国产最大av| 日韩免费视频在线观看| 日韩国产欧美亚洲v片| 日本免费中文字幕在线看| 看一级毛片免费观看视频| 亚洲AV无码乱码精品国产| 免费的黄网站男人的天堂| 亚洲精品综合久久| 免费无码作爱视频| 亚洲黄色免费网址| 嫩草影院免费观看| 一个人看www免费高清字幕| 亚洲精品无码专区久久久 | 1024免费福利永久观看网站| 亚洲国产精品xo在线观看| 免费看少妇作爱视频| 免费手机在线看片| 亚洲精品自产拍在线观看动漫| 99久久99久久精品免费看蜜桃| 亚洲精品无码人妻无码| 国产亚洲人成A在线V网站| 99视频免费观看| 久久亚洲中文字幕无码| 亚洲人成在线播放网站| 成人福利免费视频| 成年网在线观看免费观看网址| 亚洲av日韩综合一区在线观看| 久久精品女人天堂AV免费观看| 免费人成又黄又爽的视频在线电影| 亚洲av永久无码精品漫画| 两个人的视频高清在线观看免费| 一区二区三区AV高清免费波多| 亚洲电影一区二区|