Interstage Application Server OLTPサーバ運用ガイド
目次 索引 前ページ次ページ

第4章 各アプリケーションのワークユニット運用

4.1 CORBAワークユニットの運用

 CORBAワークユニット(CORBAアプリケーションのワークユニット)の運用方法は以下の2つが存在します。

 

 以下にCORBAワークユニットを動作させるための、環境作成と運用手順について説明します。

CORBAワークユニットを使用する場合には、大きく分けて以下の5つの作業が必要になります。

  1. CORBAアプリケーション作成フェーズ(1〜3)
  2. CORBAアプリケーション環境設定フェーズ(4〜5)
  3. CORBAワークユニット環境設定フェーズ(6)
  4. CORBAワークユニット操作フェーズ(7〜8)
  5. CORBAワークユニット参照フェーズ(9〜11)

 aの作業は、CORBAアプリケーションを単体で動作させる場合と同様です。従来のCORBAワークユニットは、ワークユニット操作コマンドやCORBAサービス運用コマンドを使用して、ワークユニットの定義やCORBAアプリケーションの定義を実施していましたが、Interstage管理コンソールを使用して運用することによって、b〜eの作業をGUIで一元管理することが可能です。


 CORBAアプリケーションの開発(プログラミング、IDLコンパイラ等)については、“アプリケーション作成ガイド(CORBAサービス編)”、および“リファレンスマニュアル(コマンド編)”を参照してください。

(1)アプリケーションの開発

 ワークユニット配下で動作させるCORBAアプリケーションプログラムの作成を行います。プログラミング方法については、ワークユニット配下外で動作させる場合と同様です。

(2)IDLコンパイラ(IDLcコマンド)によるコンパイル

 IDL定義を作成し、IDLcコマンドにより、インタフェースリポジトリの登録、スケルトンの出力を行います。IDL定義については、ワークユニット配下外で動作させる場合と同様です。

(3)CORBAサーバアプリケーションの作成

 作成したCORBAアプリケーションプログラムとIDLcコマンドにより作成したスケルトンよりCORBAサーバアプリケーション(実行モジュール)を作成します。CORBAサーバアプリケーションの作成方法については、ワークユニット配下外で動作させる場合と同様です。


 CORBAワークユニットで動作モードとして"SYNC_END"を使用する場合、CORBA_BOA_impl_is_readyから復帰した場合、必ずプロセスを終了する必要があります。ワークユニットの通常停止および同期停止を行った場合、"SYNC_END"であった場合、CORBA_BOA_impl_is_readyから復帰しますが、プロセスを終了するまではワークユニットの停止は待ち状態となります。そのため、必ずCORBA_BOA_impl_is_readyから復帰した場合はプロセスを終了する必要があります。
 たとえば、Javaアプリケーションの場合、アプリケーションの処理でスレッドを生成し、生成したスレッドが正常に停止されていない場合、ワークユニット停止が待ち状態となる可能性があります。アプリケーションで生成したスレッドは、必ずアプリケーションで回収してください。


 CORBAアプリケーションをワークユニット上で動作させる場合、CORBAアプリケーションから出力する標準出力および標準エラー出力は、それぞれ以下のファイルにリダイレクトされます。

 標準出力
 ワークユニット定義のカレントディレクトリ\ワークユニット名\プロセスID\stdout
 標準エラー出力
 ワークユニット定義のカレントディレクトリ\ワークユニット名\プロセスID\stderr

 標準出力および標準エラー出力に出力したデータは、OSの標準入出力ライブラリの仕様により、いったん標準入出力ライブラリにバッファリングされます。
 バッファリングされたデータを確実にstdout, stderrファイルに出力させるためには、標準出力および標準エラー出力に対してフラッシュを行う必要があります。
 たとえばC言語の場合は、fflush(stdout), fflush(stderr)を発行してください。フラッシュを行わない場合は、標準入出力ライブラリによってバッファリングされたデータがフラッシュされるまでstdout, stderrファイルにデータが出力されません。

(4)インプリメンテーションリポジトリ定義へのサーバアプリケーションの情報登録

 ワークユニットで動作させるCORBAアプリケーションの情報を設定します。
 基本的にはワークユニット配下外で動作させる場合と同様です。ワークユニット上で動作させる場合は、定義情報の注意事項を以下に示します。

サーバアプリケーションの起動タイプ(type)

 ワークユニット配下で動作させる場合、サーバアプリケーションの起動タイプは"persistentサーバ"タイプを設定する必要があります。

プロセス最大多重度(proc_conc_max)

 ワークユニット定義で設定したプロセス多重度よりも大きい値を設定する必要があります。ワークユニット定義で設定したプロセス多重度よりも小さい値を設定していた場合、ワークユニットの起動に失敗しますので、注意してください。

動作モード(mode)

 動作モードに“SYNC_END”を指定した場合は、サーバアプリケーションにおいてCORBA_BOA_impl_is_readyから復帰したあと明示的にプロセスを終了する処理(exit関数の発行など)が必要です。動作モードが“SYNC_END”の場合にプロセスの終了処理を行わないと、通常停止または同期停止を行った場合、ワークユニットの停止は失敗しますので注意してください。


 コマンドラインインタフェースを使用したインプリメンテーションリポジトリ定義へのサーバアプリケーションの情報登録については、“リファレンスマニュアル(コマンド編)”を参照してください。

(5)オブジェクトリファレンスの生成

 作成したサーバアプリケーションを他のアプリケーションからオブジェクトとしてアクセスできるようにするために、そのオブジェクトを識別するためのオブジェクトリファレンスを作成します。同時に作成したオブジェクトリファレンスをネーミングサービスに登録します。
 基本的にはワークユニット配下外で動作させる場合と同様です。

(6)ワークユニット定義の作成/登録

 CORBAアプリケーションをワークユニットで動作させるため、ワークユニット定義の作成・登録を行います。

(7)ワークユニットの起動

 ワークユニット定義で設定したCORBAワークユニットの起動を行います。起動はisstartwuコマンドでワークユニット名を指定して行います。

 ワークユニットの起動については、コマンド以外に、Interstage運用API、Interstage運用操作ツール、Interstage管理コンソールおよびSystemwalker Operation Managerより行うことが可能です。


 ワークユニットで運用中はワークユニット定義に設定した、CORBAアプリケーションの実行モジュールの削除、上書きを行わないでください。行った場合、CORBAアプリケーション処理や該当ワークユニットの運用操作がハングアップすることがあります。

 ワークユニットの起動に失敗した場合、プロセス起動ログ採取機能により、プロセスの起動パラメタおよび環境変数をログファイルに出力し確認することができます。
 ワークユニット定義の“Start Log”ステートメントに“YES"を指定して、プロセス起動ログ採取機能を有効にし、カレントディレクトリに出力されたログファイルを確認してください。

(8)ワークユニットの停止

 起動中のワークユニットの停止を行います。
 通常停止する場合は、通常停止、同期停止を使用します。緊急に停止したい場合には強制停止を使用します。

[通常停止]

 通常停止は、該当ワークユニットに定義されているすべてのアプリケーションが処理中でない場合にかぎりワークユニットを停止します。ワークユニットが業務処理中の場合、ワークユニットは停止できません。この場合、アプリケーションの処理の完了を待ってから、再度このコマンドを実行してください。


 CORBAアプリケーションの動作モードが"SYNC_END"である場合、ワークユニット通常停止を行った場合、アプリケーション上の動作として、CORBA_BOA_impl_is_readyが復帰します。この場合、アプリケーションの処理として必ずプロセスを終了する必要があります。プロセスを終了せずに待ち状態とした場合、ワークユニットの通常停止がハングアップ状態となりますので、注意してください。その場合は強制停止コマンドで、強制的にワークユニットを停止してください。
 たとえば、Javaアプリケーションの場合、アプリケーションの処理でスレッドを生成し、生成したスレッドが正常に停止されていない場合、ハングアップする可能性があります。アプリケーションで生成したスレッドは、必ずアプリケーションで回収してください。

[同期停止]

 同期停止は、コマンド実行時に処理中の要求を実行した後、ワークユニットを停止します。待ち状態となっている要求については、破棄(クライアントにエラー)されます。


 同期停止の場合、処理中の要求が完了した後、停止します。そのため、処理中のアプリケーションが完了しない場合、ワークユニット停止がハングアップすることになります。その場合、強制停止コマンドで、強制的にワークユニットを停止してください。

 CORBAアプリケーションの動作モードが"SYNC_END"である場合、ワークユニット通常停止を行った場合、アプリケーション上の動作として、CORBA_BOA_impl_is_readyが復帰します。この場合、アプリケーションの処理として必ずプロセスを終了する必要があります。プロセスを終了せずに待ち状態とした場合、ワークユニットの通常停止がハングアップ状態となりますので、注意してください。その場合は強制停止コマンドで、強制的にワークユニットを停止してください。
 たとえば、Javaアプリケーションの場合、アプリケーションの処理でスレッドを生成し、生成したスレッドが正常に停止されていない場合、ハングアップする可能性があります。アプリケーションで生成したスレッドは、必ずアプリケーションで回収してください。

[強制停止]

 強制停止はアプリケーションが処理中の場合でも、強制的に停止を行います。処理中のアプリケーションについては、処理中に強制的に停止され、待ち状態となっている要求に対しては破棄(クライアントにエラー)されます。

強制停止については、ワークユニット運用中以外の以下の状態時でも強制停止コマンドを実行することで、強制的に停止が可能です。

ワークユニットの停止については、コマンド(isstopwu)、Interstage運用API、Interstage運用操作ツール、Interstage管理コンソールおよびSystemwalker Operation Managerより行うことが可能です。


下へ4.1.1 Interstage管理コンソールを使用した運用
下へ4.1.2 コマンドラインインタフェースによる運用

目次 索引 前ページ次ページ

Copyright 2005 FUJITSU LIMITED