BEA ホーム | 製品 | dev2dev | support | askBEA
 ドキュメントのダウンロード   サイト マップ   Glossary 
検索

WebLogic Tuxedo Connector プログラマーズ ガイド

 Previous Next Contents PDF で侮ヲ  

WebLogic Tuxedo Connector クライアント EJB の開発

注意: WebLogic Tuxedo Connector JATMI の詳細については、WebLogic クラスの Javadoc を参照してください。WebLogic Tuxedo Connector クラスは、weblogic.wtc.jatmi および weblogic.wtc.gwt パッケージに含まれています。

次の節では、ユーザの入力を受け取り、サーバ プロセスまたはリクエストされたサービスを提供する発信オブジェクトにサービス リクエストを送信するクライアント EJB の作成方法について説明します。

WebLogic Tuxedo Connector JATMI クライアント クラスは、Tuxedo で検出されたサービスにアクセスするクライアントを作成するために使用します。

 


アプリケーションとの接続および切断

Tuxedo および WebLogic Tuxedo Connector は、それぞれ異なった方法でサービスに接続します。

アプリケーションへの接続

次の節では、Tuxedo および WebLogic Tuxedo Connector がアプリケーションに接続する方法を比較します。

コード リスト 2-1 Tuxedo アプリケーションに接続するためのクライアント コード例

.
.
.
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();
.
.
.

アプリケーションからの切断

次の節では、Tuxedo および WebLogic Tuxedo Connector がアプリケーションとの接続を切断する方法を比較します。

 


クライアントの基本操作

クライアント プロセスは、Java および JATMI プリミティブを使用して、次の基本アプリケーション タスクを提供します。

クライアントは、アプリケーションとの接続を切断する前に、いくつでもサービス リクエストを送信および受信できます。

Tuxedo オブジェクトの取得

TuxedoConnectionFactory を使用して JNDI ツリーで「tuxedo.services.TuxedoConnection」をルックアップすることによって、リモート ドメインへの接続を確立し、getTuxedoConnection() を使用して TuxedoConnection オブジェクトを取得します。

メッセージ バッファリングの実行

アプリケーションと Tuxedo 間でメッセージの送信および受信を行う場合は、次の TypedBuffers を使用します。

表2-1 TypedBuffers

バッファ タイプ

説明

TypedString

データが NULL 文字で終了する文字の配列である場合に使用されるバッファ タイプ。Tuxedo の等価タイプ : STRING。

TypedCArray

データが、NULL 可能な文字の未定義配列(バイト配列)である場合に使用されるバッファ タイプ。Tuxedo の等価タイプ : CARRAY。

TypedFML

データが自己定義である場合に使用されるバッファ タイプ。各データ フィールドは独自の識別子、オカレンス番号、および可能であれば長さインジケータを保持する。Tuxedo の等価タイプ : FML。

TypedFML32

TypeFML に似たバッファ タイプだが、より大きい文字フィールド、より多くのフィールド、およびより大きいバッファ全体に対して使用可能。Tuxedo の等価タイプ : FML32。

TypedXML

データが XML ベースのメッセージである場合に使用されるバッファ タイプ。Tuxedo の等価タイプ : XML(Tuxedo リリース 7.1 以降)。

Typed View

ビュー記述ファイルを用いてバッファ構造を定義するためにアプリケーションがJava 構造体を使用するとき、使用されるバッファ タイプ。Tuxedo の等価タイプ : View。

Typed View32

View に似たバッファ タイプだが、より大きい文字フィールド、より多くのフィールド、およびより大きいバッファ全体に対して使用可能。Tuxedo の等価タイプ : View32。

メッセージの送信および受信

WebLogic Tuxedo Connector クライアントは、Tuxedo サービス アプリケーションとの間で以下の 2 タイプの通信をサポートしています。

要求/応答通信

WebLogic Tuxedo Connector クライアント アプリケーションと Tuxedo 間で要求を行い、応答メッセージを受信するには、次の JATMI プリミティブを使用します。

表2-2 JATMI プリミティブ

名前

操作

tpacall

Tuxedo サービスの非同期呼び出しに使用する。

tpcall

Tuxedo サービスの同期呼び出しに使用する。

tpdequeue

Tuxedo /Q からのメッセージ受信に使用する。

tpenqueue

Tuxedo /Q にメッセージを配置するために使用する。

tpgetrply

Tuxedo サービスからの応答を検索するために使用する。

対話通信

注意: 対話通信の詳細については、WebLogic Tuxedo Connector JATMI 会話を参照してください。

以下の 会話プリミティブは、Tuxedo サービスと通信する対話クライアントを作成する際に使用します。

表2-3 WebLogic Tuxedo Connector の対話クライアントのプリミティブ

名前

操作

tpconnect

Tuxedo 対話サービスとの接続を確立するために使用する。

tpdiscon

会話を管理するプロセスによって実行された場合に接続を中止し、TPEV_DISCONIMM イベントを生成するために使用する。

tprecv

Tuxedo アプリケーションからオープンな接続を介してデータを受信するために使用する。

tpsend

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());
}
.
.
.

 

Back to Top Previous Next