13 CPI-Cを使用したクライアント・アプリケーションの統合

この章のトピックは、次のとおりです:

13.1 概要

共通プログラミング・インタフェース・コミュニケーション(CPI-C)は、APPCを実装するための共通アプリケーション・プログラミング・インタフェース(API)を提供します。CPI-Cには、異なるプラットフォームにわたるプログラム間通信用の一貫した一連の機能が用意されています。

オープン・システム(Windows、Linux、UNIX)で実行される顧客アプリケーションでは、IBM CICSおよびIMS TMで実行されるメインフレーム・アプリケーションとのAPPC通信にCPI-Cインタフェースを使用できます。このようなメインフレーム・アプリケーションをTuxedo ARTにリホストした後、オープン・システム・アプリケーションでは、変更を回避するか最小限に抑えるために、リホストされたメインフレーム・アプリケーションと通信するためのCPI-C/APPCインタフェースを保持する必要があります。CPI-CインタフェースのTuxedo ART CICSサポートを使用して、顧客アプリケーションはアプリケーション・コードを変更せずに、リホストされたメインフレーム・アプリケーションと引き続き通信できます。

ART CICS CPI-Cサポートでは次のものがカバーされます。

表13-1 ART CICS CPI-Cサポートの範囲

CPI-Cアプリケーション(クライアント) CPI-Cアプリケーション(サーバー)
Windows VSクライアント WebLogic JAMクライアント CICSアプリケーション
Tuxedoワークステーション・クライアント(WSC)経由 WTC経由 ARTCTRN/1

WSC用WSL/WSH

WTC用ドメイン・ゲートウェイ

MS Visual Studio C/C++、32ビット JDK 1.6以上、64ビット COBOL/C、64ビット

Tuxedo ART CICS CPI-Cサポートには、次のコンポーネントが含まれます。

  • Windowsでは、ライブラリkixcpicws.dll。これはWindows SNAサポートのかわりに通信にTuxedo WSCを使用して、Windows CPI-C/SNAライブラリのかわりとしてCPI-Cインタフェースを提供します。
  • WebLogicでは、CPI-Cインタフェースを実装する一連のJavaクラス。これはJAM beanを置き換え、Tuxedoドメインの通信サポートにWTCを使用します。
  • Tuxedo ART CICS runtimeでは、ARTCTRNサーバーで動作し、CPI-Cを使用してCOBOL/CプログラムをサポートするCPI-Cライブラリ。

    詳細は、「サポートされるCPI-Cシナリオ」を参照してください。

さらに、ART CICS CPI-C統合では、Windows VS C/C++アプリケーション(Tuxedo WSC経由)およびJavaアプリケーション(WTC経由)のサポートが提供され、アプリケーションはクライアントとして機能し、APPCプロトコルを使用して、ART CICSサーバーで実行されるリホストされたメインフレームCPI-Cアプリケーションと相互運用します。

13.1.1 クライアント・アプリケーションの影響

この項の内容は次のとおりです。

13.1.1.1 Windows Visual Studio C/C++環境

このサポートで提供されるART CICS CPI-Cライブラリを使用して、Windowsアプリケーションを再構築/再リンクする必要があります。新しいライブラリでは同じAPIがサポートされるため、アプリケーションにリンクした後、コード変更は必要ありません。

このライブラリは、Tuxedoとの通信チャネルとしてWindows上のTuxedoワークステーション・クライアント(WSC)を使用します。このTuxedoコンポーネントをWindowsにインストールし、構成する必要があります。

13.1.1.2 WebLogic Java環境

WebLogicユーザーは、CPI-Cインタフェースへのメイン・アクセス・ポイントを提供する新しいバージョンのcallService()クラスおよびCPI-CインタフェースのART CICS実装を提供するjavaクラス・ファイルを使用して、EJBパッケージを再生成する必要があります。

これらのクラスでは、Tuxedoとの通信チャネルとしてWebLogic-Tuxedo Connector (WTC)が使用されます。このWebLogicコンポーネントをWebLogic Serverにインストールし、構成する必要があります。
13.1.1.3 ASCII-EBCDICデータ変換

メインフレーム・アプリケーションではEBCDICデータ・エンコーディングが使用されており、WindowsおよびWebLogicアプリケーションは呼出しでASCII-EBCDIC変換を指定する必要があります。ART CICSにリホストされた場合、これらのメインフレーム・アプリケーションはASCIIデータ・エンコーディングを使用して実行されるため、変換は必要ありません。WindowsまたはWebLogicアプリケーションがASCII-EBCDICデータ変換を指定する場合、Tuxedo ART CICSアプリケーションの使用時に無効にする必要があります。

13.2 サポートされるCPI-Cシナリオ

この項には次の情報が含まれます:

13.2.1 リホストされたCICSトランザクションを呼び出すWindowsアプリケーション

Windowsサーバー上のクライアント・アプリケーションは、クライアント側とサーバー側の両方のコードでCPI-C APIを使用してTuxedo上のCICSサーバー・アプリケーションと通信します。ART CICS CPI-Cライブラリを持つWindowsアプリケーションではTuxedoワークステーション・クライアントが使用され、CPI-C APIはART CICS CPI-Cライブラリによる内部Tuxedo ATMI呼出しによって処理されます。ARTCTRNサーバーは、ART CICS runtimeのCPI-Cインタフェースも提供します。リホストされたCICSアプリケーションはコード変更なしでCPI-Cインタフェースを直接使用できます。

図13-1 Windows Server上のCPI-Cクライアント・アプリケーション


Windows Server上のCPI-Cクライアント・アプリケーション

上の図は、Tuxedo Workstation Protocol対話を通じてTuxedoドメインのKIXSリージョン内のCPI-CサーバーCICSプログラムと通信するWindowsサーバー上のCPI-Cクライアント・アプリケーションを示しています。CPI-Cクライアント・ライブラリは、1台以上のARTCTRNサーバー(対話型トランザクション/プログラム用のART CICSアプリケーション・サーバー)で実行されるCICSトランザクションへのtpconnect()呼出しとの接続を確立し、Tuxedo対話型tpsend()/tprecv() API呼出しを使用してCMSEND/CMRCVを模倣します。青の網掛け部分で示された両方の側のアプリケーション・コードは変更されないままとなり、Tuxedo ARTインフラストラクチャ・コンポーネントによってすべての必要なAPIおよび通信サポートが提供されます。

13.2.2 リホストされたCICSトランザクションを呼び出すWebLogicアプリケーション

WebLogicのJavaクライアント・アプリケーションは、iWay JAMを介してサーバー側のCICSアプリケーションと通信します。クライアント側ではJAMによって提供されるRMI callService()が使用され、サーバー側ではCPI-CインタフェースとCICS APPCインタフェースが使用されます。ART CICSはクライアント側でcallService()メソッドをオーバーロードし、callService()はアプリケーション・データをCICSアプリケーションと交換する一連のCPI-C呼出しで構成されます。ART CICSはオーバーロードされたcallService()メソッドのソース・コードを提供し、一連のJavaクラス・ファイルを提供してCPI-Cインタフェースの実装を実現します。

図13-2 Windows Server上のCPI-Cクライアント・アプリケーション


Windows Server上のCPI-Cクライアント・アプリケーション

上の図に示すように、EJBアプリケーションはWebLogicサーバー上でCPI-Cクライアントとして実行され、対話型プロトコルを使用するTuxedoドメイン・ゲートウェイへのWTC接続を介してKIXSリージョン内のCPI-CサーバーCICSプログラムと通信します。CPI-Cクライアント・ライブラリは、ARTCTRN (対話型トランザクション/プログラム用のART CICSアプリケーション・サーバー)によって発行されるCICSトランザクションへのtpconnect()呼出しを介して接続を確立し、Tuxedo対話型tpsend()/tprecv() API呼出しを使用してCMSEND/CMRCVを模倣します。青の網掛け部分で示された両方の側のアプリケーション・コードは変更されないままとなり、Tuxedo ARTインフラストラクチャ・コンポーネントによってすべての必要なAPIおよび通信サポートが提供されます。

13.3 サーバー側の構成

サーバーを構成するには、次のタスクを実行する必要があります。

13.3.1 ART CICSリソース構成

この項には次の情報が含まれます:

13.3.1.1 systems.descでのCICSリージョンの定義

クライアントおよびサーバーのSYSIDを構成します。次の例では、Windowsクライアント用のKIXAで、sysidはKIXAAPPLIDARTKIXAです。CPI-Cサーバー用のKIXBで、sysidKIXBAPPLIDARTKIXBです。

[KIXA]

APPLID=ARTKIXA

[KIXB]

APPLID=ARTKIXB

13.3.1.2 connections.descでのCICS APPC接続の定義
connections.descprotocolを構成します。次の例では、KIXAKIXBに接続し、protocolAPPCです。リソース・グループDTPAPBKは、後でトランザクション定義に使用します。
[KIXA]
group=DTPAPBK
protocol=APPC
netname=ARTKIXA
maximum=5,2
 
[KIXB]
group=DTPAPBK
protocol=APPC
netname=ARTKIXB
maximum=5,3
13.3.1.3 transactions.descでのCICSトランザクションの定義

サーバー側のCPI-Cトランザクションを構成します。次の例では、BC32をサーバー側のCPI-Cトランザクションとして構成します。

BC32;DTPAPBK;APPC server; xxxxxxxx

13.3.2 Oracle Tuxedoの構成

この項の内容は次のとおりです。

13.3.2.1 UBBCONFIG構成
  • SERVERSセクションでARTCTRNサーバーを構成します。次の例では、CLOPTで-sを使用してKIXBリージョンを指定し、-lを使用してCICSリソース・グループを指定しています。MIN/MAXの値は、アプリケーションでサポートする必要がある同時対話の数に合わせて調整できます。APPC/CPI-Cは対話モードのプロトコルであるため、ARTCTRNサーバーは、クライアントがCMRCVを実行するまでCMSEND上でブロックし、クライアントがCMSENDを実行するまでCMRCV上でブロックします。

    ARTCTRN

    SRVGRP=GRP02

    SRVID=30

    CONV=Y

    MIN=1 MAX=1 RQADDR=QKIX030 REPLYQ=Y

    CLOPT="-o /stdout_ctrn -e /stderr_ctrn -r -- -s KIXB -l DTPSUB:DTPAPBK"

  • SERVERSセクションでワークステーション・リスナー(WSL)サーバーを構成します。次の例では、2つのWSHが最初に起動され、最大5つのWSHを起動できます(WSHごとに最大5 /WSクライアント)。WSL SRVGRP=G1 SRVID=10 CLOPT="-A -- -n //gumby:9977 -m 2 -M 5 -x5"
  • MACHINESセクションを構成します。
    • MAXWSCLIENTS: マシンごとのWSCの最大数を指定します。
    • MAXACCESSERS: MAXWSCLIENTSに、掲示板に接続されたTuxedoサーバーの数を加えたものです(UBBCONFIGにリストされたすべてのサーバーおよび許可される最大WSL/WSHサーバーを含みます)。
  • 接続側WebLogicサーバーのSERVERSセクションでドメイン・サーバーを構成します。例:

    DMADM SRVID=1030 SRVGRP=DMGRP

    GWADM SRVID=1040 SRVGRP=GWGRP

    GWTDOMAIN SRVID=1050 SRVGRP=GWGRP

    ノート:

    UBBCONFIGtmloadcfでコンパイルしてください。
13.3.2.2 DMCONFIG構成

WTC Tuxedoドメイン構成のDMCONFIGを作成します。次の例を参照してください。

*DM_LOCAL_DOMAINS

DOM GWGRP="GWGRP"

TYPE=TDOMAIN

DOMAINID=KIXD

*DM_REMOTE_DOMAINS

wldom1 TYPE=TDOMAIN DOMAINID=TDOM2 ACL_POLICY=GLOBAL

*DM_TDOMAIN

wldom1 NWADDR="//10.0.0.1:5669"

DOM NWADDR="//10.0.0.2:5022"

*DM_LOCAL_SERVICES

KIXR_CPIS LDOM=DOM

ノート:

DMCONFIGdmloadcfでコンパイルしてください。

13.4 クライアント側の構成

この項の内容は次のとおりです。

13.4.1 Windowsクライアントの構成

Windowsクライアントはcminit()によって設定されるsym_dest_nameを使用してターゲットART CICSサーバーに接続します。sym_dest_nameは、ターゲットART CICSサーバーのsysidとして設定する必要があります。

  • Tuxedo/WSクライアントを使用するには、Windowsで2つの環境変数を設定する必要があります。
    • TUXDIR=c:/tuxedo

      これはTuxedoのインストール場所です。

    • WSNADDR=//gumby:9977

      これは、WSLのCLOPTの-nパラメータからのTuxedoサーバーWSL接続のホスト名とポートです。

  • CPI-C /WSクライアントのsysidを指定するために、KIX_CPI-C_WSSYSIDが導入されました。これは、CPI-C /WSクライアントとCPI-C CICSサーバー間の接続を確立するために必要です。これは、connections.descにリストされているクライアントsysidに設定する必要があります(この例ではKIXA)。
  • CPI-Cクライアントのランタイム・ログを追跡するために、ログ・ファイル・パスを表示する新しい環境変数が導入されました。ARTKIX_CLIENT_LOGPATHが設定されない場合、ログはローカル・ディレクトリに出力されます。

    ARTKIX_CLIENT_LOGPATH=c:/tmp/ARTKIX_client.log

13.4.2 WebLogicクライアントの構成

WTCの管理マニュアルで説明されているように、Tuxedoドメインに接続するための基本WTCアクセス・ポイント構成以外のCPI-C javaクラスを使用するには、特定の構成は必要ありません。WTCではon_startupおよびon_demand接続ポリシーがサポートされており、複数のTuxedoドメインまたは複数のマシンにわたってデプロイされた単一のドメイン(MPモード・ドメイン)へのプライマリと代替のアクセス・ポイント間のフェイルオーバーとフェイルバックをサポートできます。

13.5 Oracle Tuxedoのタイムアウト制御

Tuxedoでは、構成を通じて複数のタイプのタイムアウトが強制されます。ブロックされた操作のタイムアウト制御は、UBBCONFIGSCANUNIT設定とBLOCKTIME設定に応じて異なります。これらはどちらもRESOURCESセクションでグローバルに設定でき、さらにBLOCKTIMEは、UBBCONFIGSERVICESセクションでサービスごとに設定できます。詳細は、「UBBCONFIGでの設定」を参照してください。

これは、UBBCONFIGでのグローバル・タイムアウト管理の例です。この例では、BLOCKTIME x SCANUNITは40秒です。クライアントは、実際にレスポンスを取得するまでCMRCVでブロックします。40秒以内に完了しない場合、TPETIMEを戻してタイムアウトをレポートし、CMRCVはエラーCM_RESOURCE_FAILURE_RETRYを戻します。

*RESOURCES

BLOCKTIME 8

SCANUNIT 5

これは、UBBCONFIGでのトランザクションのきめ細かいタイムアウト管理の例です。この例では、グローバル・タイムアウト設定は60秒(12 x 5)に指定されていますが、TuxedoサービスKIXB_B32 (region/SYSID KIXBでCICSトランザクションB32にマップされる)は40秒(8x5)のタイムアウトが設定されています。

ノート:

*SERVICESセクションで明示的なBLOCKTIMEが指定されていないトランザクションは、グローバル・タイムアウト設定によって制御されます。
*RESOURCES
SCANUNIT 5
BLOCKTIME 12
…
*SERVICES
KIXB_B32 BLOCKTIME 8

13.5.1 UBBCONFIGでの設定

SCANUNIT numeric_value

サービス・リクエスト内で古いトランザクションやタイムアウト・ブロッキング呼出しを見つけるためにBBLが定期的なスキャンを行う間隔(秒単位)。この値はBBLによるスキャン処理の基本単位として使用されます。この値は、tpbegin()でで指定できるトランザクション・タイムアウト値と、BLOCKTIMEパラメータで指定されるブロッキング・タイムアウト値に影響します。SANITYSCANBBLQUERYDBBLWAITおよびBLOCKTIMEパラメータは、この単位であり、システム内のその他の時間制限の操作に使用されます。SCANUNITは、5の倍数で0より大きく60秒以下でなければなりません。デフォルトは10秒です。

BLOCKTIME numeric_value

ブロッキング呼出し(応答の受信など)の後、タイムアウトするまでの時間を基本SCANUNITの乗数で指定します。BLOCKTIMEの値は0より大きくなければなりません。このパラメータの指定がない場合は、(SCANUNIT * BLOCKTIME)が約60秒になるようにデフォルト値が設定されます。

13.5.2 セキュリティ

ART CICS CPI-CはCPI-Cセキュリティ・インタフェース(cmscsu/cmscsp)から渡されたユーザー/パスワードをチェックし、その後内部でローカルTuxedoセキュリティ・チェックを実行します。ユーザー/パスワードは、Tuxedoセキュリティ・フレームワークで設定したセキュリティ・レベルに基づいて追加する必要があります。

13.5.3 スケーリング

より多くの同時接続をサポートするために構成をスケーリングするには、次のことができます。

  • より多くの同時Windows接続を処理するために、複数のWSLを構成し、TuxedoドメインのWSH最小/最大制限を大きくします。
  • より多くの同時WebLogic接続のために複数のWTCアクセス・ポイントを処理するように、複数のTuxedoドメイン・ゲートウェイを構成します。
  • CICSトランザクションのより多くのインスタンスを並行して実行するために、複数のARTCTRNサーバーを構成します。CPI-Cは対話型プロトコルであるため、各サーバーはユーザー・レスポンスを待機してブロックします。構成するサーバーの数は、CICSトランザクションの同時ユーザーの数におおむね対応する必要があります。

13.5.4 診断

デバッグのためにランタイムログが出力されます。KIX_TRACE_LEVEL環境変数を設定して、1から9のログ・レベルを制御できます。

13.5.5 パッケージ化/インストール

ART CICS runtimeはART CICS CPI-Cサポートのために動的ライブラリを提供します。ライブラリのWindowsバージョンの名前はkixcpicws.dll、Linuxバージョンの名前はlibkixcpicws.soです。ART CICS CPI-Cライブラリを使用するには、構築するプロジェクトにMicrosoft/IBM CPI-Cライブラリのかわりにこのライブラリを構築/リンクすることのみが必要です。

  • Tuxedoワークステーション・クライアントを使用するWindows/Linuxの場合

    Windowsライブラリは、個別のWindows配布パッケージで提供されます。ライブラリkixcpicws.dllの現在のバージョンはVC6で構築され、Windows server 2003のMicrosoft Windows (32ビット) tuxedo81_win配布からTuxedoワークステーション・クライアントで動作保証されます。ライブラリを使用するには、kixcpicws.dllをアプリケーションにリンクするか、実行時に*.dllを動的に開く必要があります。

  • WTCを使用するWebLogic Serverの場合

    ART CICSはオーバーロードされたcallService()メソッドのソース・コードを提供し、一連のJavaクラス・ファイルを提供してCPI-Cインタフェースの実装を実現します。ART CICSによって提供される新しいバージョンのcallService()およびjavaクラス・ファイルを使用してEJBパッケージを再生性する必要があります。