|
|
| |
WebLogic Tuxedo コネクタ JATMI 対話
注意: BEA Tuxedo の対話通信の詳細については、「Writing Conversational Clients and Servers」を参照してください。
以下の節では、対話の概要とそれらをアプリケーションで定義および管理する方法について説明します。
WebLogic Tuxedo コネクタの対話通信の概要
WebLogic Tuxedo コネクタは、BEA Tuxedo の対話を WebLogic Server アプリケーションと Tuxedo アプリケーションの間でメッセージを交換する手段としてサポートしています。この形態の通信では、仮想接続がクライアントとサーバの間で維持され、各サイドで対話の状態に関する情報が維持されます。接続を開き、対話を開始するプロセスが、対話の開始側です。接続の制御権を持つプロセスが開始プロセスで、制御権のないプロセスが従属プロセスです。接続は、それを終了するイベントが発生するまでアクティブなままです。
対話通信では、開始プロセスと従属プロセスの間で Half-Duplex 接続が確立されます。接続の制御権は、開始プロセスと従属プロセスの間で渡されます。制御権を持つプロセスがメッセージを送信でき(開始プロセス)、制御権のないプロセスはメッセージの受信のみを行えます(従属プロセス)。
WebLogic Tuxedo コネクタの対話の特性
WebLogic Tuxedo コネクタ JATMI 対話には以下の特性があります。
tpcall
または tpacall
ではなく tpconnect
を使用してサービスの要求を開始します。
tpsend
を使用してデータを送信し、tprecv
を使用してデータを受信します。
tpforward
を呼び出すことが禁止されています。
WebLogic Tuxedo コネクタ JATMI 対話プリミティブ
注意: WebLogic Tuxedo コネクタ JATMI の詳細については、WebLogic クラスの Javadoc の weblogic.wtc.jatmi を参照してください。
以下の WebLogic Tuxedo コネクタ プリミティブは、WebLogic Server と Tuxedo の間で通信する対話クライアントおよび対話サーバを作成する際に使用します。
WebLogic Tuxedo コネクタの対話クライアントおよび対話サーバの作成
以降の節では、対話クライアントおよび対話サーバの作成方法を説明します。
対話クライアントの作成
WebLogic Tuxedo コネクタの対話クライアントを作成するには、
WebLogic Tuxedo コネクタ クライアント EJB の開発で説明されている手順を行います。次の節では、tpconnect
を使用して接続を開き、対話を開始する方法を説明します。
Tuxedo 対話サービスとの接続の確立
注意: tpconnect
の詳細については、WebLogic クラスの Javadoc の weblogic.wtc.jatmi を参照してください。
WebLogic Tuxedo コネクタの対話クライアントは、Tuxedo 対話サービスとの接続を確立する必要があります。JATMI プリミティブ tpconnect
を使用すると、接続を開いて対話を開始できます。呼び出しが成功すると、対話でデータを送受信するために使用できるオブジェクトが返されます。
次の表は、tpconnect
のパラメータを示しています。
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 コネクタの対話サーバの作成
WebLogic Tuxedo コネクタの対話サーバを作成するには、 WebLogic Tuxedo Connector サービス EJB の開発で説明されている手順を行います。
メッセージの送受信
対話接続が WebLogic Server アプリケーションと Tuxedo アプリケーションの間で確立されたら、開始プロセス(メッセージを送信)と従属プロセス(メッセージを受信)の間の通信が送信および受信の呼び出しを使用して遂行されます。以下の節では、WebLogic Tuxedo コネクタ アプリケーションが JATMI プリミティブ tpsend
および tprecv
をどのように使用するのかを説明します。
メッセージの送信
注意: tpsend
の詳細については、WebLogic クラスの Javadoc の weblogic.wtc.jatmi を参照してください。
JATMI プリミティブ tpsend
を使用すると、Tuxedo アプリケーションにメッセージを送信できます。
次の表は、tpsend
のパラメータを示しています。
メッセージの受信
注意: tprecv
の詳細については、WebLogic クラスの Javadoc の weblogic.wtc.jatmi を参照してください。
JATMI プリミティブ tprecv
を使用すると、Tuxedo アプリケーションからメッセージを受信できます。
次の表は、tprecv
のパラメータを示しています。
対話の終了
WebLogic Server と Tuxedo の対話は、サーバ プロセスがそのタスクを正常に完了したときに終了します。以下の節では、対話の終了方法について説明します。
Tuxedo アプリケーションが開始した対話
WebLogic Server 対話サーバによる return
の正常な呼び出しで対話が終了します。TPEV_SVCSUCC イベントが、サービスの正常な終了を示すために接続を開始した Tuxedo クライアントに送信されます。接続はその後に適切な方法で切断されます。
WebLogic Tuxedo コネクタ アプリケーションが開始した対話
Tuxedo 対話サーバによる tpreturn
の正常な呼び出しで対話が終了します。TPEV_SVCSUCC イベントが、サービスの正常な終了を示すために接続を開始した WebLogic Tuxedo コネクタ クライアントに送信されます。接続はその後に適切な方法で切断されます。
階層的な対話の終了
階層的な対話を適切に終了するためには、対話の終了する順序が重要になります。
A-B および B-C という 2 つのアクティブな接続があると仮定します。B が両方の接続を管理する WebLogic Tuxedo コネクタ アプリケーションである場合、return
を呼び出すと、その呼び出しは失敗し、TPEV_SVCERR イベントがすべての開いている接続にポストされ、それらの接続は無秩序に閉じます。
両方の接続を適切に終了するには、アプリケーションでは次のシーケンスを実行する必要があります。
TPRECVONLY
で tpsend
を呼び出し、B-C 接続の制御権を Tuxedo アプリケーション C に引き渡します。
TPSUCCESS
、TPFAIL
、または TPEXIT
に設定して departure
を呼び出します。
return
を呼び出し、A についてイベント(TPEV_SVCSUCC または TPEV_SVCFAIL)をポストします。
対話サービスは、要求または応答の呼び出しを行うことができます。したがって、直前の例で、B から C への呼び出しは tpconnect
ではなく tpacall
または tpcall
を使用して実行できます。対話サービスでは、tpforward
を呼び出すことは許可されていません。
無秩序な切断の実行
WebLogic Server 対話クライアントまたは対話サーバは、tpdiscon
を呼び出して無秩序な切断を実行します。これは、接続を「打ち切る」ような処理です。
次に、tpdiscon
の呼び出しについて説明します。
対話通信のイベントについて
注意: WebLogic Tuxedo コネクタ JATMI の詳細については、WebLogic クラスの Javadoc の weblogic.wtc.jatmi を参照してください。
WebLogic Tuxedo コネクタ JATMI では、5 つのイベントを使用して対話通信を管理します。次の表は、それらのイベント、それらのイベントが返される機能、およびそれぞれの詳しい説明を示しています。
WebLogic Tuxedo コネクタの対話ガイドライン
対話が正常に完了するように、対話モードでは以下のガイドラインに従ってください。
MAXCONV
パラメータで定義)を超えた場合、WebLogic Tuxedo コネクタの例外値としては TPEV_DISCONIMM が予期されます。
tprecv
では、TPEV_DISCONIMM 例外値が生じます。
tpforward
を実行する Tuxedo 対話サービスに接続された場合、WebLogic Tuxedo コネクタの例外値としては TPEV_DISCONIMM が予期されます。
tprecv
で TPEV_DISCONIMM 例外として捕捉されます。