Stateful Session Beans EJB 3.0 コース 第4回
ここでの目標 “Oracle Application Server EJB 3.0 Preview” の概要を理解する。 Stateless Session Bean の概要を理解する。
Stateful Session Beans
Session Beans (1) クライアントが必要に応じて呼び出す処理をまとめたもの クライアントの特定のセッションに対応 セッション開始と同時に生成され、セッション終了時に消滅
Session Beans (2) Stateless Session Beans Stateful Session Beans インスタンスに固有のフィールドがないため内部状態を持たず、ユーティリティクラスのように振る舞う Stateful Session Beans 内部状態を持っている
サンプルアプリケーション (1) %ORACLE_HOME%¥demo¥howtoejb30sfsb について解説する Cart サンプルアプリケーション Ant でコンパイル、J2EEサーバへの配備 (デプロイ) を実行
サンプルアプリケーション (2) J2EEサーバ側 (EJB) クライアント側 そのほか、いくつかの設定ファイル Cart.java CartBean.java クライアント側 CartClient.java そのほか、いくつかの設定ファイル
インタフェースの作成
Cart.java (1) import java.util.Collection; import javax.ejb.Remote; public interface Cart { public void addItem(String item); public void removeItem(String item); public Collection getItems(); }
Cart.java (2) Stateful Session Beans が公開するメソッドを定義しているインタフェース
Stateful Session Beans の作成
CartBean.java (1) import javax.ejb.PostConstruct; import javax.ejb.Stateful; @Stateful public class CartBean implements Cart { @PostConstruct public void initialize() { items = new ArrayList(); } public void addItem(String item) {…}
CartBean.java (2) @PostConstruct Stateful Session Bean であることを示すために、@Stateful アノテーションを付加する @PostConstruct アノテーションが付加されたメソッドは、インスタンス生成時に呼びだされる
クライアントプログラム
CartClient.java Context context = new InitialContext(); Cart cart = (Cart) context.lookup("java:comp/env/Cart"); cart.addItem("Item1"); cart.addItem("Item2"); Collection items = cart.getItems(); for (Iterator i = items.iterator(); i.hasNext();) { String item = (String) i.next(); System.out.println(" " + item); }
Cart に対する操作 // cart に Item1 を追加 cart.addItem("Item1"); Collection items = cart.getItems();
課題
課題 銀行の口座を表す Stateful Session Bean をつくる。
課題の クライアントプログラム例 Context context = new InitialContext(); Bank bank = (Bank)context.lookup( ”java:comp/env/ejb/Bank"); bank.deposit(10000); // 預ける bank.draw(5000); // おろす // 現在の残高は? Int account = bank.getAccount();