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

第2章 ワークユニットの機能> 2.2 CORBAワークユニット

2.2.6 カレントディレクトリ

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

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

 ワークユニットのカレントディレクトリのバックアップを最大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などの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オプションで出力ファイルを指定可能です。

標準出力、標準エラー出力をstdoutファイル、stderrファイルに割り当てない方法

 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を使用して、CORBAアプリケーションおよびトランザクションアプリケーションを作成する場合の注意点

 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]
 Current Directory:/log_dir
 Number of Revision Directories:1


 isaddwudefコマンドでワークユニット名を指定して登録します。

 isaddwudef -o ISSAMPLE1

■Interstage管理コンソールを使用した定義方法

  1. Interstage管理コンソールにログインします。
  2. Interstage管理コンソールの
    [Interstage管理コンソール] > [Interstage Application Server] > [システム] > [ワークユニット]の[新規作成]タブ
    または、
    [Interstage管理コンソール] > [Interstage Application Server] > [システム] > [ワークユニット] > [ワークユニット名] > の[環境設定]タブ
    で[ワークユニット設定]の“アプリケーション動作カレントディレクトリ”と“退避するカレントディレクトリの世代数”に設定してください。

 Interstage管理コンソールを使用する場合は、“Intestage管理コンソールのヘルプ”も参照してください。


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

All Rights Reserved, Copyright(C) 富士通株式会社 2007