...

Feature Pack for Modern Batch / SCA 1 ISE Webアプリケーション基盤

by user

on
Category: Documents
288

views

Report

Comments

Transcript

Feature Pack for Modern Batch / SCA 1 ISE Webアプリケーション基盤
Feature Pack for
Modern Batch / SCA
ISE Webアプリケーション基盤
高浜 めぐみ([email protected])
1
08.Feature Pack for Modern Batch / SCA
Disclaimer
„ この資料は日本アイ・ビー・エム株式会社ならびに日本アイ・ビー・エム システムズ・エンジニアリ
ング株式会社の正式なレビューを受けておりません。
„ 当資料は、資料内で説明されている製品の仕様を保証するものではありません。
„ 資料の内容には正確を期するよう注意しておりますが、この資料の内容は2010年12月現在の情
報であり、製品の新しいリリース、PTFなどによって動作、仕様が変わる可能性があるのでご注意
下さい。
„ 今後国内で提供されるリリース情報は、対応する発表レターなどでご確認ください。
2
WAS V7 最新動向Workshop
2
08.Feature Pack for Modern Batch / SCA
Agenda
§1. Feature Pack for Modern Batch
1.
2.
3.
4.
5.
Javaバッチの背景
Feature Pack for Modern Batchとは
基本コンポーネント
バッチ要件ごとの提供機能
Feature Pack for Modern Batchの開発
§2. Feature Pack for SCA
1. Open SCAとは
2. Feature Pack for SCA概要
(参考)Feature Pack for XML
3
WAS V7 最新動向Workshop
3
08. Feature Pack for Modern Batch / SCA
§1. Feature Pack for Modern Batch
4
WAS V7 最新動向Workshop
4
08.Feature Pack for Modern Batch / SCA
Javaバッチの背景
„
既存資産に対応可能な技術者の減少
– 従来のバッチ処理は、COBOL、PL/Iなどが中心
– これらのスキル保有者減少によりメンテナンスが困難
„
新規システム構築時の課題
– 開発言語を統一化したい(複数開発言語の担当者が必要)
Javaバッチにすると
Javaバッチにすると
オンラインもバッチもJava開発担当者
オンラインもバッチもJava開発担当者
– オンライン処理システムとの連携が困難
Javaバッチにすると
Javaバッチにすると
„
Javaの台頭
– Java実行性能の向上
– 大規模開発における実績
オンライン処理との連携が容易
オンライン処理との連携が容易
オンラインバッチでのコンポーネント共有が可能
オンラインバッチでのコンポーネント共有が可能
オンライン処理のバッチ化、バッチ処理のオンライン化が可能
Javaでバッチ処理を実装しよう!
5
WAS V7 最新動向Workshop
Javaバッチ処理登場には以下の3つの背景があります。
・既存資産に対応可能な技術者の減少
・新規システム構築時の問題
・Java実行性能の向上
5
08.Feature Pack for Modern Batch / SCA
Feature Pack for Modern Batch(FP Batch)とは
„ JavaEEアプリケーション・サーバー(WAS)を活用した、バッチ/グリッド・アプリ
ケーション実行エンジン
– 以下の形態のプログラム実行をサポート
• トランザクション・バッチ
• 数値計算型(CI:Compute Intensiveアプリケーション)
– ジョブ受付とジョブ実行のサーバーを分離、非同期に処理を実行
• ジョブ受付/ジョブ割振サーバー:ジョブ・スケジューラー
• JavaEEバッチ実行環境サーバー:グリッド・エンドポイント
„ POJOによるバッチアプリケーション開発
– 最低限必要なコーディングはジョブ実装部分のPOJO開発のみ
トランザクション・バッチ
数値計算型
Feature Pack for Modern Batch
WebSphere Application Server V7
6
WAS V7 最新動向Workshop
Feature Pack for Modern Batch(以降、FP Batch)はJavaEEアプリケーション・
サーバー(WAS)を活用したバッチ/グリッド・アプリケーションの実行エンジンを提供し
ています。トランザクション・バッチと数値計算型の2つのタイプのアプリケーション・プ
ログラム実行をサポートしています。
バッチアプリケーション開発における最低限必要なコーディングはジョブ実装部分の
みでPOJO開発となっています。
6
08.Feature Pack for Modern Batch / SCA
サポートするバッチ・アプリケーションの種類
トランザクション・バッチ型
(J2EE-Batch)
入力
データ
次行読み込み
(Batch Loop)
J2EE Long-Running
プログラミング・モデル
データを読み込んでは処理を行い、
書き込むことを繰り返し行う構造の
アプリケーション
例)日次処理、月次処理など
データ
読み込み
バッチ・
ロジック
(Step1)
数値計算型(CI)
(Compute-Intensive)
データ
分割1
非同期実行
計算データ
UOWコミット
(チェックポイント
取得)
出力
データ
次行読み込み
(Batch Loop)
CPUを長時間大量消費して計算
を行い、結果を非同期に出力する
構造のアプリケーション
例)科学技術計算・金融シミュレー
ションなど
非同期実行
データ
読み込み
バッチ・
ロジック
(Step2)
UOWコミット
(チェックポイント
取得)
非同期実行
7
WAS V7 最新動向Workshop
FP Batch がサポートするバッチ・アプリケーション・タイプは2種類になります。J2EE
を利用したLong-Runningプログラミング・モデルです。
①トランザクション・バッチ型(J2EE-Batch)
入力データを読み込んでは処理を行い、処理結果データをファイルもしくはDBへ書
き込むというトランザクションを繰り返し行うタイプのアプリケーションです。日次処理、
月次処理などに代表されるいわゆるバッチ処理がこれにあたります。Entity EJB
(CMP) をベースにしたプログラミング・モデルとなります。
②数値計算型(CI)(Compute-Intensive)
CPUを大量消費して長時間にわたる計算処理を行い、その結果を非同期に出力す
るタイプのアプリケーションです。科学技術計算・金融シミュレーションなどのようなも
のに代表され、入力データを分割して大量のサーバーで計算処理を実行させるいわ
ゆるGrid的なアプリケーションがこれにあたります。Asnyc Bean をベースにしたプロ
グラミング・モデルとなります。
7
08.Feature Pack for Modern Batch / SCA
基本コンポーネントとリクエスト・フロー
基本コンポーネント
Deployment
Manager
(DM)
・コマンド行インターフェース(lrcmd)
・ジョブ管理コンソール
・EJB インターフェース
・Web Services インターフェース
JOB01.ear
グリッド・エンドポイント
LongRunningScheduler.ear
ジョブ・スケジューラー
xJCL
JOB01.ear
グリッド・エンドポイント
ジョブ情報を記
述したファイル
クラスター
or 単体サーバー
:
クラスター
or 単体サーバー
ジョブ情報
ジョブ・データ
ベース
リクエスト・フロー
Client
Submit
<Job ID>
Finished ?
Finished ?
Finished !
8
チェックポイント情報
Job Scheduler
Grid Endpoint
Dispatch
Result
Execute
WAS V7 最新動向Workshop
基本のコンポーネントは上記のようになります。リクエストの受付・ディスパッチングを行うジョブ・スケ
ジューラー、ジョブ実行エンジンであるグリッド・エンドポイントはそれぞれ単体サーバーもしくはクラス
ターに構成できます。典型的な構成はジョブ・スケジューラーが単体もしくは2台程度のクラスターで、
グリッド・エンドポイントがクラスター構成となります。
ジョブ・スケジューラー、グリッド・エンドポイントともにジョブの状態管理などのためにDBを使用します。
それぞれ単体構成であれば自動的にWAS付属のDerbyを使用した構成となります。複数サーバーか
らアクセスするクラスター構成の場合、Derbyのネットワーク・サーバー環境を使用してDBを作成する
か、DB2/OracleのDBMSを使用して構成します。必要なDDLなどは製品導入ディレクトリで提供され
ます。
クライアントはグリッド・エンドポイントには直接アクセスせず、ジョブ・スケジューラーに対してリクエスト
を投げます。クライアントはCUIのコマンド(lrcmd)、GUIのブラウザー画面(ジョブ管理コンソール)を
選ぶことが出来ます。ジョブ・スケジューラーの受付プログラムはEJBのシステム・アプリケーションであ
り、そのアプリケーションに対するWebサービスのラッパーが提供されているので(lrcmdなども内部で
これらのアプリケーションにアクセスしています)、EJBもしくはWebサービスのAPIを使用してクライア
ント・アプリケーションを自作することも可能です。
ジョブを実行する場合のリクエストは、クライアントからいずれかのインターフェースを使用してジョブ・
スケジューラーに対してリクエストが投げられます。その際に、ジョブ実行に必要なパラメーター群を
XMLファイルで渡します。このXMLはXMLベース・ジョブ管理言語、『xJCL』と呼ばれます。ジョブ・ス
ケジューラーはクライアントに対し、ジョブIDと呼ばれる一意の値をリクエスト受領の旨として返します。
ジョブ・スケジューラーはその後空いているグリッド・エンドポイントを探し、ジョブの実行を依頼します。
ジョブが完了すると結果はジョブ・スケジューラーに通知されるのですが、クライアント側には通知され
ません。従ってクライアントは定期的に終了したかどうかを確認する必要があります。
8
08.Feature Pack for Modern Batch / SCA
バッチで必要とされる要件
ジョブ実行制御機能
(コントローラー)
Controller
Interface
入力処理
ファイル
ファイル
スケジューリング
機能
業務処理
JOB
出力処理
ファイル
ファイル
Status
ジョブ機能
呼び出し用イン
ターフェース
ジョブ実行環境
状態管理機能/
障害対応
FP Batch提供部分
9
WAS V7 最新動向Workshop
バッチ処理で必要とされる要件をまとめました。
9
08.Feature Pack for Modern Batch / SCA
ジョブ実行制御機能とジョブ実行環境
„
WASv7 FP Batch セル
ジョブ・スケジューラー
–
–
–
–
インターフェースからのジョブ受付
グリッド・エンドポイントへのジョブ割り振り
ジョブ情報をデータベースに保存
管理コンソールからホストするクラスター/
サーバーを指定
Deployment
Manager
ジョブ受付
xJCL
„
グリッド・エンドポイント
– バッチ・アプリケーションの実行環境
•
•
ジョブ・スケ
ジューラー
クラスター
or 単体サーバー
トランザクション・バッチ型と数値計算型のア
プリケーションが共に稼動
通常のJavaEEアプリケーションと共存可能
– チェックポイント情報(ジョブ実行状況)を
データベースに保存
グリッド・
エンドポイント
グリッド・
エンドポイント
:
クラスター
or 単体サーバー
ジョブ情報
チェックポイント情報
ジョブ・データ
ベース
10
WAS V7 最新動向Workshop
ジョブ・スケジューラーではジョブ実行制御機能を提供しています。管理インター
フェースからxJCLファイルと共にジョブを受付け、グリッド・エンドポイントに対してジョ
ブを割り振ります。受け付けたジョブの情報や状態はジョブ・データベースに保存しま
す。
WAS管理コンソールからジョブ・スケジューラーをホストさせるクラスター/単体サー
バーを指定することで、該当するサーバーにLongRunningScheduler.ear
がデプロイされジョブ・スケジューラーとして稼動します。
グリッド・エンドポイントではバッチ・アプリケーションの実行環境を提供します。トラン
ザクション・バッチ型と数値計算型のアプリケーション稼動が可能ですが、通常の
JavaEEアプリケーションも同一サーバー上で稼動させることができます。
グリッド・エンドポイントで稼動するバッチ・アプリケーションはチェックポイント情報
(ジョブの実行状況)をジョブ・データベースに保存します。
10
08.Feature Pack for Modern Batch / SCA
xJCL(XML-based Job Control Language)とは
„
ジョブの定義/実行手順(JCL=Job Control Language)をXMLで記述
–
–
–
xJCLをもって、ジョブ・スケジューラーへジョブの実行依頼
ジョブ・スケジューラーはxJCL情報をグリッドエンドポイントへ渡してジョブをディスパッチ
グリッドエンドポイントは、xJCL定義に従ってディスパッチされたジョブを実行
Client
xJCL
Job Scheduler
Grid Endpoint
Submit
Dispatch
<Job ID>
Result
Execute
„
可変パラメーター(変数)を使用可能
–
–
„
バッチ・アプリケーションの種類によりxJCLのエレメントは異なる
–
–
11
ジョブ・サブミット時に変数の値を指定
入出力ファイル名、チェックポイント間隔等を変数指定可能
トランザクション・バッチ型
数値計算(CI)型
WAS V7 最新動向Workshop
ホストを触ったことがある方であればなじみがあると思いますが、ホストでは実行ジョ
ブの定義と実行手順を記述したものにJob Control Language (JCL)があります。
FP Batch では、ジョブの定義と実行手順はxJCLとよばれる XMLベースのJCLで記
述します。
xJCLへは、ジョブの名前、JNDI名と実装クラス名、ジョブの実行順序、そのほかジョ
ブの実行制御に関わるパラメータとプロパティを記述します。
以下のように、ジョブのサブミット、ジョブの実行環境へのディスパッチ、ジョブの実行
は、すべてxJCLに書かれている定義に従って実施されることになります。
①クライアントは、スケジューラーに対してxJCLをもってジョブを実行依頼します。
②スケジューラーは、サブミットされたxJCLの定義に従い、該当のジョブを処理可能
な実行環境を選択し、ディスパッチします。
③グリッド実行環境も、xJCLの定義に従い、サブミットされたジョブに該当するアプリ
ケーションを実行します。
バッチ・アプリケーションの種類によりサポートされるxJCLのエレメント、すなわちXML
のSchemaが異なっていますので注意してください。
続く2ページで、各アプリケーションの種類ごとのサンプルxJCLを載せていますので、
参考にしてください。
11
08.Feature Pack for Modern Batch / SCA
(参考)サンプルxJCL – トランザクション・バッチ型
job
step-scheduling-criteria
checkpoint-algorithm
result-algorithms
job-step
batch-data-streams
12
<?xml version="1.0" encoding="UTF-8"?>
<job name="BatchTest" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<jndi-name>ejb/BatchTestEJBController</jndi-name>
<step-scheduling-criteria>
チェックポイント・ア
<scheduling-mode>sequential</scheduling-mode>
ルゴリズムの記述
</step-scheduling-criteria>
<checkpoint-algorithm name="recordbased">
<classname>com.ibm.wsspi.batch.checkpointalgorithms.recordbased</classname>
<props>
チェックポイント・アル
<prop name="recordcount" value="1000" />
<prop name=“TransactionTimeOut" value="1000" />
ゴリズムのプロパティ
</props>
</checkpoint-algorithm>
<results-algorithms>
リザルト・アルゴ
<results-algorithm name="jobsum">
<classname>com.ibm.wsspi.batch.resultsalgorithms.jobsum</classname> リズムの記述
</results-algorithm>
</results-algorithms>
リザルト・アルゴリ
<job-step name="Step1">
ズムのクラス名
<jndi-name>ejb/BTStep1EJB</jndi-name>
<checkpoint-algorithm-ref name="recordbased" />
<results-ref name="jobsum"/>
バッチステップ
<props>
Bean のJNDI名
<prop name="LOG_LEVEL" value="2" />
</props>
<batch-data-streams>
<bds>
BDSのクラス名
<logical-name>step1bds-in</logical-name>
<impl-class>com.ise.sample.batchtest.bds.BTStep1_BDS_IN</impl-class>
<props>
<prop name="INPUT_FILENAME" value=“/work/data/BT01IN_1000000.txt" />
</props>
</bds>
BDSに渡すプロパティー
<batch-data-streams>
</job-step>
<job-step name=“Step2”>
・・・
</job-step>
</job>
WAS V7 最新動向Workshop
xJCLへは、バッチ・アプリケーションに含まれているバッチ・ステップの実行定義
(JNDI名と実装クラス名)、実行順序、そしてチェックポイント・アルゴリズムの挙動など、
ジョブの実行制御に関係ある記述をします。
最も大きなエレメントとして、jobがあります。その中に、step-scheduling-criteria、
checkpoint-algorithm、result-algorithmsおよびjob-stepなどのエレメントが含まれま
す。job-stepエレメントの中にはbatch-data-stream要素が含まれます。その他に、
バッチ型では複数バッチ・ジョブ・ステップがサポートされますので、このサンプルで
は詳細を見せていないため有りませんが、ジョブ内に複数バッチ・ジョブ・ステップを
定義している場合には、step-schedulingエレメントというものでバッチ・ジョブ・ステッ
プの実行の可否を判断するものも有ります。
12
08.Feature Pack for Modern Batch / SCA
(参考)サンプルxJCL – 数値計算(CI)型
実行するCIController
(SLSB)のJNDI名
job
job-step
13
<?xml version="1.0" encoding="UTF-8"?>
<job name="SimpleCIEar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<jndi-name>ejb/com/ibm/ws/ci/SimpleCIEJB</jndi-name>
<job-step name="Step1">
実行する
<!-- classname element within the job-step indicates this is a CI application -->
CIWorkクラス名
<classname>com.ibm.websphere.ci.samples.SimpleCIWork</classname>
<!-- following element is used to pass properties (name-value pairs) to CI application -->
<props>
<prop name="calculationTimeInSecs" value="30" />
SimpleCIWork
<prop name="outputFileName" value="/tmp/SimpleCI.out" />
に渡すプロパティー
</props>
</job-step>
</job>
WAS V7 最新動向Workshop
基本的な大枠はCI型でもバッチ型と同様ですが、CI型でサポートされるバッチ・ジョ
ブ・ステップ数は1ステップのみとなっており、またチェックポイント機能などもないた
め、ジョブの実効制御に関わる定義の数も少なくなっています。サンプルを見ても、
非常にシンプルであることがわかると思います。
13
08.Feature Pack for Modern Batch / SCA
状態管理機能/障害対応
„ ジョブ実行時にエラーが発生した際の対応
– 最初からのジョブ再実行
• 大量データ処理では非現実的
• 実行時間帯が決まっている場合は適さない
– 未完了部分からの再実行
• どこまでの処理が完了しているかステータス確認して、ジョブ再実行
• 処理ステータスをDBに保存
1件ごとに完了ステータスを書き込むのはパフォーマンスが悪いため、再
実行単位でチェックポイントのステータスを書き込む。チェックポイントから、
ジョブを再実行
チェックポイント/リスタート機能
チェックポイント/リスタート機能
14
WAS V7 最新動向Workshop
ジョブ実行時にエラーが発生した場合、どのような処理が必要になるでしょうか?一
つは完了処理を全てロールバックし、最初からのジョブ再実行が考えられますが、オ
フラインバッチのように実行時間帯が決まっている上に大量データ処理では、時間が
かかりすぎるために非現実的です。
最初からではなく、未完了部分からの再実行が効率的です。エラー発生時にどこま
での処理が完了しているかステータスを確認しジョブを再実行します。処理完了のス
テータスはデータベースやファイル等に保存しておく必要があります。1件の処理ごと
に完了ステータスを書き込むのはパフォーマンスの悪化をまねくため、一定の件数ご
とにチェックポイントとしてステータスを書き込み、エラー発生時にはチェックポイント
からジョブを再実行するのが一般的です。
FP Batchでは「チェックポイント/リスタート機能」として提供されています。
14
08.Feature Pack for Modern Batch / SCA
チェックポイント/リスタート機能
„
„
„
指定された間隔で処理済みレコード数をチェックポイントとしてDBに保管
トランザクションが開始後、チェックポイント取得時に処理済レコード(UOW)をコミット
FP Batchでは製品機能として提供されており、2つのチェックポイント・アルゴリズムを提供
–
–
timebased(秒指定) / recordbased(レコード数指定)
xJCLファイルで指定
checkpoint-algorithm
checkpoint-algorithm
=com.ibm.wsspi.batch.checkpointalgorithms.recordbased
=com.ibm.wsspi.batch.checkpointalgorithms.recordbased
recordcount
recordcount
=10
=10
file
file
Batch1
Batch2
DB
DB
ACCOUNT
トランザクション開始
ACCOUNTID
UOW
チェックポイント取得
ロールバック
障害発生
15
ファイルから読み込ん
だデータをDBに書き
込む処理
OVERDRAFTPROTECTION
OVERDRAFTUSED
BALANCE
更新
1000
0
0
更新
1001
0
0
62.0
更新
1002
0
0
563.0
更新
1003
300
0
504.00
更新
1004
0
0
437.00
更新
1006
0
0
1010.00
更新
1008
500
0
983.00
更新
1009
0
0
811.00
更新
1010
0
0
553.00
更新
1011
0
0
1251.00
更新
1014
0
0
730.00
更新
更新
1015
0
0
736.00
更新
更新
1016
100
0
198.00
更新
133.00
トランザクション開始
再実行時は
ここから再開
WAS V7 最新動向Workshop
チェックポイント/リスタート機能について解説します。チェックポイント機能とは、バッ
チが障害などの理由で途中停止した場合に備えて指定タイミングで定期的にコミット
を取り、その進捗を記録することで、回復時に再実行可能な状態にしておく機能で
す。リスタート機能はチェックポイントの情報を読み取り、再実行された際に最後にコ
ミットしたレコードの次の行からの処理を行う機能です。
FP Batchでは製品機能として提供されています。チェックポイントのコミット・タイミン
グの指定は、xJCL内部のcheckpoint-algorithmで指定します。指定可能なアルゴリ
ズムは上記例にある“recordbased”(処理行数)の他に、“timebased”(処理秒数)
指定が可能です。ジョブステップの単位で異なるチェックポイント・アルゴリズムを指
定することも出来ます。しかし、チェックポイント指定の単位、すなわち最大UOWの
単位はジョブではなくステップですので、三つのステップを内在するジョブでは最小
でも三つのUOWに分かれることに注意してください。上記の例は、チェックポイントを
recordbasedで10行単位と指定し、障害が起きた場合の挙動を示しています。
15
08.Feature Pack for Modern Batch / SCA
(参考)バッチ・ジョブに関連するタイムアウト値
トランザクション・タイムアウト
トランザクション・タイムアウト
バッチ・ジョブ実行時のグローバル・トランザクションのタイムアウト値。
ジョブ実行のフェーズにより、使用されるタイムアウト値が異なる(後述)
・合計トランザクション・タイムアウト
・xJCL内 TransactionTimeOut 値
ジョブ・スケジューラーが使用するトランザ
クションのタイムアウトには、合計トランザ
クション・タイムアウトが使用される。
トランザクション・タイムアウトを超えた場合は、当該トランザクションは
ロールバックされ、バッチ・ジョブは異常終了する
ジョブ・スケジューラーでのジョブの実行依
頼などのトランザクションと、グリッドエンド
ポイントでのジョブの実行自体のトランザク
ションは別なので、問題となることは少ない
データ・ソース側でのタイムアウトをWASでハンドルできるよう、DBの
ロック・タイムアウトより長い値を設定する
グリッド・
エンドポイント
lrcmd.sh[bat]
ジョブ・
スケジューラー
Application
DB
グリッド・
エンドポイント
ロック・タイムアウト
ロックの取得を待機する時間
デフォルト値:無制限(-1)
ジョブ・
データベース
16
通常時の最大処理時間より
長い必要がある
WAS V7 最新動向Workshop
上図では、バッチジョブの実行に関わるタイムアウト値を図示しました。
ジョブ・スケジューラーが使用するトランザクション・タイムアウトには、WASの合計トラ
ンザクション・タイムアウトの値が使用されます。ジョブ・スケジューラーのトランザクショ
ンは、ジョブ実行とは別のトランザクションですので、通常は問題となることはありませ
ん。
グリッド・エンドポイントで、バッチ実行の際に適用されるトランザクション・タイムアウト
値はジョブの実行フェーズにより、使用されるタイムアウト値が異なりますので、注意
が必要です(次ページ)。
トランザクション・タイムアウトが発生した場合には、当該トランザクションはロールバッ
クされ、バッチ・ジョブは異常終了します。
なお、データ・ソース側でのタイムアウトをWASでハンドルできるよう、DBのロック・タ
イムアウトよりは長い値を設定します。
DB2のロック・タイムアウトは、ロックの取得を待機する時間です。先に実行中の処理
が保持しているロックが開放されるのを待機する時間ですので、通常時の想定最大
処理時間よりは長く設定する必要があります。
16
08.Feature Pack for Modern Batch / SCA
(参考)バッチ・ジョブに関連するトランザクション・タイムアウト
begin tx
initialize()
初期化フェーズ
„
open()
positionAtInitialCheckpoint()
createJobStep()
commit tx
begin tx
externalizeCheckpointInfomation()
commit tx
begin tx
ジョブのフェーズにより、有効な
トランザクション・タイムアウト値が異なる
① 初期化フェーズ
•
9
–
–
intermediateCheckpoint ()
processJobStep()
実行フェーズ
externalizeCheckpointInfomation()
commit tx
begin tx
当該ジョブのディスパッチされたASの
『合計トランザクション・タイムアウト』
が有効
xJCLが読込まれる前のフェーズであるため
デフォルト 120秒
BDSの初期化処理などに時間がかかる場合には注意が必要
② 実行フェーズ、終了フェーズ
•
xJCL内、checkpoint-algorithmの属性として指定
intermediateCheckpoint ()
processJobStep()
externalizeCheckpointInfomation()
commit tx
begin tx
intermediateCheckpoint ()
destroyJobStep()
<checkpoint-algorithm name=“recordbased”>
<classname>com.ibm.wsspi.batch.checkpointalgorithms.recordbased</classname>
<props>
<prop name=“recordcount” value=“100” />
<prop name=“TransactionTimeOut” value=“30” />
</props>
– xJCL内で指定しない場合は、デフォルトの60秒 が使用される
</checkpoint-algorithm>
終了フェーズ
close()
externalizeCheckpointInfomation()
commit tx
17
WAS V7 最新動向Workshop
バッチ・ジョブ実行時に参照されるトランザクション・タイムアウト値は、ジョブのフェー
ズにより異なります。
BDSのinitializeやJobStepBeanのcreateJobStepなどが呼び出される初期化フェー
ズでは、xJCLが読み込まれる前のフェーズであるため、WASの合計トランザクショ
ン・タイムアウトの値(デフォルト120秒)が使用されます。BDSの初期化などで重い
処理を行っている場合には注意が必要です。
一方、xJCL読み込み後のトランザクション・タイムアウトの値には、チェックポイント・ア
ルゴリズムのプロパティとして指定するTransactionTimeOutの値が使用されます。
明示的に指定していない場合は、暗黙的に設定されているデフォルト値60秒が使
用されます。このTransactionTimeOutを超える間隔でチェックポイントを取得しようと
しても、トランザクションがロールバックされバッチジョブが異常終了しますので、注意
が必要です。
17
08.Feature Pack for Modern Batch / SCA
呼び出し用インターフェース
• GUIツール
- ジョブ管理コンソール(JMC)
• コマンドライン
- lrcmd
• API
- EJB Clients
- Web Services clients
グリッド・
エンドポイント
xJCL
xJCL
ジョブ・
スケジューラー
クラスター
or 単体サーバー
18
グリッド・
エンドポイント
:
クラスター
or 単体サーバー
WAS V7 最新動向Workshop
FP Batchで提供されている呼び出し用インターフェースです。ジョブ実行以外にも
ジョブ・ステータスの確認等を行う管理インターフェースとなります。
GUIツールとして、Job 管理コンソール(JMC)があります。そして、コマンドライン・
ツールとして、lrcmd があります。また、リモートからのEJBコールとWebサービス・
コールが可能なAPIも提供されています。
18
08.Feature Pack for Modern Batch / SCA
ジョブ管理コンソール(JMC)
„ ジョブ実行及び管理をブラウザ・ベースで実施
– xJCLファイルを指定したジョブのサブミット
– 実行ジョブの状態表示
• 実行ジョブに対するアクション(取り消し、除去、再始動、再開、停止、中断)
• ジョブログの表示
http://localhost:9080/jmc/console.jsp
19
WAS V7 最新動向Workshop
ジョブ管理コンソールでは、ジョブの実行及び管理をブラウザ・ベースで実施すること
ができます。WASの管理コンソールとは別に提供されており、以下のURLにアクセス
します。ジョブ管理コンソールは、ジョブ・スケジューラー上で稼動するアプリケーショ
ンなので、ホスト名/ポート番号にはジョブ・スケジューラーの値を指定します。
http://<host_name>:<port#>/jmc/console.jsp
ジョブ管理コンソールではあらかじめ用意したxJCLファイルと共にジョブのサブミット
を実行することができます。xJCLファイルに変数が使用されている場合は、値入力も
行います。
グリッド・エンドポイントで実行中(完了)のジョブの状態を表示し、「取り消し/除去/再
始動/再開/停止/中断」のアクションを施すことができます。
19
08.Feature Pack for Modern Batch / SCA
lrcmd
„ 基本のコマンド・ライン・ツール
– ジョブに対する全ての操作が可能
– JavaEEクライアント・アプリケーションとして実装されている
• ジョブの実行依頼をしてもジョブの終了まで待たない
– TWS(TivoliWorkloadScheduler)など外部スケジューラー連携の場合には、工夫
が必要(後述)
• コマンド実行毎にJVMが起動
– ステータス確認などのため、繰返し実行するにはオーバーヘッドが大きい
ジョブの実行依頼
C:¥WebSphere¥AppServer¥bin>lrcmd.bat -port=9080 -cmd=submit -xJCL=..¥longRunning¥postingSampleXJCL.xml -userid=wasadmin -password=passw0rd
CWLRB4940I: com.ibm.ws.batch.wsbatch : -port=9080 -cmd=submit -xJCL=..¥longRunning¥postingSampleXJCL.xml -userid=wasadmin -password=********
CWLRB4960I: Thu Oct 25 13:52:12 JST 2007 : com.ibm.ws.batch.wsbatch : ジョブ [PostingsSampleEar:10] がサブミットされます
。
ジョブのステータス確認
C:¥WebSphereXD¥AppServer¥bin>lrcmd.bat -port=9080 -cmd=status -jobid=PostingsSampleEar:10 -userid=wasadmin -password=passw0rd
CWLRB4940I: com.ibm.ws.batch.wsbatch : -port=9080 -cmd=status -jobid=PostingsSampleEar:10 -userid=wasadmin -password=********
CWLRB5160I: Thu Oct 25 13:53:48 JST 2007 : ジョブ [PostingsSampleEar:10] の実行は終了しました。
20
WAS V7 最新動向Workshop
lrcmdはジョブの実行および管理を行うコマンド・ライン・ツールです。ジョブ管理に関
わる一通りの操作が可能です。
先にも述べましたが、lrcmdコマンドはジョブのサブミットを行っても、当該ジョブのサ
ブミット処理が終了するとジョブIDを返して直ぐに抜けてしまい、ジョブの成否を待ち
ません。したがって、ジョブの成否は改めてlrcmdからステータス確認のコマンドを実
行するか、ジョブ管理コンソールから確認する必要があります。
lrcmdはJ2EEクライアント・アプリケーションとして実装されており、コマンドの実行毎
にJVMが起動/停止します。lrcmdのステータス確認コマンドをポーリングなどの用途
に使用するには実行するにはオーバーヘッドが大きくなり、注意が必要です。コマン
ドの実行毎にJVMが起動しますので、外部スケジューラーにより同時に複数のlrcmd
コマンドがキックされた際にも、複数のJVMが同時に起動し、マシン・リソースを浪費
してしまうことがありますので注意が必要です(連携シェル内で一度に起動できる
lrcmdコマンドの数を制限するなどが現実的な対応です)。
20
08.Feature Pack for Modern Batch / SCA
スケジューラー
„
FP Batchではスケジューラー機能を提供していない
スケジューラー製品を利用するかどうか?
„
スケジューラーの役割
– 様々な起動条件での稼動
•
•
•
21時ジョブ
起動
時間起動
ファイルが生成されたら起動
複数ジョブの依存関係
JobAが完了した
らJobB実行
ファイル検
知で起動
JobA
JobB
– 稼動状況のモニタリング、異常時の通知
•
•
•
„
オフラインバッチの数十個のジョブの稼動状況確認
予定時間にジョブCが終了していない場合の原因特定
異常時の画面通知やメール送信
製品を利用しないと実装困難
スケジューラー製品
– IBM TWS(Tivoli Workload Scheduler)
– 日立 JP1
„
スケジューラー製品を利用しないケース
– 数個~10個のジョブ数で、処理制御が複雑でないケース
– UNIX系環境では、シェルとcronで制御することが多い
– Java EEアプリケーションでの実装(Async Bean / EJB Timer)
•
21
管理インターフェースのEJBやWebサービスのAPIを使用
WAS V7 最新動向Workshop
バッチ実行にはスケジューラーが必要となりますが、FP Batchでは機能提供されて
いません。そこで、スケジューラー機能をどう実装するかを検討する必要があります。
スケジューラーの役割として重要なのは「様々な起動条件での稼動」と「稼動状況の
モニタリング、異常時の通知」です。
スケジューラーの実装を検討する際に、まずは製品を使用するかどうかという判断が
必要になりますが、スケジューラーに要求される機能は判断ポイントの一つになりま
す。
スケジューラー製品を利用しない場合、UNIX系環境ではシェルとcronで制御するこ
とが多いのですが、製品を利用しなくとも実装可能かどうかを検討する必要がありま
す。特に稼動状況のモニタリングや異常時に通知を上げるといった機能はスケ
ジューラー製品で提供されていますが、シェルとcronでは実装は困難でしょう。
稼動状況のモニタリングといった機能は大規模システムでの数十個のオフラインバッ
チなどで必要とされる要件です。大規模なオフラインバッチでは製品の採用を検討し、
数個~10個程度のジョブ数で処理制御も複雑でないケースは製品を利用しないの
が一般的です。
21
08.Feature Pack for Modern Batch / SCA
TWS連携
„ lrcmdを利用して連携する場合、連携シェルを作成
– TWS連携シェルに必要な機能
① 実行用xJCLの生成(オプション)
– xJCL内で変数が利用可能
» 実行コマンドの引数として、業務日付など、変数を指定して実行
» xJCLをリポジトリへ事前登録し、実行時に変数を指定
② ジョブの実行依頼
③ ジョブステータスの監視/ジョブ終了の検知
– lrcmdコマンドはジョブの終了を待機しない
» lrcmdまたはSQLの発行などを利用して定期的にジョブ・ステータスをポーリン
グする仕組みを、TWS連携シェルの中に実装する必要がある
④ FP Batchジョブの成否をリターン・コードでTWSへ返す
22
WAS V7 最新動向Workshop
lrcmdコマンドを使用してTWS連携を実装する場合、TWSとFP Batchジョブの連携
に必要な機能は以下のようになります。
①実行用xJCLの生成:xJCL内で変数が使用可能なので基本的には実行時に
xJCLを生成するといった作業は不要です。変数を利用することができず、実行時に
毎回xJCLを生成する必要がある場合のみの処理です。
②ジョブの実行依頼:ジョブ・スケジューラーに対して、ジョブの実行依頼を行います。
③ジョブのステータス監視、終了検知:TWSにバッチ・ジョブの実行結果を戻すため
に、ジョブのステータスを確認する必要があります。lrcmdコマンドはジョブの終了を
待機しないため、連携シェルの中で独自にポーリングの実装を盛り込む必要がありま
す。
④ジョブの成否をリターン・コードでTWSへ返す:最終的なジョブの実行結果をTWS
にリターン・コードとして返す必要があります。
22
08.Feature Pack for Modern Batch / SCA
(参考)TWS連携:lrcmdでの実装例
TWS
シェル名や引数を渡して、ジョブを起動
連携シェルや引数、TWS変数を指定して実行
JOB
①ジョブの実行依頼
レポジトリに登録したジョブ名と置換える変数の値を引数に
指定し、lrcmdコマンドよりジョブ実行依頼
lrcmdのリターンとして、JOBIDを受取る
lrcmd.sh –cmd=submit …
②ジョブのステータス確認
定期的に(1分間隔など)、SQLでジョブ・データベースの
ジョブ・ステータスを直接監視
※lrcmdコマンドでもステータスは確認できるが、コマンド実行
毎にJVMが起動し負荷が高いため注意が必要
ジョブ・スケ
ジューラー
グリッド・エ
ンドポイント
JOB
BatchApp:101
ジョブDB
③リターン・コードを戻す
TWSにジョブの成否を伝える
FP Batchのジョブ・ステータスをそのまま返すか、
シェル自体のリターン・コードを返す
23
select STATUS from LRSSCHEMA.JOBSTATUS
where JOBID= ‘BatchApp:101’
WAS V7 最新動向Workshop
lrcmdでのTWS連携シェルの実装例です。
変数が使えることでxJCLの生成処理は不要であり、xJCLは事前にレポジトリーに登
録しておくことができます。
ジョブの実効依頼は、レポジトリに登録したジョブ名と置換え変数値を引数に渡して
行います。
23
08.Feature Pack for Modern Batch / SCA
FP Batchの実行環境および開発環境
„ 実行環境
– WAS V7.0.0.13にFP Batchを適用
„ 開発環境
– RAD V8.0.1にFP Batchを適用
– Compute Grid Toolsを使用可能
V8.0.1
New
EAR形式でWAS環境にデプロイ
RAD 8.0.1
ComputeGrid Tools
EAR
WAS 7.0.0.13
FP Batch
xJCL
ジョブ実行時にxJCLを使用
24
WAS V7 最新動向Workshop
FP Batchの実行環境および開発環境について説明します。
実行環境はWAS V7.0.0.13以上にFP Batchを適用します。
開発環境はRAD V8.0.1にFP Batchを適用します。RADのテスト環境を使用するた
めに、テスト環境に対してもFP Batchを適用します。
RAD V8.0.1からはバッチ開発用として新たにCompute Grid Toolsが提供されるよう
になりました。次のページで説明します。
RAD V8.0.1で開発したバッチ・アプリケーションはEAR形式でエクスポートし、WAS
環境にデプロイするという流れになります。xJCLファイルは実行時に使用しますが、
RAD V8.0.1で開発しエクスポートしておきます。
24
08.Feature Pack for Modern Batch / SCA
Compute Grid Tools提供機能
バッチ・プロジェクトの生成
„ バッチ・ジョブの生成
„ xJCLエディター
„ バッチPOJO開発機能
„
– コードアシスト
„
ジョブ実行機能
– xJCLファイルから直接ジョブ実行
xJCLエディター
Job Launch
25
WAS V7 最新動向Workshop
Compute Grid Toolsで提供されているバッチ・アプリケーション開発機能は以下に
なります。
•バッチ・プロジェクトの生成/バッチ・ジョブの生成:JavaEEアプリケーションでWebプ
ロジェクト生成のウィザードが提供されているように、「バッチ・ププロジェクト」および
「バッチ・ジョブ」を生成するためのウィザードが提供されています。
•xJCLエディター:XMLベースのバッチ情報を含んだxJCLファイルを設定ベースで
生成するエディターが提供されています。以前は全て作りこみでの生成でしたが、
xJCLエディターを使用することで容易に誤りなく生成が可能になりました。
•バッチ実行部分のPOJO開発を行う際のコードアシスト機能を提供しています。
•ジョブ実行機能:ワークスペースでxJCLファイルから直接ジョブ実行を行うJob
Launchが提供されています。
25
08.Feature Pack for Modern Batch / SCA
バッチアプリケーションのパッケージング
„
BatchJob.EAR
BatchJob.EAR
EAR形式でパッケージング
BatchJobEJBs
– 1EAR = 1ジョブ
– 一つのジョブは単数または複数のバッチ・ステップ
から構成される
•
ejb-jar.xml
Session Beans
BatchJobBatchController
1バッチ・ステップ = 1バッチ・ステップEJB
Entity Beans
„
JOB
STEP
EAR
EJB
STEP
EJB
STEP
EJB
Step1CMP
Step2CMP
主な要素
– バッチ・ジョブ・ステップ
•
Checkpoint DB
実際のビジネス・ロジックをPOJOで実装
POJOStep1
– BDS(バッチ・データ・ストリーム)
•
POJOStep2
バッチ・ジョブ・ステップと入出力データとの間を仲介
– バッチコントローラーBean
•
„
Step1BDS
バッチ・ジョブ・ステップのコントローラー
xJCLを元に自動生成されるコードが多数
– コーディングはバッチ・ジョブ・ステップのみ
26
Step2BDS
入出力
入出力
ファイル
ファイル
データ入出力
テーブル
WAS V7 最新動向Workshop
バッチアプリケーションのパッケージングについて説明します。
バッチアプリケーションはEAR形式でのパッケージングとなり、一つのEARが一つの
ジョブに相当します。一つのジョブは単数または複数のバッチ・ステップから構成され
ますが、一つのバッチ・ステップが一つのバッチ・ステップEJBに相当します。
EARに含まれる主な要素は以下になります。
•バッチ・ジョブ・ステップ:実際のバッチのビジネス・ロジックをPOJOで実装するクラ
スです。ジョブ・ステップごとに生成します。
•BDS(バッチ・データ・ストリーム):バッチ・ジョブ・ステップとファイルやDBといった入
出力データとの間を仲介するコンポーネントです。BDSはフレームワーク化されてお
り、xJCLファイルの定義に従って自動生成されます。
•バッチコントローラーBean:バッチ・ジョブ・ステップのコントローラーで、一つのEAR
に一つ生成されます。
xJCLの定義に基づいて、チェックポイント情報をDBに書き込むEJBのエンティティ
Beanが生成されます。
バッチアプリケーションには多くのコンポーネントが含まれますが、基本的な機能を
使用する上で開発者がコーディングを必要とするのはバッチ・ジョブ・ステップのみで、
多くのコードはxJCLファイルを元に開発ツールによって自動生成することができます。
26
08.Feature Pack for Modern Batch / SCA
FP Batch開発環境の構成イメージ
Rational
Rational Application
Application Developer
Developer V8.0.1
V8.0.1
開発
開発
WebSphere
WebSphere AS
AS V7.0
V7.0
FP
FP Batch(テスト環境)
Batch(テスト環境)
ワークスペース
テスト
テスト
FP
FP Batch
Batch プロファイル
プロファイル
server1
LongRunningScheduler.ear
(バッチ・スケジューラー)
BatchJob.ear
モニター
モニター
LRSCHED
JMC
Derby
Derby
27
WAS V7 最新動向Workshop
Javaバッチ開発環境の構成イメージになります。
Javaバッチ開発環境としては、以下があります。
・Rational Application Develoer V8.0.1(以下、RAD)
エンタープライズ・アプリケーションを効率よく開発するための機能を豊富に備えた統
合開発環境。開発環境にWASのテスト環境も含まれます。
RADテストサーバーに対してFP Batchを導入し、テストサーバーとしてFP Batchの
プロファイルを作成し開発テスト用の実行環境を用意します。
なお、システムアプリケーションが使用するリポジトリーのデータベースも、プロファイ
ルの構成の中でテストサーバーに組み込まれているDerbyデータベースがセットアッ
プされますので、別途リポジトリー用DBを用意する必要はありません。但し、作成す
るバッチ・アプリケーションが使用するアプリケーション・データ用のDBは別途用意し
ていただく必要があります。
作成したアプリケーションのテストは、通常のFP Batchが構成された環境と変わらず、
lrcmdコマンドもしくはジョブ管理コンソール(JMC)から実施します。
27
08.Feature Pack for Modern Batch / SCA
WebSphere XD Compute Gridのご紹介
„ WebSphere ASの上位エディションとして、Javaバッチ実行環境、管理基盤を
提供する製品
„
多様なアプリケーションの混在をサポート
– Java EEでのバッチ系実行環境を提供
– オンライン処理実行環境とバッチ系実行環境の間でサーバー資源を共有し、動的に配置
– サーバー資源の統合管理&仮想化を実現
リソースの仮想化
高度なジョブ制御機能
ネイティブプログラム実行機能
WebSphere XD
Compute Grid 環境
28
WAS V7 最新動向Workshop
WASの上位エディションの位置づけにあり、Javaバッチ実行環境、管理基盤を提供
する製品としてWebSphere XD Compute Grid(WXD CG)を紹介します。
FP Batchと同様にオンライン処理実行環境とバッチ実行環境の間でサーバー資源
の共有を実現します。更にはリソースの仮想化、高度なジョブ制御機能、ネイティブ
プログラム実行機能を提供しています。
28
08.Feature Pack for Modern Batch / SCA
WebSphere XD Compute Gridとの機能比較
„ WXD CGではFP Batch提供機能はすべて提供されている
– バッチ処理を拡張する高機能を提供
FP Batch
インターフェース
„ジョブ管理コンソール
„EJB/Webサービス
API
„lrcmdコマンド
ロギング機能
WXD CG(FP Batchとの差分のみ記述)
„WSGridコマンド
–ジョブ完了までコマンドの終了を待機。ジョブ完了の確認作
業が必要ない。外部スケジューラー連携に有効。
„ジョブログの出力
„ジョブ管理コンソールからの確認
ジョブ実行機能
„通常のJavaクラスの実行
„ネイティブプログラムの実行
„ジョブの並行実行
„半自動でジョブを分割実行する機能(パラレル・ジョブ・マ
„リポジトリーDBに実行情報を格納
„ジョブの優先度や並行処理数、ジョブ実行時間の制御
„ジョブ実行環境に静的にジョブを割り振り
„ジョブ内のジョブステップまでの簡易スケジュール機能を
ネージャー)
ジョブ制御機能
提供(時間指定ジョブの実行など)
„ジョブ実行環境の負荷状況に応じて動的にジョブを割り
振り(WebSphere Virtual Enterpriseと連携)
障害検知・対応機能
„ジョブ・スケジューラー/グリッド・エンドポイント
実行環境
„WAS
29
のクラスタリング構成で対応
„コンテナー管理によるチェックポイント・リスター
ト機能
V7
„WebSphere
XD ComputeGrid V7
WAS V7 最新動向Workshop
WXD CGはFP Batch提供機能については全て提供されています。バッチ処理を更
に拡張する高機能を提供していますが、その機能比較を表一覧に示します。
29
08.Feature Pack for Modern Batch / SCA
FP Batch まとめ
„ FP BatchではJavaバッチ実行環境として必要なコンテナ機能を提供
– スケジューラー機能は提供されていない
„ POJOベースでの開発が可能なプログラミング・モデルの提供
– RAD V8.0.1よりCompute Grid Toolsを提供
WASでサポートされるJavaバッチ環境
容易なプログラミング・モデル
オンライン処理実行環境とバッチ系実行環境の間でサーバー資源を共有
30
WAS V7 最新動向Workshop
30
08. Feature Pack for Modern Batch / SCA
§2. Feature Pack for SCA 1.0.1
31
WAS V7 最新動向Workshop
31
08.Feature Pack for Modern Batch / SCA
Feature Pack for SCA
„ OSOAによって標準化されたOpen SCAをサポート
– Open SCAの実装は複数のコミュニティが開発しているが、WASでは
ApacheプロジェクトのTuscanyを採用
– 現在はOASIS標準へと移行されている
„ SCA(Service Component Architecture)とは・・・
– SOAに基づき、様々なIT資産をサービス・コンポーネントとして捉える
– サービス・コンポーネントの再利用性、変化に強い柔軟性・迅速性を追求
SOA
SOAソリューションを目的としたオープン仕様のプログラミングモデル
WAS V7 最新動向Workshop
32
Feature Pack for SCA(以降、SCA FP)はOSOAによって標準化されたOpen SCA
をサポートしています。Open SCA登場の当初はOSOAが標準化を行っていました
が、現在はOASIS標準へと移行されています。
Open SOA
http://www.osoa.org/display/Main/Home
SCAとは、SOAの考え方に基づいて様々なIT資産をサービス・コンポーネントとして
捉え、再利用性、変化に強い柔軟性、迅速性を追求したアプリケーションのプログラ
ミング・モデルです。
32
08.Feature Pack for Modern Batch / SCA
(参考)SOAが目指すシステム構築の考え方
従来の
アプリケーション
コンポジット・アプリケーション
サービスに分解されたアプリケーション
1
2
1. ビジネス・アプリケーションを
再利用可能なサービスに分解する
3
2. ビジネス・プロセスに合わせ、それらのサービスを
組み合わせる
新しいビジネス要求
に合わせ再構成する
3. ビジネス・プロセスの変化に対し、
サービスを再利用して、再構築する
ビジネス・プロセスに変更が起こったときに、
ビジネス・プロセスに変更が起こったときに、
サービスの組み合わせで、迅速に対応できる
サービスの組み合わせで、迅速に対応できる
33
SOA
SOA
WAS V7 最新動向Workshop
SOAが目指すサービス組み合わせによるシステムの構築方法を図で表したものです。
一番左が従来のアプリケーションです。一枚岩のアプリケーションのため、ビジネスに変更が起
こった際、アプリケーション全体を分析して、影響のある箇所を修正する必要がありますが、こ
の変更は、アプリケーション全体に及んでしまいます。このようなアプリケーションでは、ビジネス
に変更が起きたときに、ITを迅速に対応させることができません。
サービス指向の考え方では、まず、このアプリケーションを、再利用可能なサービス(お互いに
できるだけ依存しない形にして)に分解します。そして、ビジネスプロセスに合わせてサービスを
組み合わせてアプリケーションを構築します。このようにして構築したアプリケーションは、ジグ
ソーパズルを組み合わるようにして、ビジネスプロセスの変化に対応してサービスを再利用して、
再構築することが可能になります。
33
08.Feature Pack for Modern Batch / SCA
SCAの基本構造
Composite
Intent
Property
Interface
Policy
*
Policy Set
• Java
• WSDL
…..
Wire
Component
Service
Binding
34
Component
Implementation
•
•
•
Reference
Reference
Service
• SCA
• WebServices
• EJB
• JMS
• HTTP
• ATOM
Promote
Java
Spring
BPEL
…
•
•
•
C
C++
COBOL
…
Implementation
Composite
WAS V7 最新動向Workshop
SCAではアプリケーションをコンポーネントを組み合わせるように開発していく考え方となりますが、そ
の考え方に基づいて画面に示すような基本構造が仕様で規定されています。
•Component:Implementationが構成されたインスタンスです。Open SCAではJava、BPEL、C++等
の異なる実装技術を用いることを許容していますが、SCA FPではJavaとSpringのみサポートしていま
す。一つ以上のComponentが同じImplementationを用いることができます。
•Implementation:ビジネス・ロジックの実装コードです。POJO(Javaの場合)となり、SCA固有の特別
な実装は必要ありません。
•Service:Componentによって提供するサービスを定義します。一つのInterfaceと、バインディングを
設定します。
•Interface:一つ以上の"Business Function"を定義します。Serviceで提供され、Referenceで使用さ
れます。SCA FPでサポートされるインターフェースはJava InterfaceとWSDL 1.1です。
•Reference:Implementationの中のReferenceは、他のcomponentが提供するサービスのLinkを表
します。
•Compositeの中のReferenceは、Component内のReferenceをプロモートします。
•Binding:ReferenceとServiceで使用されます。Referenceでは外部のServiceをコールする時に使
用するアクセス・メカニズムを、ServiceではServiceをコールする時に使わなければいけないアクセス・
メカニズムを示します。
•Property:外部からImplentationへデータをセットする方法です。SCA FPでは管理コンソールから
セットすることができます。
•Composite:SCAのElementsを束ねる論理的なグループです。SCAシステムを作成する際の基本
ユニットで、SCA FPではEARに相当します。上位レベルのCompositeのimplementationになりえま
す。
34
08.Feature Pack for Modern Batch / SCA
SCA FPの実行環境および開発環境
„ 実行環境
– WASv7.0.0.9以上にSCA FPを適用
„ 開発環境
– RADv7.5.5以上
RAD 7.5.5 SCA Tools
RAD 7.5.5
SCA Tools
WAS 7.0 SCA Feature Pack
Service
Component
35
WAS 7.0.0.9
SCA FP
WAS V7 最新動向Workshop
SCA FPの実行環境および開発環境を示します。
実行環境はWAS V7.0.0.9以上にSCA FPを適用します。
開発環境はRAD V7.5.5以上にSCA FPを適用することで、SCA開発用のSCA
Toolsを使用することができます。
35
08.Feature Pack for Modern Batch / SCA
RAD 7.5.5 SCA Tools
„ SCA コンポジット・ダイアグラムを使用して開発
36
WAS V7 最新動向Workshop
SCA Toolsでは画面に示すように、SCAの基本構造に基づいたビジュアルな開発が
可能です。
36
08.Feature Pack for Modern Batch / SCA
SCA ToolsによるSCA開発概要
HelloComposite
„
SCAプロジェクトの作成
„ SCAコンポジットの作成
„ SCAコンポーネントの作成
HelloService
枠作り
Component
– インターフェースの定義
•
•
Javaインターフェースクラスを指定
SCAアノテーションを使用
– バインディングの設定
– 実装の作成
•
•
POJO実装
SCAアノテーションを使用
バインディング
Javaインターフェース
package test;
package test;
import org.osoa.sca.annotations.Remotable;
import org.osoa.sca.annotations.Remotable;
@Remotable
@Remotable
public interface HelloService {
public interface HelloService {
public String sayHello(String name);
public String sayHello(String name);
}
}
Java実装
package test.impl;
package test.impl;
import test.*;
import test.*;
import org.osoa.sca.annotations.Service;
import org.osoa.sca.annotations.Service;
@Service (HelloService.class)
@Service (HelloService.class)
public class HelloServiceImpl implements HelloService {
public class HelloServiceImpl implements HelloService {
public String sayHello(String name) {
public String sayHello(String name) {
return “Hello, ” + name + “ !”; // 実装を作成
return “Hello, ” + name + “ !”; // 実装を作成
} }
} }
37
WAS V7 最新動向Workshop
SCA Toolsを使用したSCA開発の概要を説明します。
まず、SCAプロジェクト/SCAコンポジット/SCAコンポーネントの作成で、枠組みを作
成します。SCAコンポーネントのインターフェース/リファレンスに対して、インター
フェース/バインディングの設定、コンポーネントに対して実装の作成を行っていくと
いう流れになりmす。
インターフェースにはJava/WSDLを使用することができます。Webサービスでのアク
セスを提供したい場合でも、Javaインターフェースクラスを定義し、バインディングに
Webサービスを設定すると、自動的にWSDLファイルが生成されます。
実装コードはSCAアノテーションを使用したPOJO実装になります。
開発方法の詳細につきましては、以下リンクの「WAS V7 FeaturePack 利用ガイド」
に詳細手順が記載されていますのでご参照ください。
http://www.ibm.com/developerworks/jp/websphere/library/was/was7_fep_guide
/
37
08.Feature Pack for Modern Batch / SCA
SCA FP提供機能
„ バインディング
–
–
–
–
–
–
SCA
Web Services
EJB
JMS
HTTP
Atom
V1.0.1
New
„ QoS
– トランザクション
– セキュリティ
„ その他
– Java EE統合
• 既存JavaEEアプリケーションをSCAコンポーネントと連携
– Springコンテナー
V1.0.1
New
• SCA実装にSpring2.5.5を使用可能
38
WAS V7 最新動向Workshop
SCA FPでの提供機能を示します。
各機能の詳細につきましては、以下リンクの「WAS V7 FeaturePack 利用ガイド」に
詳細手順が記載されていますのでご参照ください。
http://www.ibm.com/developerworks/jp/websphere/library/was/was7_fep_guide
/
38
08.Feature Pack for Modern Batch / SCA
SCAのメリット
„ コードの開発・変更・再利用が容易
– 実装コードは接続先プロトコルに依存しない
POJO
Component
Component
• 接続情報はバインディングのプロパティ設定
– トランザクションやセキュリティのQoS実装を
設定レベルで実施
“完成アプリケーション”
最上位Composite
抽象的
上流
– Recursiveモデルの利用によってサービス
粒度を自由に調整可能
“適切な粒度のサービス”
中間Composite
“実装”
下位Composite
Spring
39
Java
Java
具象的
下流
WAS V7 最新動向Workshop
SCAのメリットはコードの開発・変更・再利用が容易な点にあります。
•実装コードは接続先プロトコルに依存しないPOJO実装であるため、コードの再利
用が容易になります。接続情報はバインディングのプロパティ設定のみであり、プロト
コル依存のコーディングを必要とせず、容易な開発が可能です。
•トランザクションやセキュリティといったQoSの実装についても実装コードで意識する
ことはなく、設定レベルになるため容易に実装することができます。
•サービス粒度を自由に調整することができ、ComponentのワイヤリングやRecursive
モデルを利用することで、多様な構造に組み立てることができます。
39
08.Feature Pack for Modern Batch / SCA
(参考)既存のSCA製品とOpen SCAとの相互運用性
„ Open SCA(WAS V7 + SCA FP)
„ SCA(WebSphere Process Server/WebSphere Enterprise Service Bus)
„ 接続可能なバインディング
–
–
–
–
SCAバインディング
Webサービスバインディング
EJBバインディング
JMSバインディング
Open SCA コンポジット
SCA モジュール
40
SCA モジュール
Open SCA コンポジット
WAS V7 最新動向Workshop
SCA FPで提供するOpen SCAベースのSCA以外にも、IBM製品で提供されている
SCAがあります。Open SCAをサポートしているわけではありませんが、基本構造は
同様です。WebSphere Process ServerやWebSphere Enterprise Service Busで
使用されています。
異なるSCAをベースとしていますが、以下のバインディングで相互接続が可能です。
•SCAバインディング
•Webサービスバインディング
•EJBバインディング
•JMSバインディング
40
08.Feature Pack for Modern Batch / SCA
SCA FP まとめ
„ SCA FPとは
コンポジット・アプリケーション
– OASIS標準のOpen SCAをサポート
– SOAソリューションを目的としたプログラミング・モデル
„ SCA FPのメリットは
– コードの開発・変更・再利用が容易
• プロトコルに依存しないPOJOベースの開発
• 設定レベルで容易なQoS(トランザクション/セキュリティ)実装
• Recursiveモデルによる柔軟なサービス粒度の定義
41
WAS V7 最新動向Workshop
41
08.Feature Pack for Modern Batch / SCA
(参考)Feature Pack for XML
„ W3C 標準のXPath 2.0, XSLT 2.0, and XQuery 1.0をサポート
„ エンタープライズ環境で使用可能なマルチスレッドによる拡張性や高い有用性
に加え、IBMによるサポートを提供
„ XMLシン・クライアントを通じてWebSphere Application Serverに接続する
Javaアプリケーションをサポート
XML Thin Client
WAS Applications
Feature Pack for XML
XML FP API
XPath 2.0,XSLT 2.0,XQuery 1.0 Runtime
WebSphere Application Server V7
42
XPath 1.0
XSLT 1.0
WAS V7 最新動向Workshop
Feature Paack for XMLではW3C標準のXPath2.0、XSLT2.0、XQuery1.0をサ
ポートしています。
42
08.Feature Pack for Modern Batch / SCA
参考文献
„ Feature Pack
– WAS V7 FeaturePack 利用ガイド
– http://www.ibm.com/developerworks/jp/websphere/library/was/was7_fep_guide/
„ FP Batch
– WAS v7 Information Center –FeaturePack for Modern Batch
– http://publib.boulder.ibm.com/infocenter/wasinfo/fep/topic/com.ibm.websphere.bpfep.multiplatform.doc/info/ae/ae/welcome_fepbp.
html
– WebSphere XD ComputeGrid ポータルサイト
– http://www.ibm.com/developerworks/jp/websphere/category/wxd/cg.html
„ SCA FP
– WAS v7 Information Center –FeaturePack for SCA v1.0.1
– http://publib.boulder.ibm.com/infocenter/wasinfo/fep/topic/com.ibm.websphere.soafep.multiplatform.doc/info/ae/ae/welcome_fepsc
a.html
– RedPaper:Getting Started with WAS Feature Pack for SCA
– http://publib-b.boulder.ibm.com/abstracts/redp4633.html?Open
– IBM Education Assistant - WAS Feature Pack for SCA
– http://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/index.jsp?topic=/com.ibm.iea.wasfpsca/plugin_coverpage.html
– RAD V7.5 Information Center –SCAアプリケーションの開発(チュートリアル集)
– http://publib.boulder.ibm.com/infocenter/radhelp/v7r5/topic/com.ibm.sca.tools.doc/topics/sca_tools_intro.html
– OASIS SCA spec
– http://www.oasis-opencsa.org/sca
„ XML FP
– WAS v7 Information Center ‐FeaturePack for XML
– http://publib.boulder.ibm.com/infocenter/wasinfo/fep/topic/com.ibm.websphere.xmlfep.multiplatform.doc/info/welcome_nd.html
– Redbooks | Getting Started with the WebSphere Application Server Feature Pack for XML
– http://publib-b.boulder.ibm.com/Redbooks.nsf/RedbookAbstracts/redp4654.html?Open
– IBM Education Assistant - WAS Feature Pack for XML
– http://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/topic/com.ibm.iea.wasfpxml/plugin_coverpage.html
43
WAS V7 最新動向Workshop
43
Fly UP