• 検索結果がありません。

クライアントアプリケーションの作成

ドキュメント内 TP1/Message Queue - Access 使用の手引 (ページ 65-69)

2   MQC クライアント機能

2.3  クライアントアプリケーションの作成

●C++言語

C++言語を使用して作成します。詳細については,「5. MQCクライアント機能の C++インタフェース」を参照してください。

C++言語で作成したクライアントアプリケーションで必要なリンケージオプションを 次の表に示します。

表2-11 リンケージオプション(C++言語)

●Java言語

Java言語を使用して作成します。詳細については,「6. MQCクライアント機能の Javaインタフェース」を参照してください。

JTAインタフェース接続をする場合は,Java言語のJMSインタフェースを使用して 作成します。詳細については,「7. MQCクライアント機能のJMSインタフェース」

を参照してください。

TP1/Message Queue - AccessのJMSインタフェースは,Sun Microsystems, Inc. が 提供するJMS 1.0のインタフェースに基づいて実装しています。JMS 1.0とMQCク ライアント機能のJMSインタフェースとの機能差については,「付録B JMS仕様と MQCクライアント機能のJMSインタフェースとの差異」を参照してください。

2.3.2 注意事項

クライアントアプリケーションの作成,および実行時の注意事項について次に示します。

●TP1/Message Queue - Accessは2相コミットに対応しています。ただし,ローカルト ランザクション機能は1相コミットです。

●XAインタフェースについて,次に示す機能は使用できません。

トランザクションブランチとスレッドの結合の移行(マイグレーション)

Windows XAインタフェース接続 libmqccbx.lib

XAインタフェース接続 libmqccb.lib

適用OS トランザクション連携の種別 リンケージオプション AIX XAインタフェース接続 -brtl -lmqccpp -lmqcx

-lpthread

XAインタフェース接続 -brtl -lmqccpp -lmqc -lpthread HP-UX,Linux XAインタフェース接続 -lmqccpp -lmqcx -lpthread

XAインタフェース接続 -lmqccpp -lmqc -lpthread

Windows XAインタフェース接続 libmqcppx.lib

XAインタフェース接続 libmqcpp.lib

適用OS トランザクション連携の種別 リンケージオプション

XA関数の非同期動作

また,xa_open関数はスレッド単位で発行してください。

●MQCクライアント機能は,トランザクションの決着をMQCサーバ機能に依頼しま す。そのため,回線障害やサーバダウンが原因でトランザクションの決着時にMQC サーバ機能と連絡が取れない場合は,TMの決着依頼に対しリトライを要求します。

したがって,トランザクション中にMQCサーバ機能を停止した場合は,MQCクラ イアント機能はMQCサーバ機能が再起動するまで,TMの決着依頼に対し繰り返し リトライを要求します。

●TP1/Message Queue - Access は,次の命令のエラー時に理由コードとして

MQRC_CONNECTION_BROKEN(コネクション切断)を返す場合があります。こ の理由コードを受け取った場合は,MQIに指定したコネクションハンドルが無効にな ります。MQCONN命令の発行によってコネクションを再度設定してください。

MQDISC,MQOPEN,MQCLOSE,MQGET,MQPUT,MQPUT1,MQSET,

MQINQ,MQCMIT,またはMQBACK

●TP1/Message Queue - Accessを使用するUAPで,MQGMO構造体のOptionsパラ メタにMQGMO_WAITを指定した場合は,MQGET命令が完了するまで,UAPを正 常に停止させることはできません。

●UAPをJavaで作成する場合,Javaがプロセスメモリを解放します。このため,メ モリ不足(理由コード:SIGSEGV)でJavaが異常終了する場合があります。Java 起動時に,-mxXXm(XX:サイズ)を指定して最大ヒープサイズを調整してくださ い。

●TP1/Message Queue - AccessをXA接続して使用する場合,トランザクション発生

(トランザクションマネージャが提供する関数発行)後のトランザクション内指定の MQPUT命令,MQPUT1命令,またはMQGET命令を発行したときに,サーバでト ランザクションが発生します。

その後,トランザクションが決着するまでの間,トランザクションを発生させたクラ イアントのスレッドで発行されたMQCONN命令は,理由コードとして

MQRC_ALREADY_CONNECTED(アプリケーションはすでに接続されています)

を返し,そのトランザクションで使用しているコネクションハンドルを返します。

●TP1/Message Queue - Accessは,MQDISC命令発行時にMQCゲートウェイサーバ で後処理をするため,直後に発行されたMQCONN命令が

MQRC_Q_MGR_NOT_AVAILABLE(キューマネジャが接続不能)でエラーリターン する場合があります。

MQDISC命令,またはMQCONN命令を繰り返し発行するUAPを使用した場合は,

同時MQCONN数とMQCゲートウェイサーバ数が同じであるときにも,MQCONN 命令のリトライ発行処理をしてください。

●TP1/Message Queue - Accessを使用するUAPでは,MQCONN命令発行時に回線障 害(ソケット関数異常終了)が発生した場合に,理由コードとして

MQRC_UNEXPECTED_ERROR(予期しないエラーが発生)を返します。また,

MQCゲートウェイサーバが不足した場合には,理由コードとして

MQRC_Q_MGR_NOT_AVAILABLE(キューマネジャが接続不能)を返します。どち らの場合もUAPでMQCONN命令のリトライ発行処理をしてください。

● サーバ側に対するトランザクション制御依頼の送受信中にクライアントアプリケー ションがダウンした場合,サーバ側のトランザクション状態とクライアント側のトラ ンザクション状態が不一致となることがあります。この場合,サーバ側で次の対処を することでトランザクションをロールバックできます。

1. OpenTP1のトランザクション状態表示コマンド(trnls -t)を実行し,不一致と なったトランザクションを発生させたサーバ名(MQCGWPサーバ名)を確認し ます。

2. 確認したMQCGWPサーバをdcsvstopコマンドで正常停止します。

3. 1.で確認したMQCGWPサーバに対してmqccontrnコマンドに-fオプションを指 定して実行します。

●XA連携を行う場合,コネクションハンドルとトランザクションは1対1の関係で使 用してください。一つのコネクションハンドルを複数のトランザクションで同時に使 用できません。また,トランザクション内で複数のコネクションハンドルを使用でき ません。

●JMSインタフェースのAPIトレース取得情報について

JMSインタフェースのAPIトレースは,MQIレベルの情報が取得されます。JMSイ ンタフェースでは,デプロイ以降で発行されたすべてのMQI情報が取得されます。

ドキュメント内 TP1/Message Queue - Access 使用の手引 (ページ 65-69)