首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

一步步學 EJB 3.0 (三):深入理解會話 Bean (下)

     編輯:Java 相關知識

三、無狀態會話 Bean 實作範例

承接上篇文章,我們已經使用過無狀態會話 Bean。現在詳細分析上一個範例程式碼。若尚未閱讀前文,請先參考 《一步步學 EJB 3.0 (二):初探企業 EJB 模組開發》。

1. 遠端介面定義

@Remote
public interface HelloRemote {
    void sayHello(String str);
}

使用 @Remote 註解標記此介面為遠端介面。

2. Bean 實作類別

@Stateless(mappedName="myejb/hello")
@Remote(HelloRemote.class)
public class HelloBean implements HelloRemote {
    public void sayHello(String str) {
        System.out.println("Hello " + str);
    }
}

關鍵註解說明:

  • @Stateless:標記為無狀態會話 Bean,mappedName 指定 JNDI 名稱。
  • @Remote:宣告此 Bean 實作的遠端介面。

3. 客戶端呼叫

public class Main {
    public static void main(String[] args) throws Exception {
        Context ctx = new InitialContext();
        HelloRemote hw = (HelloRemote) ctx.lookup("myejb/hello");
        hw.sayHello(" Beniao!");
    }
}

客戶端透過 JNDI 查找 mappedName 取得 Bean 實例並呼叫方法。

四、有狀態會話 Bean 實作範例

以購物車為例展示有狀態會話 Bean。

1. 業務介面

@Remote
public interface ShoppingCartRemote {
    void addItem(String item, int quantity);
    void removeItem(String item, String quantity);
    Map<String, Integer> getItems();
    void clearItems();
}

2. Bean 實作

@Stateful(mappedName="ejb/ShoppingCart")
public class ShoppingCartBean implements ShoppingCartRemote {
    private HashMap<String, Integer> items = new HashMap<String, Integer>();

    public void addItem(String item, int quantity) {
        Integer orderQuantity = items.get(item);
        if (orderQuantity == null) orderQuantity = 0;
        orderQuantity += quantity;
        items.put(item, orderQuantity);
    }

    public void removeItem(String item, String quantity) {
        System.out.println("將商品移出購物車");
    }

    public Map<String, Integer> getItems() {
        // 程式碼省略
        return null;
    }

    @Remove
    public void clearItems() {
        items.clear();
    }
}

關鍵註解:

  • @Stateful:標記為有狀態會話 Bean。
  • @Remove:呼叫此方法後,容器會銷毀該 Bean 實例。

有狀態會話 Bean 在實務開發中較少使用,本文僅作引導。深入學習請參考官方文件與專書。

更多內容請見:beniao.blogjava.net

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved