ESM モジュールなどの ESF ユーザー出口モジュールは、ESF によって実行時にロードされます。ESF が正しいタイプのモジュールを見つけてロードし、それを適切に使用するためには、特定のルールに従う必要があります。これらのルールは、Enterprise Server が実行されているオペレーティング システムによって異なります。
デフォルトでは、ESF は製品のインストール領域に含まれる特定のディレクトリ内で出口モジュールを探します。Windows の場合は、bin ディレクトリおよび bin64 ディレクトリ (それぞれ 32 ビット プロセスと 64 ビット プロセス用) 内を検索します。UNIX/Linux の場合は、lib ディレクトリ内を検索します。「構成による ESF ユーザー出口を有効にするには」で説明されているように、ESF 構成オプションを使用して別のディレクトリから出口モジュールをロードすることもできます。
ESF ユーザー出口モジュール ファイルには、モジュール ファイルを識別するファイル名の一部であるベース名があります。ベース名の後には、ファイル拡張子 (.DLL や .so) を含むサフィックスが続き、UNIX/Linux プラットフォームでは、拡張子の前または拡張子の中に他の文字が含まれることもあります。
- Windows プラットフォームでは、モジュールは 32 ビットの DLL である必要があります。モジュールのベース名は .DLL 拡張子までのファイル名になります。たとえば、参照整合性サンプル モジュールは、saf_refint_exit.dll として提供されており、そのベース名は saf_refint_exit です。
- 64 ビットの Windows では、64 ビットのエンタープライズ サーバーで出口を使用する場合、64 ビット版の DLL も必要になります。
- UNIX および Linux プラットフォームでは、モジュールは、共有オブジェクトである必要があります。また、スレッドセーフの実行用にビルドされている必要があります (cob -t コマンドを使用するなど)。シングルスレッド バージョンおよびマルチスレッド バージョンのモジュールを作成できますが、モジュール内で別々のスレッドを使用することは推奨されません。MFDS および 32 ビットの Enterprise Server インスタンスでは、32 ビット版のモジュールが必要です。64 ビットの Enterprise Server インスタンスを実行している場合は、64 ビット版が必要になります。モジュールのベース名の後には、プラットフォーム、ビット数、およびスレッド モードによって異なるサフィックスが続きます。
- 64 ビット モジュールの場合、サフィックスは 64 で始まります。
- スレッドセーフのモジュールの場合、サフィックスとして _t が続きます。モジュールがスレッドセーフのバージョンでのみ提供される場合 (推奨)、モジュールをコピーすることも、両方のサフィックス (_t ありとなし) でリンクを作成することもできます。
- さらに、サフィックスとして拡張子が続きます。HP-UX では拡張子は .sl で、それ以外のプラットフォームでは .so です。
たとえば、ESF ユーザー出口モジュールを作成し、そのベース名として my_exit を選択したとします。
Windows では、このモジュールの 32 ビット版は my_exit.dll という名前になり、64 ビット版の場合も my_exit.dll という名前になります。これらは同じ名前であるため、別々のディレクトリに配置する必要があります (通常は製品の bin ディレクトリおよび bin64 ディレクトリ)。
UNIX では、通常、次の 4 つのバージョンの出口モジュールを作成し、製品の
lib ディレクトリに配置します。
my_exit.so |
シングルスレッド、32 ビット |
my_exit_t.so |
スレッドセーフ、32 ビット |
my_exit64.so |
シングルスレッド、64 ビット |
my_exit64_t.so |
スレッドセーフ、64 ビット |
シングルスレッド バージョンは、スレッドを作成しない限り、スレッドセーフになります。つまり、多くの場合、
my_exit.so および
my_exit_t.so は同じファイルになります。
my_exit64.so と
my_exit64_t.so についても同様です。