初期処理/終了処理/前処理/後処理/エラー処理/トランザクション後メッセージ編集処理の利用指針を以下に示します。
注意
C言語アプリケーションを使用できるのは、同期アプリケーション連携実行基盤だけです。
初期処理
初期処理実装用のインタフェースです。このインタフェースを実装した場合、ワークユニットの起動時に、1プロセスあたり1回、初期処理が呼び出されます。サーバアプリケーションで使用するプロセスのリソースの獲得や初期化を初期処理として記述します。たとえば、サーバアプリケーションでデータベースへの制御を行う場合、初期処理でデータベースへのコネクション確立を行うように設計することができます。
なお、初期処理は、サーバアプリケーションをC言語またはCOBOLで作成した場合にだけ記述できます。
前処理
アプリケーション連携実行基盤の実行環境による各種制御と、サーバアプリケーションによる処理の間に行われる処理です。アプリケーションの業務処理と直接関係なく、かつ業務処理の前に常時実行する必要がある処理が存在する場合は、前処理として記述します。たとえば、作業用ファイルの獲得やオープンなど業務処理単位に行う必要のある初期処理を行うように設計することができます。
後処理
サーバアプリケーションによる処理と、アプリケーション連携実行基盤の実行環境による各種制御の間に行われる処理です。アプリケーションの業務処理と直接関係なく、かつ業務処理の後に常時実行する必要がある処理が存在する場合は、後処理として記述します。たとえば、作業用ファイルのクローズや解放など業務処理単位に行う必要のある終了処理を行うように設計することができます。
エラー処理
非同期アプリケーション連携実行基盤のエラー処理の利用指針を以下に示します。
異常発生時の処理として、アプリケーション連携実行基盤の異常処理機能だけを用いる場合、エラー処理の実装は必要ありません。
アプリケーション連携実行基盤の異常処理機能を利用する場合において、あわせて独自に異常のアラームを出す場合やログを採取する場合は、エラー処理内でそれらの処理を行った後、エラー処理内で再度処理結果情報を異常として設定するか、Javaの場合には例外をthrowします。その際、データベースやメッセージに関する処理はロールバックされるため、エラー処理内で行う処理は、それらに関係ない処理(メール送信によるアラームや、ローカルファイルへのログ記録など)とする必要があります。
業務処理の中で、アプリケーション連携実行基盤の異常処理機能を利用しない場合、エラー処理内でユーザ独自のエラー処理を行った後、エラー処理を正常復帰させることで業務フローの実行を継続することができます。たとえば、非同期アプリケーションでの例外発生を業務実行ルートの分岐条件として使いたい場合、実行ルートの分岐条件を“boolean exceptionFlag = true”のように定義し、分岐直前のアプリケーションのエラー処理内で“exceptionFlag=true”とした後、正常復帰させます。
同期アプリケーション連携実行基盤のエラー処理の利用指針を以下に示します。
業務ロジックで異常が発生した場合にエラー処理の均一化が行えます。
エラー処理を正常終了させた場合、エラー処理が呼ばれる直前の処理によりクライアントへ返却されるデータが異なります。
前処理・業務処理で異常終了が指定された場合、リクエスト時と同じデータがクライアントへ返却されます。
後処理で異常終了が指定された場合、業務処理で書き換えられたデータがクライアントへ返却されます。
トランザクション後メッセージ編集処理
業務データベースを使用する場合で、トランザクション処理の後、リトライされない場合に行われる処理です。データベースのコミットで失敗した場合にクライアントへ返却するエラーメッセージを編集するために使用します。正常終了した場合は業務データおよびエラーメッセージは上書きされません。
本処理は同期アプリケーション連携実行基盤のみで使用可能です。
終了処理
終了処理実装用のインタフェースです。このインタフェースを実装した場合、ワークユニットの通常停止時に1プロセスあたり1回、終了処理が呼び出されます。サーバアプリケーションで使用するプロセスのリソースの解放を終了処理として記述します。たとえば、サーバアプリケーションでデータベースへの制御を行う場合、終了処理でデータベースへのコネクション切断を行うように設計することができます。
なお、終了処理は、サーバアプリケーションをC言語またはCOBOLで作成した場合にだけ記述できます。
注意
初期処理、および終了処理は、サーバアプリケーションと同一プロセス上でプロセス単位に実行されます。ワークユニット単位に起動処理、および停止処理を実行したい場合や、プロセス異常終了時に処理を実行したい場合には、ワークユニットの出口機能を利用することができます。
ワークユニットの出口機能については、使用するアプリケーション連携実行基盤に応じて、以下を参照してください。
非同期アプリケーション連携実行基盤における非同期ワークユニットの出口機能
“Interstage Business Application Server 運用ガイド(アプリケーション連携実行基盤編)”の“非同期ワークユニット”の“ワークユニット出口機能”
同期アプリケーション連携実行基盤におけるCORBAワークユニットの出口機能
“Interstage Application Server OLTPサーバ運用ガイド”の“ワークユニットの作成”-“CORBAワークユニットの作成”-“アプリケーションの開発”-“ワークユニットの出口機能の使用方法”
初期処理および終了処理を含むユーザ作成ライブラリは、業務共通制御ライブラリ、またはプレロードライブラリとして配備されている必要があります。
サーバアプリケーションのロード方法をダイナミックロードとする場合には、初期処理および終了処理のライブラリは、サーバアプリケーションのライブラリと分けて配備する必要があります。
サーバアプリケーションライブラリをダイナミックロードで動作させる場合、プレロードライブラリパスとダイナミックロードライブラリパスに同一パスは指定しないでください。
同一パスを指定した場合、サーバアプリケーションライブラリはプレロードとして動作します。
ライブラリのロード方法についての詳細は、“12.4 ライブラリのロード”を参照してください。
◆Javaアプリケーションにおける前処理/後処理/エラー処理の共通化
各業務処理実行アプリケーションで共通の前処理・後処理を行うには、前処理や後処理だけを記述したクラスを準備し、各アプリケーションはそれを継承して作成するようにします。
一部のアプリケーションでだけ、特殊な前処理・後処理を実装する必要がある場合、共通化の手法でアプリケーションを作成した後、特殊な前処理・後処理の部分だけ、前処理メソッドや後処理メソッドをオーバーライドして記述します。
まったく共通化する必要がない場合は、アプリケーションごとにそれぞれの前処理または後処理を記述します。
注意
共通の前処理/後処理/エラー処理実装クラスを作成し、そのクラスを継承してアプリケーションを作成する場合、Javaの言語仕様で多重継承ができないことに注意してください。たとえば、共通処理実装クラスと、後述のアプリケーション連携実行基盤固有機能利用クラスを同時にアプリケーションに継承させる場合、アプリケーション連携実行基盤固有機能利用クラスはアプリケーションのクラスではなく、共通処理実装クラスに継承させてください。