例 13: Db2® データベースを順次読み取る

次の例では、File Manager Service Provider REST API 呼び出しを実行して、Db2® データベース表から行を読み取る永続セッションを開始し、テンプレートを使用して各行の列をマップします。

この例は、一致するビューを使用して Db2® データベースをマップするサービス・アーカイブが作成され、デプロイされていることを前提とします。例えば、サービス・アーカイブは次のプロパティー・ファイルを使用して作成できます。

name=fmExample13
description=DFG2:DSN81010:EMP MAPPED BY MY.DB2.TEMPLATE(EMP)
version=1.0
provider=filemanager
host=10.1.1.2
port=9043
userid=admin
passwd=s3cr3t
ssid=DFG2
owner=DSN81010
tableName=EMP
template=MY.DB2.TEMPLATE(EMP)
timeout=300
connid=default

この例では、サブシステム DFG2 の DSN81010 が所有する Db2® データベース表 EMP をマップします。この表は、MY.DB2.TEMPLATE(EMP) で検出された File Manager テンプレートによってマップされます。この例では、生成された SAR ファイルと関連する組み込みの API が z/OS® Connect WLP サーバーにデプロイされていることを前提としています。

初回要求

Db2® データ・リソースからデータを読み取る初回 API 呼び出しには、Db2® データ・リソースへの以降のアクセスで呼び出し元を認証できるように、HTTP Basic 認証ヘッダーが必要です。例:

Authorization : Basic dXNlcmlkOnBhc3N3b3Jk

ここで、Basic キーワードに続くストリングは、userid:password の Base64 エンコードを示します。

また、JSON ペイロードがあるすべての要求でも、値が application/json の Content-Type ヘッダーが必要です。

初回要求では、データ・リソースに命名したり、テンプレート情報を指定したりする必要はありません。この情報は API に関連付けられたサービス・アーカイブに既に含まれています。このため、API 呼び出し元が指定する必要があるのは、必要に応じて、オプションの operation パラメーターと position パラメーターのみです。

{
    "operation" : 
    {
        "numRows" : 1,
        "session" : true
    }
}

この要求では、Db2® テンプレートによるフィルターに従い FM/Db2 表の先頭から 1 行読み取られます。すべての行読み取りは、テンプレートによる応答でマップされます。

File Manager/Db2 が true に設定されているため、サービス・プロバイダーは session セッションを維持します。セッションは、以降、session が false に設定された要求が実行されるまで、またはセッションでアクティビティーがない状態で 300 秒 (5 分) のタイムアウト期間が経過するまでアクティブのままになります。このタイムアウト期間はサービス・アーカイブで事前設定されています。

session が true に設定されている場合、呼び出し元は初回要求でトークンが戻ることを期待し、resource パラメーターか template パラメーター、または Basic 認証ヘッダーを渡す必要なく後続の呼び出しでトークンを使用できます。

成功時の応答

成功時の応答 (HTTP ステータス・コード 200) は次のようになります。

{
    "rows": 
    [
        {
            "columns": 
            [
                {
                    "PHONENO": "4978",
                    "EDLEVEL": 18,
                    "FIRSTNME": "CHRISTINE",
                    "MIDINIT": "I",
                    "BIRTHDATE": "1933-08-14",
                    "SALARY": 52750,
                    "COMM": 4220,
                    "LASTNAME": "HAAS",
                    "WORKDEPT": "A00",
                    "HIREDATE": "1965-01-01",
                    "BONUS": 1000,
                    "EMPNO": "000010",
                    "JOB": "PRES"
                }
            ]
        }
    ],
    "token": "1NC6BNJg8fX18fH2+fP58GDy9/f39/Y="
}

後続の読み取り要求

API 呼び出し元は、応答トークンを使用して後続の要求を実行し、サービス・プロバイダーによって保守される FM/Db2 セッションを再使用できるようになります。例:

{
    "operation" :
    {
        "numRows" : 1,
        "session" : true,
        "token": "1NC6BNJg8fX18fH2+fP58GDy9/f39/Y="
    }
}

API 呼び出し元は、最後の行が読み取られたことを示す、last が true に設定された応答行オブジェクトがあるまで、1 つ以上の行を読み取り続けることができます。例:

{
    "rows" :
    [
        {
            "last" : true,
    … other response fields
        }
    ]
}

セッションの終了

現時点では、API 呼び出し元はアクティブな FM/Db2 セッションを終了する要求を送信します。

{
    "operation" :
    {
        "numRows" : 0,
        "session" : false,
        "token": "1NC6BNJg8fX18fH2+fP58GDy9/f39/Y="
    }
}

トークンが有効な場合、session が false に設定された要求を送信すると FM/Db2 セッションは常に終了します。呼び出し元は既に最後の行を読み取っているため、"numRows" : 0 を設定することでもう行を読み取らないようサービス・プロバイダーに指示します。