BEA ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > WebLogic Server > WebLogic Tuxedo Connector プログラマーズ ガイド > WebLogic Tuxedo Connector JATMI 会話 |
WebLogic Tuxedo Connector プログラマーズ ガイド
|
WebLogic Tuxedo Connector JATMI 会話
注意: BEA Tuxedo の対話通信の詳細については、「会話型クライアントおよびサーバのコーディング」を参照してください。
以下の節では、会話の概要とそれらをアプリケーションで定義および管理する方法について説明します。
WebLogic Tuxedo Connector の対話通信の概要
WebLogic Tuxedo Connector は、BEA Tuxedo の会話を WebLogic Server アプリケーションと Tuxedo アプリケーションの間でメッセージを交換する手段としてサポートしています。この形態の通信では、仮想接続がクライアントとサーバの間で維持され、各サイドで会話の状態に関する情報が維持されます。接続を開き、会話を開始するプロセスが、会話の開始側です。接続の制御権を持つプロセスが開始プロセスで、制御権のないプロセスが従属プロセスです。接続は、それを終了するイベントが発生するまでアクティブなままです。
対話通信では、開始プロセスと従属プロセスの間で Half-Duplex 接続が確立されます。接続の制御権は、開始プロセスと従属プロセスの間で渡されます。制御権を持つプロセスがメッセージを送信でき(開始プロセス)、制御権のないプロセスはメッセージの受信のみを行えます(従属プロセス)。
WebLogic Tuxedo Connector の会話の特性
WebLogic Tuxedo Connector JATMI 会話には以下の特性があります。
WebLogic Tuxedo Connector JATMI 会話プリミティブ
以下の WebLogic Tuxedo Connector プリミティブは、WebLogic Server と Tuxedo の間で通信する対話クライアントおよび対話サーバを作成する際に使用します。
接続を中止し、TPEV_DISCONIMM イベントを生成するために使用する。 |
|
WebLogic Tuxedo Connector の対話クライアントおよび対話サーバの作成
以降の節では、対話クライアントおよび対話サーバの作成方法を説明します。
WebLogic Tuxedo Connector の対話クライアントを作成するには、WebLogic Tuxedo Connector クライアント EJB の開発で説明されている手順を行います。次の節では、tpconnect を使用して接続を開き、会話を開始する方法を説明します。
WebLogic Tuxedo Connector の対話クライアントは、Tuxedo 対話サービスとの接続を確立する必要があります。JATMI プリミティブ tpconnect を使用すると、接続を開いて対話を開始できます。呼び出しが成功すると、会話でデータを送受信するために使用できるオブジェクトが返されます。
対話サービス名の文字ポインタ。svc を指定しないと、呼び出しは失敗し、TPException が TPEV_DISCONIMM に設定される。 |
|
データ バッファのポインタ。接続を確立するときに、data パラメータをバッファを指すように設定することでデータを同時に送信できる。バッファの type および subtype は、呼び出されるサービスによって認識されなければならない。data の値を NULL に設定すると、データが送信されないことを指定できる。 |
|
アプリケーションの必要に応じて、フラグを単独で、または組み合わせて使用する。有効なフラグは、以下のとおりである。 TPSENDONLY: 開始側が制御権を保持することを指定する。呼び出されるサービスは従属プロセスになり、データの受信だけが可能である。TPRECVONLY と併用することはできない。 TPRECVONLY: 呼び出されたサービスに制御権を渡すことを指定する。開始側は従属プロセスになり、データの受信だけが可能である。TPSENDONLY と併用することはできない。 TPNOTRAN: svc が呼び出されて開始側がトランザクション モードのときは、svc は開始側のトランザクションの一部ではないものとすることを指定する。呼び出しは、トランザクション タイムアウトの影響を受け続ける。svc が失敗しても、開始側のトランザクションは影響を受けない。 TPNOBLOCK: ブロッキング条件が存在する場合は要求を送信しないことを指定する。TPNOBLOCK を指定しないと、条件が解消されるまで、トランザクション タイムアウトが発生するまで、またはブロッキング タイムアウトが発生するまで、開始側はブロックされる。 TPNOTIME: 開始側は無期限にブロックされ、ブロッキング タイムアウトの影響を受けないことを指定する。開始側がトランザクション モードの場合、呼び出しはトランザクション タイムアウトの影響を受ける。 |
TuxedoConversationBean.java のコード例
次に、tpconnect を使用して会話を開始するコードの例を示します。
.
.
.
Context ctx;
Conversation myConv;
TuxedoConnection myTux;
TuxedoConnectionFactory tcf;
.
.
.
ctx = new InitialContext();
tcf = (TuxedoConnectionFactory) ctx.lookup ("tuxedo.services.TuxedoConnection");
myTux = tcf.getTuxedoConnection();
flags =ApplicationToMonitorInterface.TPSENDONLY;
myConv = myTux.tpconnect("CONNECT_SVC",null,flags);
.
.
.
WebLogic Tuxedo Connector の対話サーバの作成
WebLogic Tuxedo Connector の対話サーバを作成するには、WebLogic Tuxedo Connector サービス EJB の開発で説明されている手順を行います。
対話接続が WebLogic Server アプリケーションと Tuxedo アプリケーションの間で確立されたら、開始プロセス(メッセージを送信)と従属プロセス(メッセージを受信)の間の通信が送信および受信の呼び出しを使用して遂行されます。以下の節では、WebLogic Tuxedo Connector アプリケーションが JATMI プリミティブ tpsend および tprecv をどのように使用するのかを説明します。
JATMI プリミティブ tpsend を使用すると、Tuxedo アプリケーションにメッセージを送信できます。
TPRECVONLY: 開始プロセスのデータが送信された後に開始プロセスが接続の制御権を放棄することを指定する。開始プロセスは従属プロセスになり、データを受信することだけができる。 TPNOBLOCK: ブロッキング条件が存在する場合に要求が送信されないことを指定する。TPNOBLOCK を指定しないと、条件が解消されるまで、トランザクション タイムアウトが発生するまで、またはブロッキング タイムアウトが発生するまで、開始側はブロックされる。 TPNOTIME: 開始プロセスが無限にブロックされることを拒否せず、ブロッキング タイムアウトの影響を受けないことを指定する。呼び出しは、トランザクション タイムアウトの影響を受ける。 |
JATMI プリミティブ tprecv を使用すると、Tuxedo アプリケーションからメッセージを受信できます。
TPNOBLOC: tprecv が応答の到着を待たないことを指定する。応答があった場合は、tprecv は応答を取得して復帰する。このフラグを指定しない場合は、応答がないと、tprecv は、応答、トランザクション タイムアウト、またはブロッキング タイムアウトのいずれかが発生するのを待つ。 TPNOTIME: tprecv が応答を無限に待つことを指定する。tprecv は、ブロッキング タイムアウトの影響は受けないが、トランザクション タイムアウトの影響は受ける。 |
WebLogic Server と Tuxedo の会話は、サーバ プロセスがそのタスクを正常に完了したときに終了します。以下の節では、会話の終了方法について説明します。
WebLogic Server 対話サーバによる return の正常な呼び出しで会話が終了します。TPEV_SVCSUCC イベントが、サービスの正常な終了を示すために接続を開始した Tuxedo クライアントに送信されます。接続はその後に適切な方法で切断されます。
WebLogic Tuxedo Connector アプリケーションが開始した会話
Tuxedo 対話サーバによる tpreturn の正常な呼び出しで会話が終了します。TPEV_SVCSUCC イベントが、サービスの正常な終了を示すために接続を開始した WebLogic Tuxedo Connector クライアントに送信されます。接続はその後に適切な方法で切断されます。
階層的な会話を適切に終了するためには、会話の終了する順序が重要になります。
A-B および B-C という 2 つのアクティブな接続があると仮定します。B が両方の接続を管理する WebLogic Tuxedo Connector アプリケーションである場合、return を呼び出すと、その呼び出しは失敗し、TPEV_SVCERR イベントがすべての開いている接続にポストされ、それらの接続は無秩序に閉じます。
両方の接続を適切に終了するには、アプリケーションでは次のシーケンスを実行する必要があります。
対話サービスは、要求または応答の呼び出しを行うことができます。したがって、直前の例で、B から C への呼び出しは tpconnect ではなく tpacall() または tpcall() を使用して実行できます。対話サービスでは、tpforward を呼び出すことは許可されていません。
WebLogic Server 対話クライアントまたは対話サーバは、tpdiscon を呼び出して無秩序な切断を実行します。これは、接続を「打ち切る」ような処理です。
WebLogic Tuxedo Connector JATMI では、5 つのイベントを使用して対話通信を管理します。次の表は、それらのイベント、それらのイベントが返される機能、およびそれぞれの詳しい説明を示しています。
WebLogic Tuxedo Connector の会話ガイドライン
会話が正常に完了するように、会話モードでは以下のガイドラインに従ってください。
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |