程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 一步一步學EJB3.0(三):悟透會話Bean(下)

一步一步學EJB3.0(三):悟透會話Bean(下)

編輯:關於JAVA

三、無狀態會話Bean實例

在上一篇文章裡,其實我們已經應用到了無狀態會話Bean,那好,下面我們詳細的來分析下上一篇文 章裡給出的示例程序。 沒有閱讀過的朋友請點擊這裡閱讀:<<一步一步學EJB 3.0(二):初探企業 EJB模塊開發>> .

首先我們來看看接口的定義:

1 /**
2 * 遠程接口
3 * @author Beniao
4 */
5 @Remote
6 public interface HelloRemote {
7   void sayHello(String str);
8 }

這裡我們定義了一個接口,並通過@Remote將此接口標記為遠程接口.下面是實現類的定義:

1/** *//**
2 * 無狀態會話Bean
3 * @author Beniao
4 */
5@Stateless(mappedName="myejb/hello")
6@Remote(HelloRemote.class) //所實現的遠程接口
7public class HelloBean implements HelloRemote {
8  public void sayHello(String str) {
9    System.out.println("Hello " + str);
10  }
11}

這個實現類很簡單,就是直接在參數前加上"Hello "後輸出.這裡我們需要注意的就是在類上面的兩個 標注符:

1. @Stateless: 用於標記當前Java Bean為無會話狀態Bean. 通過指定屬性mappedName來生成 JNDI.

2. @Remote: 用於標記當前Java Bean所實現的遠程接口

OK,上面就是一個無會話Bean的簡單示例,客戶端可以直接通過@Stateless中配置的mappedName來獲取 實例.

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

更詳細的開發請大家查看相應的資料,我寫這些文章只是一個引導而已.

四、有狀態會話Bean實例

我們還是從商業接口開始分析,下面是一個簡單購物車的商業接口:

1 /**
2 * 購物車的商業接口
3 * @author Beniao
4 */
5 @Remote
6 public interface ShoppingCatRemote {
7   void addItem(String item, int quantity);
8   void removeItem(String item, String quantity);
9   Map<String, Integer> getItems();
10   void clearItems();
11 }
     業務實現類如下: 1 /**
2 * 通過@Stateful來標注該Java Bean為有會話狀態Bean
3 * @author Beniao
4 */
5 @Stateful(mappedName="ejb/ShoppingCat")
6 public class ShoppingCatBean implements ShoppingCatRemote {
7
8   private HashMap<String ,Integer> items = new HashMap<String, Integer> ();
9
10
11   public void addItem(String item, int quantity) {
12     Integer orderQuantity = items.get(item);
13     if(orderQuantity == null) {
14       orderQuantity = 0;
15     }
16     orderQuantity += quantity;
17     items.put(item, orderQuantity);
18   }
19
20   public void removeItem(String item, String quantity) {
21     System.out.println("將商品移出購物車");
22   }
23
24   public Map<String, Integer> getItems() {
25     //..代碼略
26     return null;
27   }
28
29   @Remove
30   public void clearItems() {
31     items.clear();
32   }
33 }

從上面可以看出,我們要開發一個有會話狀態Java Bean可以通過@Stateful來標注該Java Bean為有會 話狀態Bean. 這與無會話狀態Bean不同的是在最後一個方法上便可以看出,加上了@Remove標注.

1. @Stateful : 用於標注一個Java Bean為有狀態會話Bean.

2. @Remove : 當呼叫它, 就會清除這個 Instance.

有狀態會話Bean在實際開發中用得不是很多,這裡就不做詳細介紹, 記得前面說過,這些文章只是引導 性文章,要深入詳細的學習EJB請查看相關資料和書籍.

http://beniao.blogjava.net

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved