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

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

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

    狼愛上貍

    我胡漢三又回來了

    第一個(gè)EJB3.0范例

    第一個(gè)EJB3.0范例
    2005-07-19? ?來源:zdnet ?作者:zdnet
    2004年7月,EJB專家委員會(huì)公布了新的EJB3.0規(guī)范草本。2004年10月7號(hào),JBoss發(fā)布了支持EJB3.0的第一個(gè)預(yù)覽版本jboss-EJB-3.0_Preview_1。2004年11月5號(hào),JBoss發(fā)布了支持EJB3.0的第二個(gè)預(yù)覽版本jboss-EJB-3.0_Preview_2。

    我們來完成第一個(gè)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)境。在我的電腦->屬性->高級(jí)->環(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版本較低將編譯時(shí)報(bào)錯(cuò),我的為Apache Ant version 1.6.2 compiled on July 16 2004)。

    ? ? ? 還要用到j(luò)boss-EJB-3.0_Preview_2包,可以在www.jboss.org得到。解壓后包括docs,lib兩個(gè)文件夾和RELEASE_NOTES.txt和INSTALL.html兩個(gè)說明文件。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時(shí)我們使用

    ? ?Run –c all

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

    編寫程序

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

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

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

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

    在CalculatorBean.java我們聲明一個(gè)無狀態(tài)bean只需要聲明為 @Stateless,EJB容器就會(huì)部署這個(gè)類為無狀態(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;

    ? }

    }

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



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

    import javax.ejb.Remote;



    @Remote

    public interface CalculatorRemote extends Calculator

    {

    }

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

    import javax.ejb.Local;



    @Local

    public interface CalculatorLocal extends Calculator

    {

    }

    Calculator bean需要兩個(gè)JNDI的綁定分別對應(yīng)@Remote 和@Local接口。默認(rèn)的,JBoss使用接口的全名作為JNDI的名字。這使得你可以容易的調(diào)用CalculatorRemote.class.getName()來查找一個(gè)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í)行這個(gè)無狀態(tài)bean了。

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

    ? 這個(gè)實(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編譯文件。編譯成功會(huì)顯示:BUILD SUCCESSFUL。

    成功編譯后會(huì)目錄下會(huì)多一個(gè)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的一個(gè)bug,我們可以不去關(guān)心。他們會(huì)在下一版本改進(jìn)。



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

    posted on 2006-06-15 06:12 狼愛上貍 閱讀(338) 評論(0)  編輯  收藏 所屬分類: J2EE


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产免费AV片在线观看| 四虎在线播放免费永久视频| 亚洲av一本岛在线播放| 全黄a免费一级毛片人人爱| 久久久久久久99精品免费| 亚洲成a人片在线不卡一二三区 | 国产成人久久AV免费| 久久亚洲精品国产亚洲老地址| 亚洲精品高清一二区久久| 98精品全国免费观看视频| 在线观看亚洲网站| 亚洲欧洲在线观看| 亚洲成A人片在线观看中文| 88av免费观看| 国产亚洲精品免费视频播放| 久久久久精品国产亚洲AV无码| 国产亚洲精品AA片在线观看不加载 | 91情国产l精品国产亚洲区| 国产一级淫片a免费播放口之| 99久热只有精品视频免费观看17| 国产午夜亚洲精品不卡| 亚洲国产成人久久精品app| 亚洲最大av无码网址| 男女交性永久免费视频播放| 十八禁无码免费网站| 国产精品免费久久久久电影网| 国产精品亚洲综合久久| 亚洲综合一区二区精品导航| 亚洲国产婷婷综合在线精品| 成年性生交大片免费看| 中国人xxxxx69免费视频| 男人天堂免费视频| 又硬又粗又长又爽免费看| 亚洲欧美日本韩国| 亚洲人和日本人jizz| 亚洲欧洲日产国码久在线观看| 久久久久亚洲精品男人的天堂| 午夜国产羞羞视频免费网站| 毛片A级毛片免费播放| 最近免费中文字幕mv在线电影| 免费无码av片在线观看|