![]() |
Sun ONE Application Server 7 サーバーアプリケーションの移行および再配備 |
付録 AiBank アプリケーションの仕様
サンプルアプリケーションとして使用するのは「iBank」です。「iBank」は次の機能を持ち、基本的なオンラインバンキングサービスをシミュレートします。
- オンラインバンキングサービスへのログオン
- 詳細な個人情報および支店情報の表示と編集
- 口座およびその決済後残高の一覧表示
- 口座ごとの取引明細の表示
- 口座間で資金のオンライン振替を可能にする振替サービス
- 指定された元金と年利に基づいた複数年の複利予測
アプリケーションは MVC (Model-View-Controller) モデルに基づいて設計されています。
- EJB はアプリケーションのビジネスおよびデータモデルコンポーネント定義に使用
- Java Server Pages はプレゼンテーションロジックを処理し、ビューを表す
- サーブレットはコントローラとして動作し、アプリケーションロジックの処理、ビジネスロジックコンポーネントの呼び出し、EJB 経由のビジネスデータへのアクセス (モデル)、Java Server Pages 表示のための処理データのディスパッチ (ビュー) を行う
アプリケーションコンポーネントのパッケージングと配備には、標準 J2EE メソッド、配備記述子のインクルード定義、およびアーカイブファイル内のアプリケーションコンポーネントのパッケージングが使用されます。
- HTML ページ、画像、サーブレット、JSP、カスタムタグライブラリ、および必要に応じてサーバーサイド Java クラスを含み、Web アプリケーションで使用する WAR アーカイブファイル
- 配備記述子、Bean クラスおよびインタフェース、スタブおよびスケルトンクラス、および必要に応じてその他のヘルパークラスを含み、EJB パッケージングで使用する EJB-JAR アーカイブファイル
- Web アプリケーションモジュールおよびアプリケーションで使用される EJB モジュールを含み、エンタープライズアプリケーションモジュールのパッケージングで使用する EAR アーカイブファイル
標準の J2EE パッケージングメソッドを使用すると、Sun ONE Application Server 6.0/6.5 と Sun ONE Application Server 7 の差異、そしてそれが原因で発生する問題が指摘されるという利点があります。
アプリケーション開発用ツール
Sun ONE Studio Enterprise Edition for Java、リリース 4.0
Sun ONE Application Server 7 は EJB 1.0 および EJB 1.1 標準をサポートしています。したがって iBank アプリケーションの他の EJB (2 セッション EJB および BMP エンティティ Bean) は Sun ONE Studio for Java で開発され、提供されている Application Assembly Tool を使用して Sun ONE Application Server 7 にパッケージされ、配備されます。このような方法で開発するため、1.1 EJB 開発用のサードパーティ IDE を Sun ONE Application Server 7 でテストできます。また、Sun ONE Application Server 6.5 用に開発された 1.1 EJB も Sun ONE Application Server 7 に移行し、テストできます。
Java 開発環境用の Sun ONE Studio は、iBank アプリケーションの EJB コンポーネントを Sun ONE Application Server に移行する場合にも使用されます。EJB 1.0 標準コードの EJB 1.1 標準向けの調整、CMP エンティティ Beans 用の O/R マッピング、アプリケーションの複数のモジュールの配備プロパティおよびパッケージングの設定などを行います。
Oracle 8i 8.1.6
データベースは Oracle 8i バージョン 8.1.6 で開発されており、アクセスに使用される JDBC ドライバは thin Oracle ドライバ (type 4) です。
データベーススキーマ
- iBank データベーススキーマは次のビジネスルールに基づいて決定されます。
- iBank は国内の大都市に支店を持つ
- 支店は各地域のすべての顧客を管理する
- 顧客は自分の居住地域の支店に 1 つ以上の口座を持つ
- 顧客の口座は支店番号と口座番号で一意に識別され、これとは別に顧客はそれぞれ顧客番号を持つ。引落可能な現在の決済残高が口座に記録される
- 口座の種類は当座預金や普通預金などの口座タイプで区別される
- 各口座タイプには、支店や顧客に関わらず、このタイプのすべての口座に適用される金利や当座借越限度額などの細則が保存される
- 顧客の口座に入金があった場合、または口座からの引き落としがあった場合、その取引は取引履歴と呼ばれるすべての取引のログに記録される
- 取引履歴には支店コード、口座番号、記帳 (記録) 日付、取引タイプ識別コード、特定の取引に対する補足説明、および取引金額など、各取引についての詳細な情報が保存される
- 現金預金、クレジットカード支払、口座間の送金など、様々な取引が取引タイプで識別される
これらのビジネスルールを図解したものが次のエンティティ関連図です。
![]()
図 1    データベーススキーマ
次に示すのはデータベースモデルから作成された表定義です。主キー列は太字、外部キー列は斜体で示されます。
ACCOUNT_TYPE
ACCTYPE_ID
CHAR(3)
NOT NULL
3 桁の口座タイプコード
ACCTYPE_DESC
VARCHAR(30)
NOT NULL
口座タイプの説明
ACCTYPE_INTERESTRATE
DECIMAL(4,2)
DEFAULT 0.0
年利
TRANSACTION_TYPE
TRANSTYPE_ID
CHAR(4)
NOT NULL
4 桁の取引タイプコード
TRANSTYPE_DESC
VARCHAR(40)
NOT NULL
取引コードの説明
アプリケーション間の移動とロジック
   アプリケーション間の移動についての上位レベルビュー
![]()
   詳細なアプリケーションロジック
- ログインの手順
![]()
- 詳細情報の表示 / 編集
![]()
- 口座一覧と取引履歴
![]()
- 資金振替
![]()
- 利息計算
![]()
アプリケーションコンポーネント
- データコンポーネント
データベーススキーマの各表はエンティティ Bean としてカプセル化されます。
エンティティ Bean
データベーステーブル
Account
ACCOUNT 表
AccountType
ACCOUNT_TYPE 表
Branch
BRANCH 表
Customer
CUSTOMER 表
Transaction
TRANSACTION_HISTORY 表
TransactionType
TRANSACTION_TYPE 表
ほとんどすべてのエンティティ Beans がコンテナ管理による持続性 (CMP) を使用します。ただし Customer は例外で、Bean 管理による持続性 (BMP) を使用します。
現在アプリケーション側では Account、AccountType、Branch、および Customer beans だけを使用しています。
- ビジネスコンポーネント
アプリケーションのビジネスコンポーネントはセッション Beans でカプセル化されます。
InterestCalculator Bean はステートレスセッション Bean であり、資金計算をカプセル化します。projectEarnings() メソッドによる複利計算で使用されます。
- アプリケーションロジックコンポーネント (サーブレット)
- プレゼンテーションロジックコンポーネント (JSP ページ)
移行時に発生する問題を考慮した最適な設計の選択
アプリケーションの設計については、特に「実際の」コンテキストで議論すべきものが多いのは確かですが、一般的な J2EE アプリケーションの移行で発生する可能性がある問題を、サンプルアプリケーションでできるだけ網羅することも考慮する必要があります。
このセクションでは J2EE アプリケーションの移行時に発生する可能性がある問題を検討し、移行時にこれらの問題をチェックするために iBank に用意されているコンポーネントについて説明します。
選択された移行を処理するための次のテクノロジーに焦点を当てて説明します。
サーブレット
- iBank にはサーブレットがいくつか用意されており、以下についての潜在的な問題を特定できます。
- サーブレット API の一般的な機能の使用
- HTTP セッションおよび HTTP 要求の属性の保存または取得
- サーブレットコンテキスト初期化パラメータの取得
- ページのリダイレクト
Java Server Pages
JDBC
iBank アプリケーションは接続プールおよびデータソース経由でデータベースにアクセスします。BMP エンティティ Bean、BankTeller セッション Bean、カスタムタグライブラリでアクセスロジックをプログラミングすることもでき、CMP エンティティ Beans でアクセス方法を宣言することもできます。
Enterprise Java Beans (EJB)
iBank では様々な Enterprise Java Beans を使用しています。
エンティティ Beans :
Bean 管理による持続性 (Customer Bean) では、次のテストが可能です。
コンテナ管理による持続性 ("Account" および "Branch" Beans) では、次のテストが可能です。
開発ツールを使用する、配備記述子内のオブジェクトとリレーショナル間の (O/R) マッピング
Account Bean とその findOrderedAccountsForCustomer() メソッドを使用するカスタム CMP 検索の定義。これによって配備記述子のクエリロジック宣言の差異を確認し、オブジェクト集計を返す場合の複雑な例を見ることができる
セッション Beans :
ステートレスセッション Beans。InterestCalculator では次のテストが可能です。
ステートフルセッション Beans。BankTeller では次のテストが可能です。
アプリケーションのパッケージ化