Stateless Session Beans

Stateful Session Beans
EJB 3.0 コース
第5回
2006年8月4日
1
ここでの目標

Stateful Session Bean の概要を理解する。
2
Stateful Session Beans
3
Session Beans (1)
クライアントが必要に応じて呼び出す処理を
まとめたもの
 クライアントの特定のセッションに対応
 セッション開始と同時に生成され、セッション
終了時に消滅

4
Session Beans (2)

Stateless Session Beans


インスタンスに固有のフィールドがないため内
部状態を持たず、ユーティリティクラスのように
振る舞う
Stateful Session Beans

内部状態を持っている
5
サンプルアプリケーション
Cart サンプルアプリケーション
 Java EEサーバ側 (EJB)

Cart.java
 CartBean.java


クライアント側

CartClient.java
6
インタフェースの作成
7
Cart.java (1)
import java.util.Collection;
import javax.ejb.Remote;
@Remote
public interface Cart {
public void addItem(String item);
public Collection getItems();
}
8
Cart.java (2)

Stateful Session Beans が公開するメソッド
を定義しているインタフェース
9
Stateful Session Beans
の作成
10
CartBean.java (1)
import javax.ejb.Stateful;
@Stateful
public class CartBean implements Cart {
private ArrayList<String> list =
new ArrayList<String>();
public void addItem(String item) {
list.add(item);
}
}
11
CartBean.java (2)
Stateful Session Bean であることを示すため
に、@Stateful アノテーションを付加する
 内部状態を管理するために list フィールドを
用意している


内部状態 = ここではCartの中身
12
クライアントプログラム
13
CartClient.java
cart.addItem("かに");
cart.addItem("うに");
cart.addItem("利尻昆布");
Collection<String> c = cart.getItems();
for (String item: c) {
System.out.println(item);
}
14
課題
15
課題

銀行の口座を表す Stateful Session Bean
をつくる。
16
課題の
クライアントプログラム例
@EJB static Bank bank;
bank.deposit(10000);
// 預ける
bank.draw(5000); // おろす
// 現在の残高は?
Int account = bank.getAccount();
17