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

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

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

    posts - 66,  comments - 11,  trackbacks - 0
    為將企業Bean的中間件服務需求告知EJB容器,開發者還需生成部署描述符。
    <?xml version="1.0" encoding="UTF-8"?>
    <ejb-jar version="2.1" xmlns="http://java.sun.com/xml/ns/j2ee"
     xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation
    ="http://java.sun.com/xml/ns/j2ee
     http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"
    >
    <!-- 
        <ejb-name>:企業Bean的昵稱。在部署描述符的其他地方能夠引用它,供設置其他參數使用。
        <home>:Home接口的全限定名。
        <remote>:遠程接口的全限定名。
        <local-home>:本地Home接口的全限定名。
        <local>:本地接口的全限定名。
        <ejb-class>:企業Bean類的全限定名。
        <session-type>:標識企業Bean是有狀態的,還是無狀態的。
        <transaction-type>:事務類型。
     
    -->
        
    <enterprise-beans>
            
    <session>
                
    <ejb-name>Hello</ejb-name>
                
    <home>examples.HelloHome</home>
                
    <remote>examples.Hello</remote>
                
    <local-home>examples.HelloLocalHome</local-home>
                
    <local>examples.HelloLocal</local>
                
    <ejb-class>examples.HelloBean</ejb-class>
                
    <session-type>Stateless</session-type>
                
    <transaction-type>Container</transaction-type>
            
    </session>
        
    </enterprise-beans>
    </ejb-jar>

    Ejb-jar文件:
    HelloWorld EJB組件準備好了之后只需將他們打包成Ejb-jar文件。手工創建jar文件
    jar cf HelloWorld.jar *

    注意:ejb-jar.xml文件必須放置在META-INF子目錄中。當EJB容器初次打開Ejb-jar文件時,將在ejb-jar.xml中查找Ejb-jar所包含的EJB組件信息。

    如何調用EJB組件:
    目前,存在2類客戶:
    1、基于Java RMI-IIOP的客戶。這類客戶使用JNDI,即通過網絡查找對象。另外,它們使用JTA控制事務。
    2、CORBA客戶。這類客戶村尋CORBA標準。這對于使用其他語言訪問EJB組件的客戶而言,意義深遠,CORBA客戶使用CORBA命名服務,即通過網絡查找對象。
    訪問EJB組件的步驟:
    1、查找Home對象
    2、使用Home對象創建EJB對象
    3、調用EJB對象的業務方法
    4、銷毀EJB對象

    查找Home對象:
    開發EJB應用的最主要目標之一是,應用代碼能夠"一次編寫,到處運行".如果將已部署在機器A上的EJB應用遷移到機器B上,EJB應用代碼不需要改動,因為EJB實現了位置透明性。
    借助于命名和目錄服務能夠實現EJB的位置透明性。命名和目錄服務是能夠在網絡中存儲和查找資源的產品。

    在企業部署場景中,EJB服務器使用命名服務存儲位置信息,而這些位置信息是用于標識資源的,其中的資源涉及到EJB Home對象、企業Bean環境屬性、數據庫JDBC驅動、消息服務驅動和其他資源等。通過使用命名服務,應用代碼不用將具體機器或資源名硬編碼在代碼中,這就是EJB所具備的位置透明性,它使得代碼具有便攜性。

    為實現位置透明性,EJB容器需要屏蔽掉Home對象的具體位置,使得EJB組件的客戶代碼感知不到其具體位置。客戶不用將Home對象宿主的機器名硬編碼于代碼中。相反,使用JNDI就能夠查找到Home對象。物理上,Home對象可以存在于網絡上的任何地方,比如在運行EJB容器的同一進程地址空間中,其他機器上的EJB容器中。

    客戶為定位Home對象,它必須提供企業Bean的Home對象的JNDI昵稱。客戶使用該昵稱標識所需的Home對象。一旦將EJB組件部署到容器中,容器會自動將HelloHome昵稱綁定到Home對象。因此,在對已部署EJB組件的物理機器位置不知情時,開發者能夠在任一機器上使用該昵稱查找到上述Home對象,借助于JNDI能夠查找到它。JNDI能夠在網絡上查找命名服務,或在JNDI樹中查找到Home對象,當然,Home對象也可能位于客戶同一進程中,最后一旦找到Home對象,客戶將獲得對它的引用。
    package com.wyq.ejb;

    import java.util.Properties;

    import javax.naming.Context;
    import javax.naming.InitialContext;

    /**
     * 客戶代碼實例,用于調用簡單、無狀態會話Bean中的方法。
     *
     
    */
    public class HelloClient {

        
        
    public static void main(String[] args)throws Exception {
            
    /*
             * 設置屬性,用于JNDI初始化,從命令行讀入屬性。
             
    */
            Properties props 
    = System.getProperties();
            
    /*
             * 初始上下文是連接到JNDI樹的入口。
             * 借助于環境屬性,能夠完成JNDI驅動、服務器的網絡地址等的設置
             
    */
            Context ctx 
    = new InitialContext(props);
            
    /*
             * 獲得對Home對象的引用。Home對象是創建EJB對象的工廠。
             
    */
            Object obj 
    = ctx.lookup("HelloHome");
            
    /*
             * Home對象是RMI-IIOP對象。因此,需要借助于特殊的RMI-IIOP造型操作將它們造型成RMI-IIOP對象
             
    */
            HelloHome home 
    =(HelloHome)javax.rmi.PortableRemoteObject.narrow(obj,HelloHome.class);
            
    /*
             * 使用工廠,來創建Hello EJB對象。
             
    */
            Hello hello 
    = home.create();
            
    /*
             * 調用EJB對象的hello()方法。它會將調用委派給EJB Bean類實例。一旦接收到響應結果,它便會返回。
             
    */
            System.out.println(hello.hello());
            
    /*
             * 在使用完EJB對象后,需要銷毀它。EJB容器負責銷毀EJB對象。
             
    */
            hello.remove();

        }

    }

    posted on 2009-10-31 12:36 王永慶 閱讀(137) 評論(0)  編輯  收藏 所屬分類: EJB學習筆記
    <2009年10月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    關注blogs

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 波多野结衣免费在线| 亚洲高清中文字幕免费| 国产成人亚洲精品91专区手机| 免费A级毛片无码久久版| 国产亚洲精久久久久久无码77777| 亚洲国产精品成人久久| 久久久久亚洲AV片无码下载蜜桃| 亚洲视频一区网站| 亚洲av永久中文无码精品| 国产精品偷伦视频免费观看了| 成全在线观看免费观看大全 | 国产免费一级高清淫曰本片| 最近中文字幕大全中文字幕免费| 巨胸喷奶水视频www网免费| 国产精品亚洲mnbav网站| 一区二区三区免费视频网站 | 女人被男人躁的女爽免费视频| 亚洲人成77777在线观看网| 免费看大美女大黄大色| 亚洲AV无码乱码在线观看裸奔 | 亚洲日本视频在线观看| 免费无码婬片aaa直播表情| 16女性下面扒开无遮挡免费| 亚洲精品WWW久久久久久| 久久久久亚洲精品无码蜜桃| 亚洲高清视频免费| 亚洲欧洲专线一区| 一个人免费观看在线视频www| 亚洲国产高清精品线久久| 亚洲中文字幕久久精品无码A| 免费无码中文字幕A级毛片| 精品国产亚洲男女在线线电影| 亚洲熟妇无码AV不卡在线播放| 免费大黄网站在线看| 青青草原1769久久免费播放| 久久久久无码专区亚洲av| 最近免费字幕中文大全视频| 亚洲hairy多毛pics大全| 亚洲综合色婷婷七月丁香| 啦啦啦完整版免费视频在线观看 | 麻豆精品国产免费观看|