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

第2章 OLTPサーバの設計> 2.1 ワークユニットの設計

2.1.4 カレントディレクトリ

 ワークユニットで起動したアプリケーションが動作する作業ディレクトリ(カレントディレクトリ)を指定することができます。
 カレントディレクトリにより、ワークユニット配下で動作するアプリケーションはそれぞれ異なった作業ディレクトリで動作することが可能となります。

カレントディレクトリの世代管理機能

 ワークユニットのカレントディレクトリのバックアップを最大5世代残すことができます。
 バックアップはワークユニットの起動時に作成され、ワークユニット定義で指定された世代数まで残ります。前回起動時に作成されたワークユニット名のディレクトリが、“ワークユニット名.old1”としてバックアップされます。“ワークユニット名.old1”は“ワークユニット名.old2”としてバックアップされ、指定された世代数“n”の“ワークユニット名.oldn”までバックアップが作成されます。“ワークユニット名.oldn”がすでに存在する場合は、“ワークユニット名.oldn”を削除し、一つ前の数字のディレクトリが“ワークユニット名.oldn”として残されます。定義の詳細については“Number of Revision Directories:カレントディレクトリの退避世代数”を参照してください。
 ワークユニット再起動後もカレントディレクトリ配下の標準出力ファイル(stdout)、標準エラー出力ファイル(stderr)、(Solaris版/Linux版ではcoreファイル)等が保存されるため、トラブル発生後、従来はワークユニットを再起動する前に、調査資料としてカレントディレクトリ配下のファイルを採取する必要がありましたが、本機能を使用することにより、業務の復旧を優勢し、ワークユニットの再起動を行った後に資料を採取することができます。また、トラブル発生から時間が経過していても調査情報を容易に入手することが可能となります。

CORBAアプリケーションおよびトランザクションアプリケーションの指定形式

プラットフォーム

システム

指定形式 (注1)

Windows(R)

xxx\yyy\zzz

Solaris
Linux

デフォルトシステム

xxx/yyy/zzz

拡張システム (注2)

xxx/yyy.システム名/zzz

注1)
xxx:ワークユニット定義で指定されたディレクトリ
yyy:当該ワークユニット名
zzz:アプリケーションの実行プロセスid
注2)
拡張システムはSolarisのみ使用可能です。

 標準出力には、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などのマイクロソフト株式会社から公開されている情報を参照してください。
 Java言語およびCOBOL言語の場合、stdoutファイルおよびstderrファイルは作成されますが、ファイルにデータは出力されません。
 COBOLアプリケーションでDISPLAY文を使用している場合は、翻訳時に翻訳オプション“SSOUT(環境変数情報名)”を指定し、ワークユニット定義の[Control Option]セクションまたは[Application Program]セクションのEnvironment Variable:ステートメントで環境変数情報名にデータ出力先のファイル名を指定してください。データの出力先がデフォルトのままの場合、環境変数“@WinCloseMSG"にOFFを設定しメッセージの出力を抑止しないとワークユニット停止時にアプリケーションがハングアップする可能性があります。
 UNIXの場合、アプリケーションが異常終了しコアファイルを出力した場合、それぞれのカレントディレクトリ配下に出力されます。
 Java言語の場合、stdoutファイルおよびstderrファイルは作成されますが、ファイルにデータは出力されません。
 Java言語でファイルにデータを出力する場合、使用者が標準出力、標準エラー出力をファイルに割り当てるようにプログラミングする必要があります。
 CORBAアプリケーションで標準出力および標準エラー出力をstdoutファイル,stderrファイルに割り当てたくない場合、ワークユニット定義の[Control Option]セクションまたは[Application Program]セクションのEnvironment Variable:ステートメントに以下の環境変数を指定してください。stdoutファイルおよびstderrファイルは出力されなくなります。
INTERSTAGE_WU_STDOUT_REDIRECTION = OFF

Interstage管理コンソールを使用した運用

 ワークユニットの定義画面または、ワークユニット環境設定画面における“アプリケーション動作カレントディレクトリ”を設定してください。

EJBアプリケーションの指定形式

プラットフォーム

システム

指定形式 (注1)

Windows(R)

デフォルトシステム

www\xxx\yyy\zzz

Solaris
Linux

デフォルトシステム

www/xxx/yyy/zzz

拡張システム (注2)

www/xxx.システム名/yyy/zzz

注1)
www  :ワークユニット定義で指定されたディレクトリ
xxx :当該ワークユニット名
yyy :EJBアプリケーション名
zzz :アプリケーションの実行プロセスid
注2)
拡張システムはSolarisのみ使用可能です。

なお、上記ディレクトリ上に標準出力ファイル(stdout)、標準エラー出力ファイル(stderr)を出力します。

Microsoft(R) Visual C++ .NETを使用して、CORBAアプリケーションおよびトランザクションアプリケーションを作成する場合の注意点

 Microsoft(R) Visual C++ .NETを使用してビルドされたアプリケーションでは、標準出力または標準エラー出力に向けて出力されたデータが、カレントフォルダ配下のstdoutファイルまたはstderrファイルに出力されません。
 これを回避し正しく出力するためには、アプリケーションにおいて以下の対処を実施してください。

 プログラムの先頭に以下のコードを追加してください。

  freopen("stdout", "w", stdout);
  freopen("stderr", "w", stderr);

 なお、トランザクションアプリケーションにおいて前出口プログラムを使用される場合は、前出口プログラムの先頭に追加してください。前出口プログラムに追加した場合、本処理および後出口プログラムへの対処は必要ありません。
 前出口プログラムを使用されない場合は、本処理の先頭に追加し、かつ、初回呼び出し時のみ実行するよう対処してください。


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

Copyright 2005 FUJITSU LIMITED