この作業は、最適化されたローカル・アダプターのネイティブ API を使用して、外部アドレス・スペースを CICS® Application
Server for z/OS に接続し、そのアプリケーション・サーバーにデプロイされている Enterprise JavaBeans (EJB) アプリケーションを呼び出す場合に行います。
始める前に
WebSphere® Application Server デーモン・グループが、登録要求の発信元と同じ z/OS イメージ上でアクティブになっている必要があります。
顧客情報管理システム (CICS) で実行している場合は、最適化されたローカル・アダプターの Task Related User Exit (TRUE) プログラムが、CICS と WebSphere Application Server との間に接続が確立される前にアクティブになっている必要があります。トランザクションによる TRUE プログラムの活動化方法については、『クライアント環境への BBOC トランザクション、BBO$ トランザクション、および BBO# トランザクションのインストール』トピック、および『WebSphere Application Server トランザクション、BBOC、BBO$、BBO#』トピックを参照してください。
z/OS バッチおよび UNIX Systems Services (USS) で実行されているプログラムの場合は、TRUE プログラムの活動化は必要ありません。現行のアドレス・スペースが、Register BBOA1REG API に対する呼び出しを使用して、ターゲットの WebSphere Application Server デーモン・グループを登録済みであり、デーモン・グループにバインドされていることを確認してください。
このタスクについて
アダプター API は、外部のネイティブ言語プログラムからステートレス・セッション Bean を呼び出し、応答を取得します。
これは、より高い柔軟性を求める利用者を対象に、応答域の最大長が前もってわからない場合のために設計されています。
手順
- Cobol、PL/I、C/C++、アセンブラー・プログラムなどの、クライアント・アドレス・スペースのネイティブ言語アプリケーションは、BBOA1CNG Connection Get API を呼び出し、登録呼び出しに使用した登録名を渡します。 以降のすべての API 呼び出しで使用する必要がある接続ハンドルが戻されます。
- クライアント・アプリケーションは、そのパラメーターを収集し、ターゲット・サービス名を、呼び出すエンタープライズ Bean の Java Naming
and Directory Interface (JNDI) ホーム・インターフェース・パス名として指定して、BBOA1SRQ Send Request API を呼び出します。 その結果、WebSphere Application Server の制御領域への接続が確立され、その後、Workload Manager (WLM) から派生したサーバント領域への接続が確立されます。この領域では、渡された JNDI ホーム・インターフェースは、その create メソッドを実行します。事前設定メソッド、execute は、バイト配列パラメーターとともに配置され、呼び出されます。
非同期パラメーターが指定され、1 に設定されている場合、制御はすぐに呼び出し元に戻されます。非同期パラメーターが 0 (ゼロ) に設定されている場合、API は戻り値とともに、応答の長さを ResponseLength パラメーターに格納して戻します。
- WebSphere Application Server サーバントで、ターゲット Bean の execute メソッドがビジネス・ロジックを呼び出します。 これで、ターゲット Bean の execute メソッドは、シリアライズされたバイト配列として応答データをネイティブ言語の呼び出し元に戻す前に、必要なビジネス・ロジックを呼び出すことができます。
- 戻りコードおよび理由コードの 0 (ゼロ) は、クライアント API Send_Request が正常にキューに入れられたことを示します。
非同期パラメーターが 0 (ゼロ) に設定されている場合は、戻り値とともに、応答の長さが ResponseLength パラメーターに格納されて提供されます。
非同期パラメーターが 1 に設定されている場合は、応答の準備が整っていない可能性があり、BBOA1RCL Receive_RespLen API に対する呼び出しによって、応答が着信しているかどうか、および応答着信時間の長さを判別する必要があります。
- 非同期の Send_Request 呼び出しの場合、クライアント・アプリケーションは、非同期 0 または 1 のいずれかの呼び出しとともに BBOA1RCL Receive_RespLen API を呼び出します。 非同期 0 (ゼロ) 呼び出しは、応答を受信するまでアダプター API がスレッドをブロックすることを示します。非同期 1 呼び出しは、応答が着信しているかどうかに関係なく、アダプター API がすぐに戻ることを示します。
- 戻りコードおよび理由コードの 0 (ゼロ) は、Receive_RespLen クライアント API 呼び出しが正常に完了したことを示します。 非同期パラメーターを 1 に設定すると、ResponseLength および戻り値がすべて 0xFF の場合、渡された接続上では、まだ応答が受信されていません。
これによりクライアント・アプリケーションは、要求を送信し、応答を受信する方法をより制御することができます。
クライアントは送信要求をグループ化して、一連の接続を通じて順次送信し、接続の応答を定期的にポーリングすることができます。
関連する Receive_RespLen 呼び出しおよび Get_Data API 呼び出しが処理されるまでは、非同期 1 呼び出しで Send_Request を処理する接続に、同じ接続で別の Send_Request を渡すことはできません。
重要:
非同期パラメーターを 1 に設定してこれらの API を非同期で使用したり、送信要求をグループ化したり、それらを同時に処理したりすることは、非トランザクションとして構成された接続でのみ実行可能です。例えば、CICS を使用していて、作業単位を RRS リカバリー単位と合わせる場合、CICS の同期点を WebSphere Application Server に伝搬させる必要があるのであれば、現行の CICS タスクでは、特定の WebSphere サーバーへの接続は 1 つしか存在できません。
この要求を送信すると、同じ CICS タスク内の同じサーバーへの複数の接続間においてアダプターがコミットを伝搬しないことを示す警告戻りコードが受信されます。
- クライアント・アプリケーションは、Receive_RespLen API から戻された応答の長さを使用して、その応答データを保持するのに十分な領域があるかどうかを確認し、BBOA1GET Get Data API 呼び出しを使用して、応答データをバッファーにコピーします。
- クライアント・アプリケーションは同じ接続ハンドルを使用して、接続を解除する準備が整うまでこれを繰り返します。
接続の解除時には、BBOA1CNR Connection_Release が呼び出されます。 Connection Get API 呼び出し時に接続ハンドルを保持し、再使用するには、接続ハンドルを解除しておく必要があります。
タスクの結果
クライアントは最適化されたローカル・アダプター API を使用して、ステートレス・セッション Bean を
WebSphere Application Server から呼び出します。