Interstage Application Server OLTPサーバ運用ガイド |
目次 索引 |
第2章 ワークユニットの機能 | > 2.2 CORBAワークユニット |
ワークユニットで起動したアプリケーションが動作する作業ディレクトリ(カレントディレクトリ)を指定することができます。
カレントディレクトリにより、ワークユニット配下で動作するアプリケーションはそれぞれ異なった作業ディレクトリで動作することが可能となります。
ワークユニットのカレントディレクトリのバックアップを最大5世代残すことができます。
バックアップはワークユニットの起動時に作成され、ワークユニット定義で指定された世代数まで残ります。前回起動時に作成されたワークユニット名のディレクトリが、“ワークユニット名.old1”としてバックアップされます。“ワークユニット名.old1”は“ワークユニット名.old2”としてバックアップされ、指定された世代数“n”の“ワークユニット名.oldn”までバックアップが作成されます。“ワークユニット名.oldn”がすでに存在する場合は、“ワークユニット名.oldn”を削除し、一つ前の数字のディレクトリが“ワークユニット名.oldn”として残されます。定義の詳細については“Number of Revision Directories:カレントディレクトリの退避世代数”を参照してください。
ワークユニット再起動後もカレントディレクトリ配下の標準出力ファイル(stdout)、標準エラー出力ファイル(stderr)、(Solaris版/Linux版ではcoreファイル)等が保存されるため、トラブル発生後、従来はワークユニットを再起動する前に、調査資料としてカレントディレクトリ配下のファイルを採取する必要がありましたが、本機能を使用することにより、業務の復旧を優先し、ワークユニットの再起動を行った後に資料を採取することができます。また、トラブル発生から時間が経過していても調査情報を容易に入手することが可能となります。
プラットフォーム |
システム |
指定形式 (注1) |
---|---|---|
Windows(R) |
− |
xxx\yyy\zzz |
Solaris |
デフォルトシステム |
xxx/yyy/zzz |
拡張システム (注2) |
xxx/yyy.システム名/zzz |
標準出力には、stdoutファイルが割り当てられています。サーバアプリケーションで標準出力にデータを出力した場合に、出力先として使用されます。
標準エラー出力には、stderrファイルが割り当てられています。サーバアプリケーションで標準エラー出力にデータを出力した場合に、出力先として使用されます。
OSの標準入出力ライブラリの仕様により、標準出力および標準エラー出力に出力したデータは一旦標準入出力ライブラリにバッファリングされます。
バッファリングされたデータを確実にstdout、stderrファイルに出力させるためには標準出力および標準エラー出力に対してフラッシュを行う必要があります。
たとえばC言語の場合は、fflush(stdout)、fflush(stderr)を発行してください。フラッシュを行わない場合は標準入出力ライブラリによってバッファリングされたデータがフラッシュされるまでstdout、stderrファイルにデータが出力されません。
C++言語で、入出力ストリーム(cout, cerr)を使用して標準出力、標準エラー出力にデータを出力する場合、標準C++ iostreamライブラリを使用してください。古いiostreamライブラリを使用する場合は、使用者が標準出力、標準エラー出力をファイルに割り当てるようにプログラミングする必要があります。標準C++ iostreamライブラリを使用する場合は、<iostream>などの拡張子.hが付いてないヘッダファイルを使用します。古いiostreamライブラリと標準C++ iostreamライブラリの違いについてはMSDNなどのMicrosoft Corporationから公開されている情報を参照してください。
Java言語およびCOBOL言語の場合、stdoutファイルおよびstderrファイルは作成されますが、ファイルにデータは出力されません。
COBOLアプリケーションでDISPLAY文を使用している場合は、翻訳時に翻訳オプション“SSOUT(環境変数情報名)”を指定し、ワークユニット定義の[Control Option]セクションまたは[Application Program]セクションのEnvironment Variable:ステートメントで環境変数情報名にデータ出力先のファイル名を指定してください。データの出力先がデフォルトのままの場合、環境変数“@WinCloseMSG”にOFFを設定しメッセージの出力を抑止しないとワークユニット停止時にアプリケーションがハングアップする可能性があります。
UNIXの場合、アプリケーションが異常終了しcoreファイルを出力した場合、それぞれのカレントディレクトリ配下に出力されます。
coreファイル出力先は、OS提供のcoreadmコマンドを使用することで変更可能です。
Java言語の場合、stdoutファイルおよびstderrファイルは作成されますが、ファイルにデータは出力されません。
Java言語でファイルにデータを出力する場合、使用者が標準出力、標準エラー出力をファイルに割り当てるようにプログラミングする必要があります。
以下のメソッドを使用することで可能です。
なお、JDK1.4以降であれば-verbose:gcオプションでGC情報を出力する場合、-Xloggc:fileオプションで出力ファイルを指定可能です。
CORBAアプリケーションで標準出力および標準エラー出力をstdoutファイル、stderrファイルに割り当てたくない場合、ワークユニット定義の[Control Option]セクションまたは[Application Program]セクションのEnvironment Variable:ステートメントに以下の環境変数を指定してください。stdoutファイルおよびstderrファイルは出力されなくなります。
INTERSTAGE_WU_STDOUT_REDIRECTION = OFF
Microsoft(R) Visual C++ .NETまたはMicrosoft(R) Visual C++ 2005を使用してビルドされたアプリケーションでは、標準出力または標準エラー出力に向けて出力されたデータが、カレントフォルダ配下のstdoutファイルまたはstderrファイルに出力されません。
これを回避し正しく出力するためには、アプリケーションにおいて以下の対処を実施してください。
プログラムの先頭に以下のコードを追加してください。(注1)
freopen("stdout", "w", stdout); freopen("stderr", "w", stderr);
注1) Microsoft(R) Visual C++ 2005を使用してビルドした場合、“warning C4996: 'freopen' が古い形式として宣言されました。”という警告が出力される場合がありますが、動作上の問題はありません。
アプリケーションの標準出力、標準エラー出力は、それぞれstdout、stderrファイルに割り当てられます。
stdoutファイル、stderrファイルは、ワークユニット起動中にファイル切り替えを行いません。そのため、アプリケーションのログ情報などを大量に出力した場合は、運用中にファイル容量が増加しディスク領域が不足する可能性があります。
アプリケーションで常時ログなど大量に出力する場合は、世代管理機能を持つログ出力機能を使用してください。
カレントディレクトリはワークユニット定義で設定します。ワークユニット定義の登録は、コマンドを使用する方法と、Interstage管理コンソールを使用する方法があります。
ワークユニット定義の“Current Directory(カレントディレクトリ)”と“Number of Revision Directories(カレントディレクトリの退避世代数)”に設定します。以下に定義登録の実行例を示します。なお、ワークユニット定義の詳細は“ワークユニット定義”を参照してください。
ワークユニット定義
[Control Option] |
isaddwudefコマンドでワークユニット名を指定して登録します。
isaddwudef -o ISSAMPLE1 |
Interstage管理コンソールを使用する場合は、“Intestage管理コンソールのヘルプ”も参照してください。
目次 索引 |