ページの先頭行へ戻る
Interstage Application Server V13.0.0 アプリケーション作成ガイド(データベース連携サービス編)
FUJITSU Software

2.4.2 複数のデータベースにアクセスするサーバアプリケーションの作成について

1つのサーバアプリケーションから複数のデータベースにアクセスする場合のサーバアプリケーションは、以下のような構成で作成します。



作成手順

  1. データベースに依存した処理は、main関数の処理とは別ファイルに作成します。
    上記例では、その処理を、それぞれ、symfunc1()、symfunc2()とします。

  2. main関数から呼ばれるサブ関数symfunc1()を、単独でDB1のプリコンパイラを通して必要な言語のソースファイルを生成し、そのソースファイルをコンパイルします。
    同様に、サブ関数symfunc2()も、単独でDB2のプリコンパイラを通して必要な言語のソースファイルを生成し、そのソースファイルをコンパイルします。
    名前が異なるデータベースに対してアクセスする場合、リソース種別により、以下の処理が必要となります。

    • Symfoware/RDBの場合
      main関数は、それぞれのサブ関数symfunc1()、symfunc2()を呼び出す前に、「SET CONNECTION」文でアクセス対象のデータベースを切り替えてください。

    • Oracleの場合
      それぞれのサブ関数で、DECLARE文「EXEC SQL DECLARE xxxx DATABASE」(xxxx:データベース名)でアクセス対象のデータベース名を指定してください。

  3. それぞれのオブジェクトモジュール、およびコンパイルしたmain関数のオブジェクトモジュールをあわせてリンクし、サーバアプリケーションを作成します。


リソース種別がSymfoware/RDBの場合のリソース定義ファイルに設定するOPENINFOの例、および「SET CONNECTION」文の例を以下に示します。


リソース定義ファイルA内のOPENINFO
OPENINFO=TO 'DB1' USER 'system/manager' AS 'C1'
リソース定義ファイルB内のOPENINFO
OPENINFO=TO 'DB2' USER 'system/manager' AS 'C2'

次に、ユーザアプリケーションでも対応するコネクションを設定します。

SQL文発行処理部Aのソース内
EXEC SQL SET CONNECTION 'C1';
SQL文発行処理部Bのソース内
EXEC SQL SET CONNECTION 'C2';

注意

サーバアプリケーションからアクセスする複数のデータベースの種別がOracle、Symfoware/RDBのように異なる場合、サーバアプリケーション作成時にリンクするXA連携用プログラムは、otsmkxapgmコマンドで複数リソースにアクセスするように指定して作成してください。