![]() |
![]() |
|
|
| |
WebLogic Tuxedo コネクタ クライアント EJB の開発
注意: WebLogic Tuxedo コネクタ JATMI の詳細については、WebLogic Server クラスの Javadocを参照してください。WebLogic Tuxedo コネクタ クラスは、weblogic.wtc.jatmi
および weblogic.wtc.gwt
パッケージに含まれています。
次の節では、ユーザの入力を受け取り、サーバ プロセスまたはリクエストされたサービスを提供する発信オブジェクトにサービス リクエストを送信するクライアント EJB の作成方法について説明します。
WebLogic Tuxedo コネクタ JATMI
クライアント クラスは、Tuxedo で検出されたサービスにアクセスするクライアントを作成するために使用します。
アプリケーションとの接続および切断
Tuxedo および WebLogic Tuxedo コネクタは、それぞれ異なった方法でサービスに接続します。
アプリケーションへの接続
次の節では、Tuxedo および WebLogic Tuxedo コネクタがアプリケーションに接続する方法を比較します。
tpinit()
を使用します。
TuxedoConnection
を使用して Tuxedo オブジェクトを取得したのち、getTuxedoConnection()
を使用して Tuxedo オブジェクトへの接続を作成します。次の例は、WebLogic Server アプリケーションが WebLogic Tuxedo コネクタを使用してどのように Tuxedo アプリケーションに接続するのかを示しています。
コード リスト 2-1 Tuxedo アプリケーションに接続するためのクライアント コード例
.
.
.
try {
ctx = new InitialContext();tcf =
} catch (NamingException ne) {
(TuxedoConnectionFactory) ctx.lookup("tuxedo.services.TuxedoConnection");
// tuxedo オブジェクトを取得できなかった場合に TPENOENT を送出する
throw new TPException(TPException.TPENOENT,
"Could not get TuxedoConnectionFactory : " + ne);
}myTux = tcf.getTuxedoConnection();
.
.
.
アプリケーションからの切断
次の節では、Tuxedo および WebLogic Tuxedo コネクタがアプリケーションとの接続を切断する方法を比較します。
tpterm()
を使用します。
tpterm()
を使用して Tuxedo オブジェクトへの接続を終了します。
クライアントの基本操作
クライアント プロセスは、Java および JATMI プリミティブを使用して、次の基本アプリケーション タスクを提供します。
クライアントは、アプリケーションとの接続を切断する前に、いくつでもサービス リクエストを送信および受信できます。
Tuxedo オブジェクトの取得
TuxedoConnectionFactory
を使用して JNDI ツリーで「tuxedo.services.TuxedoConnection
」をルックアップすることによって、リモート ドメインへの接続を確立し、getTuxedoConnection()
を使用して TuxedoConnection
オブジェクトを取得します。
メッセージ バッファリングの実行
アプリケーションと Tuxedo 間でメッセージの送信および受信を行うときは、次のバッファ タイプを使用します。
メッセージの送信および受信
WebLogic Tuxedo コネクタ クライアントは、Tuxedo サービス アプリケーションとの間で以下の 2 タイプの通信をサポートしています。
要求/応答通信
WebLogic Tuxedo コネクタ クライアント アプリケーションと Tuxedo 間で要求を行い、応答メッセージを受信するには、次の JATMI プリミティブを使用します。
対話通信
注意: 対話通信の詳細については、 WebLogic Tuxedo コネクタ JATMI 対話を参照してください。
以下の JATMI プリミティブは、Tuxedo サービスと通信する対話クライアントを作成する際に使用します。
Tuxedo オブジェクトへの接続の終了
オブジェクトへの接続を終了し、このオブジェクトでは今後操作を行わないようにするには、tpterm()
を使用します。
クライアント EJB の例
次の Java コードは、サーバに文字列引数を送信し、サーバから応答文字列を受信する ToupperBean.java
クライアント EJB の例です。
コード リスト 2-2 クライアント アプリケーションの例
.
.
.
public String Toupper(String toConvert)
throws TPException, TPReplyException
{
Context ctx;
TuxedoConnectionFactory tcf;
TuxedoConnection myTux;
TypedString myData;
Reply myRtn;
int status;
log("toupper called, converting " + toConvert);
try {
ctx = new InitialContext();
tcf = (TuxedoConnectionFactory) ctx.lookup(
"tuxedo.services.TuxedoConnection");
}
catch (NamingException ne) {
// tuxedo オブジェクトを取得できなかった場合に TPENOENT を送出する
throw new TPException(TPException.TPENOENT, "Could not get TuxedoConnectionFactory : " + ne);
}
myTux = tcf.getTuxedoConnection();
myData = new TypedString(toConvert);
log("About to call tpcall");
try {
myRtn = myTux.tpcall("TOUPPER", myData, 0);
}
catch (TPReplyException tre) {
log("tpcall threw TPReplyExcption " + tre);
throw tre;
}
catch (TPException te) {
log("tpcall threw TPException " + te);
throw te;
}
catch (Exception ee) {
log("tpcall threw exception: " + ee);
throw new TPException(TPException.TPESYSTEM, "Exception: " + ee);
}
log("tpcall successfull!");
myData = (TypedString) myRtn.getReplyBuffer();
myTux.tpterm(); // Tuxedo との関連付けの終了
return (myData.toString());
}
.
.
.
![]() |
![]() |
![]() |