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

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

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

    隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
    數據加載中……

    eclipse + JBoss 5 + EJB3開發指南(2):編寫有狀態的SessionBean

    本文為原創,如需轉載,請注明作者和出處,謝謝!

    上一篇:eclipse + JBoss 5 + EJB3開發指南(1):編寫第一個無狀態的SessionBean

        編寫有狀態的(Stateful)的Session Bean也非常簡單,只需要將無狀態注釋(@Stateless)改成有狀態注釋(@Stateful)即可。如果使用Stateful Sessionbean,客戶端在使用同一個SessionBean對象實例時可以保存狀態,也就是說,在多次引用該對象時實際上在服務端是使用的同一個Sessionbean的對象實例,而無狀態sessionbean使用了不同的sessionbean對象實例,因此,是無法保存狀態的。
        下面將編寫一個簡單的購物車的例子,該例子將客戶購買的商品都保存在stateful sessionbean中的List對象中。然后在客戶端使用同一個sessionbean的對象實例輸出這些商品。我們首先來實現一個sessionbean的遠程接口,這和無狀態sessionbean是一樣的。代碼如下:
    package service;

    import java.util.List;
    import javax.ejb.Remote;
    @Remote
    public interface ShoppingCart
    {
        
    //  添加某個商品信息
        public void addCommodity (String value);
        
    //  獲得客戶購買的所有商品的紗銜泥
        public List<String> getCommodity();
    }

        為了方便,在這里只將商品名保存在List對象中,讀者也可以在List對象中保存更復雜的信息,如使用一個對象來保存商品信息。
        下面來編寫具體的Stateful sessionbean,代碼如下:
    package service;

    import java.util.ArrayList;
    import java.util.List;
    import javax.ejb.Stateful;

    @Stateful
    public class ShoppingCartBean implements ShoppingCart
    {
        
    private List<String> shoppingCart = new ArrayList<String>();

        @Override
        
    public void addCommodity(String value)
        {
            shoppingCart.add(value);        
        }

        @Override
        
    public List<String> getCommodity()
        {
            
    return shoppingCart;
        }    
    }

        最后我們編寫一個客戶端調用程序,代碼如下:
    package test;

    import java.util.List;
    import java.util.Properties;
    import javax.naming.InitialContext;
    import service.ShoppingCart;

    public class Client
    {

        
    public static void main(String[] args) throws Exception
        {
            Properties prop 
    = new Properties();
            InitialContext ctx 
    = new InitialContext();        
            ShoppingCart shoppingCart 
    = (ShoppingCart) ctx
                    .lookup(
    "ShoppingCartBean/remote");
            shoppingCart.addCommodity(
    "自行車");
            shoppingCart.addCommodity(
    "筆記本電腦");
            shoppingCart.addCommodity(
    "液晶電視");
            List
    <String> commodities = shoppingCart.getCommodity();
            
    for(String commodity: commodities)
            {
                System.out.println(commodity);
            }
        
        }
    }

        在客戶端調用時,需要將ShoppingCart接口復制到客戶端,當然,@Remote可以去掉。別忘了引用JBoss安裝目錄中的client目錄中的jar文件。客戶端仍然使用了jndi.properties文件來配置相應的信息,該文件位于src目錄下,內容如下;
    java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
    java.naming.provider.url
    =localhost

        在執行上面的程序后,將輸出如下的信息:
    自行車
    筆記本電腦
    液晶電視

        從上面的輸出結果可以看出,使用getCommodity方法成功獲得了所有的商品信息。要注意的是,需要使用同一個sessionbean對象實例(shoppingCart)才能保存狀態。如果在web應用程序中,需要將shoppingCart對象保存在Session中,這樣在同一個會話中的用戶就可以使用該購物車對象了。

    下一篇:eclipse + JBoss 5 + EJB3開發指南(3):使用Session Bean的本地接口





    Android開發完全講義(第2版)(本書版權已輸出到臺灣)

    http://product.dangdang.com/product.aspx?product_id=22741502



    Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


    新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

    posted on 2009-05-13 09:51 銀河使者 閱讀(2864) 評論(0)  編輯  收藏 所屬分類: 原創ejb3JBoss

    主站蜘蛛池模板: 伊人久久亚洲综合影院首页| 久久久无码精品亚洲日韩蜜臀浪潮 | 亚洲国产另类久久久精品 | 99久热只有精品视频免费观看17| 亚洲乱亚洲乱妇无码麻豆| 两个人看的www视频免费完整版| MM131亚洲国产美女久久| 9i9精品国产免费久久| 国产亚洲精午夜久久久久久| 久久九九久精品国产免费直播| 亚洲人成人网站色www| 久久青草免费91观看| 亚洲美女免费视频| 久久精品网站免费观看| 亚洲精品无码久久| 亚洲男人第一无码aⅴ网站| 巨胸喷奶水www永久免费| 水蜜桃亚洲一二三四在线| 114级毛片免费观看| 亚洲免费中文字幕| 韩国欧洲一级毛片免费| 2022免费国产精品福利在线| 国产亚洲精AA在线观看SEE| 亚洲三级在线免费观看| 337P日本欧洲亚洲大胆艺术图| 亚洲免费在线观看| 91精品免费观看| 亚洲AV无码一区二区大桥未久| 亚洲性日韩精品一区二区三区 | 全免费一级毛片在线播放| 免费播放国产性色生活片| 亚洲精品国产字幕久久不卡| 黄+色+性+人免费| 黄页视频在线观看免费| 亚洲av永久无码精品漫画| 免费观看毛片视频| 免费高清国产视频| 亚洲成a∨人片在无码2023| 亚洲精品亚洲人成在线观看| 97无码免费人妻超级碰碰碰碰 | 亚洲AV中文无码乱人伦|