Interstage Application Server アプリケーション作成ガイド (データベース連携サービス編)
目次 索引 前ページ次ページ

第10章 サーバアプリケーションの開発(トランザクションアプリケーション/COBOL)> 10.7 注意事項

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

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

作成手順

  1. データベースに依存した処理は、main関数の処理とは別ファイルに作成します。
    上記例では、その処理を、それぞれ、symfunc1(),symfunc2()とします。
  2. main関数から呼ばれるサブ関数symfunc1()を、単独でDB1のプリコンパイラを通して必要な言語のソースファイルを生成し、そのソースファイルをコンパイルします。
    同様に、サブ関数symfunc2()も、単独でDB2のプリコンパイラを通して必要な言語のソースファイルを生成し、そのソースファイルをコンパイルします。
    ここで、リソース種別がSymfoware/RDBで、名前が異なるデータベースに対してアクセスする場合、main関数は、それぞれのサブ関数symfunc1(),symfunc2()を呼び出す前に、“SET CONNECTION”文でアクセス対象のデータベースを切り替えてください。
  3. 一方リソース種別が、Oracleで、名前が異なるデータベースに対してアクセスする場合は、それぞれのサブ関数で、DECLARE文(“EXEC SQL DECLARE xxxx DATABASE”: xxxxはデータベース名)でアクセスするデータベース名を宣言することで同様の処理を行うことができます。
  4. それぞれのオブジェクトモジュールと、コンパイルした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コマンドで、複数リソースにアクセスする指定で作成する必要があります。


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

Copyright 2008 FUJITSU LIMITED