BEA Logo BEA Tuxedo Release 8.0

  BEA ホーム  |  イベント  |  ソリューション  |  パートナ  |  製品  |  サービス  |  ダウンロード  |  ディベロッパ・センタ  |  WebSUPPORT

 

   Tuxedo ホーム   |   ATMI アプリケーションでの BEA Tuxedo TOP END Domain Gateway の使用   |   先頭へ   |   前へ   |   次へ   |   目次

 


BEA Tuxedo クライアントから RTQ へのメッセージ登録

BEA Tuxedo クライアントは、tpenqueue(3c) を呼び出してメッセージを BEA TOP END の RTQ キューに登録することができます。呼び出しで指定されたキュー・スペース (QSPACE) パラメータに基づいて、BEA Tuxedo アプリケーションは要求を TEDG にルーティングします。BEA Tuxedo クライアントに関して、TEDG は TMQUEUE(5) サーバの機能を果たします。

BEA TOP END 管理者は RTQ キューを BEA TOP END システムで作成する必要があります。RTQ キューの作成については、『BEA TOP END Recoverable Transaction Queuing Guide』を参照してください。RTQ キューを BEA Tuxedo のキュー・スペースとして宣言するには、TEDG の DMCONFIG ファイルの DM_REMOTE_SERVICES セクションに、そのキュー・スペースの QSPACE エントリが定義されていなければなりません。BEA TOP END システムの RTQ キューのステータス、つまりキューに対する RTQ サーバが利用可能かどうかは、接続がアクティブの間はトラッキングされません。TEDG でサポートされているキュー・スペースは qmadmin では定義されません。 キュー・スペースは BEA Tuxedo の /Q キューに対して定義されます。

TEDG はキュー・スペースエントリの TE_RTQGROUPTE_RTQNAME、およびオプションの TE_TARGET パラメータを使って、対応する BEA TOP END キューを決定します。RTQ 要求のサービス名を決定するには、tpenqueue() 関数のキュー名 (qname) パラメータを使用します。キュー名に一致する QNAME エントリを DM_REMOTE_SERVICES セクションで検索します。関連する 4 つのパラメータ (TE_PRODUCTTE_FUNCTIONTE_TARGET、および TE_QUALIFIER) の値を取得し、BEA TOP END システムに送信するメッセージに指定します。BEA TOP END システムに対して、TEDG は tp_rtq_put 要求と同じ処理を行います。

キュー・スペースが正常にマッピングされないと、TEDG は TPENOENT を返します。qname がマッピングされないと、tpenqueue() の戻りコード TPEDIAGNOSTIC および診断値 QMEBADQUEUE が返されます。BEA TOP END システムによって返されるステータスは BEA Tuxedo 戻り値にマッピングされ、BEA Tuxedo クライアントに送信されます。

RTQ キューに登録されるメッセージは RTQ によってスケジューリングされ、受信側サーバは通常の方法でメッセージにアクセスします。要求に関連するクライアント識別子は TEDG ローカル・ドメイン ID です。ほかの RTQ メッセージ同様、サーバは終了時に RTQ に応答しますが、データを返すことはできません。サーバの応答が必要な場合は、クライアントとサーバが応答キュー情報を実際のクライアント・メッセージ内で送信し、BEA Tuxedo システムの /Q 機能による応答処理をエミュレートすることが必要です。

TEDG と BEA Tuxedo クライアントの動作

BEA Tuxedo クライアントでは、TEDG を介してメッセージを BEA TOP END の RTQ キューに登録するために tpenqueue() 関数を使用します。

BEA Tuxedo クライアントのプログラマは次の情報を把握している必要があります。

BEA TOP END の RTQ メッセージは 30,000 バイトに制限されているため、クライアント要求はこのサイズを超えることはできません。FML32 メッセージに対しては、FML インデックスを除いたメッセージにこの制限が適用されます。

TEDG によるクライアント要求のマッピング

クライアント要求にはトランザクションに関与するものとしないものがあります。次の表は、BEA Tuxedo クライアントの tpenqueue のフラグおよび関連するパラメータが BEA TOP END の RTQ 要求にどのようにマッピングされるかを示しています。これらのフラグおよびパラメータのマッピングにより、通常 BEA Tuxedo システムで行われるタスクを TEDG で実行することができます。

BEA Tuxedo クライアントのフラグのマッピング

BEA Tuxedo クライアントのフラグ

動作

TPQTIME_ABS

このフラグを設定すると、TPQCTL deq_time の値は、メッセージをキューから取り出すようにクライアントが実際に指定する時間になります。値は UNIX 時間型として格納されます。この時間値は、クライアントに関連する絶対時間値として RTQ サーバで処理されます。

TPQTIME_REL

このフラグを設定すると、TPQCTL deq_time の値は、メッセージがキューから取り出されるまでの秒数になります。TEDG はこの値を RTQ schedule_time パラメータ (R:HH:MM 形式) にマッピングします。

TPNOTRAN

TEDG は、tpenqueue 要求が ATMI ライブラリによってクライアントのトランザクションから除外されるという事実を保持します。

TPQMSGID

このフラグを設定すると、RTQ によって返される RTQ request_id が、正常に行われた要求の TPQCTL msgid フィールドに格納されます。


 

ほかの tpenqueue() のオプションのフラグは次のとおりです。これらのフラグは TEDG でサポートされていません。TPQCTLurcode フィールドもサポートされていません。

tpenqueue() 呼び出しで BEA Tuxedo クライアントに返される tperrno 値は標準の値です。TEDG は TMQUEUE サーバとして機能するので、TEDG および RTQ 関連のエラーは TPEDIAGNOSTIC tperrnoTPQCTL 診断フィールドの対応する値の両方にマッピングされます。

エラー値

TEDG、BEA TOP END システム、または BEA TOP END サーバに問題がある場合、次のエラー値が BEA Tuxedo クライアントに返されます。1 つのエラー値は、複数の原因のうちの 1 つにしかすぎない場合があることに注意してください。

TEDG が宣言する QSPACE は、キュー処理を行う実際の BEA TOP END の RTQ サーバの可用性に基づくわけではないので、実際にはそのキュー・スペースを利用できない BEA TOP END ノードにメッセージがルーティングされることもあります。その場合、ほかのルーティング決定では要求は正常に行われても、tperrnoTPENOENT が設定されます。キュー・スペースを複数のノードで利用できる場合、BEA Tuxedo アプリケーション、BEA TOP END アプリケーション、および TEDG の設計ではこの種の障害が発生する可能性を考慮する必要があります。複数の再起動可能なサーバを定義したアプリケーションであれば、このようなエラーが発生する可能性は低くなります。

BEA Tuxedo クライアントに返されるエラー値

BEA Tuxedo のエラー値

原因

TPENOENT

QSPACE パラメータに一致するキュー・スペースが QSPACE エントリにありません。

TPENOENT

BEA TOP END システムが TP_SERVICE を返しました。キューに対する RTQ サーバを利用できません。

TPENOENT

要求時の接続が失敗しました。

TPESYSTEM

公開鍵/秘密鍵による暗号化が原因のエラー。

BEA Tuxedo システムが暗号化を要求するように設定され、TEDG は BEA TOP END システムに送信する前にメッセージを解読できなかったため、クライアント入力が拒否されました。

TPESYSTEM

デジタル署名が原因のエラー。

BEA Tuxedo システムがデジタル署名を要求するように設定され、TEDG は BEA TOP END システムに送信する前にメッセージからデジタル署名を削除できなかったため、クライアント入力が拒否されました。

TPEDIAGNOSTICQMEBADQUEUE

qname パラメータに一致するキュー名が QNAME エントリにありません。

TPEDIAGNOSTICQMEINVAL

サポートされていない次のフラグのいずれかが設定されました。TPQREPLYQTPQFAILUREQTPQCORRIDTPQBEFOREMSGIDTPQTOPTPQPRIORITYTPQDELIVERYQOSTPQREPLYQOSTPQEXPTIME_ABSTPQEXPTIME_RELTPQEXPTIME_NEVERTPQOSDEFAULTPERSISTTPQOSPERSISTENT、TPQOSNONPERSISTENT

TPEDIAGNOSTICQMEINVAL

ユーザ・バッファのタイプが、QNAME エントリの INBUFTYPE フィールドで指定されたタイプと一致していないか、TEDG でサポートされているタイプではありません(FML32CARRAY、および X_OCTET バッファ・タイプがサポートされています)。

TPEDIAGNOSTICQMEINVAL

(FML バッファの FML インデックスを除いた) ユーザ・バッファが最大 RTQ メッセージ・サイズの 30,000 バイトを超えています。

TPEDIAGNOSTICQMEINVAL

TPQTIME_REL フラグが設定され、TPQCTL deq_time が 86400 (つまり 24 時間) より大きい値に設定されています。

TPEDIAGNOSTICQMENOSPACE

BEA TOP END システムが TP_RTQ_EOF および TP_RTQ_NO_SPACE を返しました。

TPEDIAGNOSTICQMESYSTEM

BEA TOP END システムが TP_RTQ_ERRORTP_RTQ_MEMERR、および TP_RTQ_QDISABLED を返しました。

TPEDIAGNOSTIC, QMESYSTEM

BEA TOP END システムが TP_RESET を返しました。


 

関連項目

 

先頭へ戻る 前のトピックへ 次のトピックへ