3 Oracle WebLogic Tuxedo ConnectorサービスEJBの開発
この章の内容は以下のとおりです。
サービスEJBの基本操作
サービス・アプリケーションは、JavaおよびJATMIプリミティブを使用して、次のタスクを提供します。
-
サービス情報へのアクセス
-
バッファ・メッセージ
-
リクエストされたサービスの実行
サービス情報へのアクセス
TPServiceInformationクラスを使用すると、サービスを実行するためにOracle Tuxedoクライアントによって送信されるサービス情報にアクセスできます。
表3-1 JATMI TPServiceInformationプリミティブ
バッファ・タイプ | 説明 |
---|---|
|
Oracle Tuxedoクライアントから送信されるサービス・データを返すために使用します。 |
|
Oracle Tuxedoクライアントから送信されるサービス・フラグを返すために使用します。 |
|
呼び出されたサービス名を返すために使用します。 |
バッファ・メッセージ
アプリケーションとOracle Tuxedoの間でメッセージの送信および受信を行う場合は、次のTypedBuffersを使用します。
表3-2 TypedBuffers
バッファ・タイプ | 説明 |
---|---|
|
データがNULL文字で終了する文字の配列である場合に使用されるバッファ・タイプ。Oracle Tuxedoの等価タイプ: |
|
データが、NULL可能な文字の未定義配列(バイト配列)である場合に使用されるバッファ・タイプ。Oracle Tuxedoの等価タイプ: |
|
データが自己定義である場合に使用されるバッファ・タイプ。各データ・フィールドは独自の識別子、オカレンス番号、および可能であれば長さインジケータを保持します。Oracle Tuxedoの等価タイプ: |
|
TypeFMLに似たバッファ・タイプですが、より大きい文字フィールド、より多くのフィールド、およびより大きいバッファ全体に対して使用可能です。Oracle Tuxedoの等価タイプ: |
|
データがXMLベースのメッセージである場合に使用されるバッファ・タイプ。Oracle Tuxedoでは次に相当: XML (Tuxedoリリース7.1以降)。 |
|
VIEW記述ファイルを用いてバッファ構造を定義するためにアプリケーションがJava構造体を使用するとき、使用されるバッファ・タイプ。Tuxedoの等価タイプ: |
|
VIEWに似たバッファ・タイプですが、より大きい文字フィールド、より多くのフィールド、およびより大きいバッファ全体に対して使用可能です。Oracle Tuxedoの等価タイプ: |
|
データが、NULL可能な文字の未定義配列(バイト配列)である場合に使用されるバッファ・タイプ。 |
|
VIEWのセマンティクスと同じバッファ・タイプ。Oracle Tuxedoの等価タイプ: |
|
VIEWのセマンティクスと同じバッファ・タイプ。Oracle Tuxedoの等価タイプ: |
|
データがマルチバイト文字をサポートする多様な文字列である場合に使用されるバッファ・タイプ。Oracle Tuxedoでは次に相当: |
リクエストされたサービスの実行
サービスを提供するために必要なロジックを表現するには、Javaコードを使用します。
会話型通信でtpsendおよびtprecvを使用する
ノート:
以下のJATMIプリミティブは、Oracle Tuxedoクライアントと通信する会話型サーバーを作成する際に使用します。
表3-3 Oracle WebLogic Tuxedo Connectorの会話型クライアントのプリミティブ
名前 | 操作 |
---|---|
|
Oracle Tuxedo会話型サービスとの接続を確立するために使用します。 |
|
会話を管理するプロセスによって実行された場合に接続を中止し、 |
|
Oracle Tuxedoアプリケーションからオープンな接続を介してデータを受信するために使用します。 |
|
Oracle Tuxedoアプリケーションにオープンな接続を介してデータを送信するために使用します。 |
サンプル・サービスEJB
文字列引数を受信し、その文字列をすべて小文字に変換して、変換された文字列をクライアントに返すTolowerBean.java
サービスEJBの例を次に示します。
例3-1 サンプル・サービスEJB
. . . public Reply service(TPServiceInformation mydata) throws TPException { TypedString data; String lowered; TypedString return_data; log("service tolower called"); data = (TypedString) mydata.getServiceData(); lowered = data.toString().toLowerCase(); return_data = new TypedString(lowered); mydata.setReplyBuffer(return_data); return (mydata); } . . .