1 Oracle Tuxedo Javaサーバーの構成

この項の内容は次のとおりです。

1.1 概要

ATMI JavaサーバーのTMJAVASVRは、TuxedoシステムとJava実装サービス間のブリッジとして機能する新しいOracle Tuxedoシステム・サーバーです。Tuxedo Javaサーバーは主に次のタスクを実行します。

  • Tuxedo Javaサーバー構成ファイルの読取り
  • 構成ファイルに従いJavaコードに実装されるサービスの通知
  • JVMの起動
  • Java worldへのリクエストの転送
  • Java実装サービスからの結果の取得および実行
  • Java worldへの結果の返し

1.2 JVMライブラリ環境の設定

TMJAVASVRサーバーは、JREパッケージ内のlibjvm.so (Unix)またはjvm.dll (Windows)に依存します。

TMJAVASVRを実行する前に、libjvm.so (Unix)またはjvm.dll (Windows)がプラットフォームのライブラリ・ローディング・パス内に格納されていることを確認する必要があります。

Unixの場合、LD_LIBRARY_PATHまたはSHLIB_PATH (HP-UXのみ)またはLIBPATH (AIXのみ)を適宜設定します。

使用しているプラットフォームに応じて次のいずれかを実行します。

  • Oracle Enterprise Linux (64ビット版)およびJava SEの場合、$JRE_HOME/lib/amd64/server$LD_LIBRARY_PATHに含まれていることを確認します。
  • Oracle Enterprise Linux (64版)およびOracle JRockit JVMの場合、$JRE_HOME/lib/amd64/jrockitおよび$JRE_HOME/lib/amd64$LD_LIBRARY_PATHに含まれていることを確認します。
  • AIX PPC64の場合、$JRE_HOME/lib/ppc64/classicおよび$JRE_HOME/lib/ppc64の両方を$LIBPATHライブラリに含めることをお薦めします。
  • Solaris sparc 64ビット版の場合、$JRE_HOME/lib/sparcv9/server$LD_LIBRARY_PATHに含まれていることを確認します
  • Solaris x64の場合、$JRE_HOME/lib/amd64/server$LD_LIBRARY_PATHに含まれていることを確認します
  • Windowsの場合、PATH環境変数に%JRE_HOME%\bin\server.が含まれていることを確認します

ノート:

$JRE_HOMEはJREホーム・ディレクトリを指定します。設定については、$TUXDIR/tux.envも参照できます。

1.3 UBBCONFIGにおける構成

UBBCONFIGで次の構成を行う必要があります。

  • Tuxedo JavaサーバーがTMJAVASVR CLOPTのJava実装サービスの構成ファイルを探すパスを構成します。詳細は、TMJAVASVR(5)を参照してください
  • Javaサーバーに対してMINDISPATCHTHREADSおよびMAXDISPATCHTHREADSを指定して、その実行モード(マルチスレッド・モードまたはシングルスレッド・モード)を決定します。

    MINDISPATCHTHREADSMAXDISPATCHTHREADSも指定しない場合、またはMAXDISPATCHTHREADSを1に指定した場合、Javaサーバーはシングルスレッド・モードで実行され、それ以外の場合、Javaサーバーはマルチスレッド・モードで実行されます。

次のサンプル・コードは、UBBCONFIGファイルを使用してTMJAVASVRを構成する方法を示しています。

*SERVERS
TMJAVASVR SRVGRP=TJSVRGRP SRVID=3
CLOPT="-- -c /home/oracle/app/javaserver/TJSconfig.xml"
MINDISPATCHTHREADS=2 MAXDISPATCHTHREADS=3

1.4 Tuxedo Javaサーバー構成ファイル

Tuxedo Javaサーバー構成ファイルは、JVMでJava実装サービスの実行に必要なパラメータを定義するXMLファイルです。

2.1、2.0および1.0の3つのOracle Tuxedo Javaサーバー構成ファイル・バージョンがあります(対応するスキーマ・ファイルは、TJSconfig_2.1.xsdTJSconfig_2.0.xsdand TJSconfig_1.0.xsdです)。すべて$TUXDIR/udataobj/tuxj (Unix)または%TUXDIR%\udataobj\tuxj (Windows)ディレクトリにインストールされます。

バージョン2.1では、タグ識別子server-moduleを持つ要素が導入されています(以前のtux-server-config要素と似ています)。server-module要素は、複数のclasspathsおよびserver-class子要素を持つことができます。これらの子要素は、管理しやすい別のサーバー・モジュールにバンドルされています。また、バージョン2.1構成ファイルでは、いくつかの新しい属性も追加されています。

version属性が指定されると、Javaサーバーは最新の組込みバージョン表を検索し、version値がJavaサーバーでサポートされているかどうかを検証します。検証が失敗した場合、Javaサーバーは初期化を停止し、終了します。バージョンが有効な場合、Javaサーバーはその後の構成ファイル検証のために対応するスキーマ・ファイルをロードします。

ノート:

すべてのバージョンがサポートされていますが、バージョン2.1を使用することをお薦めします(TJSconfigversion属性を2.1に指定します)。version属性が設定されない場合、Javaサーバーはデフォルトで構成ファイルをバージョン1.0として処理します。

1.4.1 Tuxedo Javaサーバー構成ファイル、バージョン2.1

1.4.1.1 バージョン2.1構成ファイルの要素

Tuxedo Javaサーバー構成ファイルには、次の要素があります。

  • ルート要素
    • TJSconfig
  • 主要要素
    • java-config
    • tux-config
    • classpath-config
    • tux-resources
    • jdbc-resources
    • tux-server-config
1.4.1.1.1 TJSconfig

Tuxedo Javaサーバー構成ファイルのルート要素です。Javaサーバーは最初にプリフェッチ処理を実行して、TJSconfigが現在の構成ファイルに存在するかどうかを確認します。TJSconfigが見つからない場合、Javaサーバーはログにエラーを記録して終了します。

次の表は、TJSconfigのすべての属性を示しています。

表1-1 TJSconfigの属性

名前 タイプ 範囲 説明
version 列挙 2.1 オプション。指定されない場合、Javaサーバーは構成ファイルをバージョン1.0の構成ファイルとして処理します。
1.4.1.1.2 java-config

java-configは、JavaサーバーがJVMを作成するときに、Javaサーバーによって読み取られ、JVMに渡されるJVMオプションを指定します。これらのオプションは、JVMを調整したり、追加のプロパティをJVMに渡すために使用されます。この要素を使用すると、ユーザーはGCポリシー、スタック・サイズ、ヒープ・サイズなどの観点からJVMの動作を制御できます。次の表は、java-configのすべてのネスト要素を示しています。

表1-2 java-configのネスト要素

名前 タイプ 範囲 説明
jvm-options 文字列 1 . . 255 JavaサーバーがJVMを作成するときに、Javaサーバーによって読み取られ、JVMに渡されるJVMオプションを指定します。

1つのjvm-optionsでは、複数のJVMオプションを指定できます。各オプションは空白で区切る必要があります。

ノート:

Javaサーバーは、指定されたJVMオプションを検証せずに、これらのオプションを使用して標準のJNI JVM初期化データ構造体を作成し、それをJVMに渡して処理するのみです。ただし、-Xmsおよび-Xmxという2つのオプションをユーザーが指定しない場合、Oracle Tuxedo Javaサーバーは、その組込み値を、IBM PowerPC上のIBM AIX 6.1 (32ビット)の場合は256mおよび256mに置換し、Exalogic 2.0上のOracle Linux 5.6 (64ビット)の場合は256mおよび512mに置換します。
1.4.1.1.3 tux-config

tux-configは、Tuxedoアプリケーションに関連する属性を指定します。次の表は、tux-configのすべてのネスト要素を示しています。

表1-3 tux-configのネスト要素

名前 タイプ 範囲 説明
server-clopt 文字列 1 . . 255 Javaサーバー・クラスで実装されているメソッドtpsvrinit(String [])およびtpsvrthrinit(String[])に対して、いくつかの起動オプションを指定します。具体的には、ユーザーのJavaサーバー・クラスでこの2つのメソッドの少なくとも1つが実装されている場合、Javaサーバーはこれらのオプションを読み取り、文字列配列を作成し、実装されているメソッドにその文字列配列を渡します。
<server-propopt> 文字列 1 . . 255 KVペアを指定します。アプリケーションは、getTuxConfigProperty(K)インタフェースを使用してペアを取得できます。

1つのserver-cloptでは、複数のオプションを指定できます。各オプションは空白で区切る必要があります。

1.4.1.1.4 classpath-config

classpath-configは、ユーザー定義クラスを検索するときに使用するパッケージを指定します。バージョン1.0のClassPathsとは異なり、バージョン2.0のclasspath文字列は、環境変数で外部的に定義される変数、またはjvm-options-Dオプションで指定されるJVMオプション文字列で指定できます。たとえば、<classpath>${USER_JAVA_LIB}/lib1</classpath>などです。

このクラス・パスを追加すると、Javaサーバーは最初にjvm-optionsリストを検索して、-DUSER_JAVA_LIB=…がすでに指定されているかどうかを探します。見つかった場合、JavaサーバーはUSER_JAVA_LIB-DUSER_JAVA_LIB=で指定される値に置換し、クラス・パス検索リストに結果を渡します。見つからなかった場合、Javaサーバーは環境変数USER_JAVA_LIBが指定されているかどうかを探し、クラス・パス検索リストに結果を渡します。-DUSER_JAVA_LIB=…も環境変数USER_JAVA_LIBも見つからなかった場合、Javaサーバーは指定されていないクラス・パスをスキップし、ULOGにエラーを記録します。

ノート:

Javaサーバーは、クラス・パスの指定で変数を使用するために、次の3つのモードをサポートしています。
  • ${RELATIVE_PATH_VAR}
  • $(RELATIVE_PATH_VAR)
  • %RELATIVE_PATH_VAR% (Windowsのみ)

次の表は、classpath-configのすべてのネスト要素を示しています。

表1-4 classpath-configのネスト要素

名前 タイプ 範囲 説明
classpath 文字列 1 .. 511 Javaサーバーがクラスの検索およびロードで使用するクラス・パス情報を指定します。

1つのclasspathでは、複数のクラス・パスを指定できます。各クラス・パスはシステムのパス・セパレータ(Windowsプラットフォームの場合は「;」、Unix系プラットフォームの場合は「:」)で区切る必要があります。

また、Javaサーバーのワイルドカード・モードが強化されて、すべてのサブディレクトリを再帰的に検索して一致する結果を見つけることができるようになりました。

1.4.1.1.5 tux-resources

tux-resourcesは、view/view32およびfml/fml32型付きバッファ・クラスを指定して、バッファ・リソース・オブジェクトをインスタンス化します。次の表は、tux-resourcesのすべてのネスト要素を示しています。

表1-5 tux-resourcesのネスト要素

名前 タイプ 範囲 説明
classpath 文字列 1..511 オプション。Tuxedoの型付きバッファ・クラスのクラス・パスを指定します。ノート: ユーザーは、classpath-config要素でTuxedoの型付きバッファ・クラスのクラス・パスを指定することもできます。
fld-tbl16-class 文字列 1..127 FML型付きバッファのクラス名リストです。
fld-tbl32-class 文字列 1..127 FML32型付きバッファのクラス名リストです。
view16-class 文字列 1..127 VIEW型付きバッファのクラス名リストです。
view32-class 文字列 1..127 VIEW32型付きバッファのクラス名リストです。

1つの要素に複数のFML/FML32/VIEW/VIEW32クラスを指定できます。各クラスはカンマで区切る必要があります。

jatmi型付きバッファの詳細は、『Oracle WebLogic Server Oracle WebLogic Tuxedo Connectorアプリケーションの開発』を参照してください。

ユーザーは、viewj/viewj32コンパイラおよびmkfldclass/mkfldclass32ユーティリティを直接使用して、対応するVIEW/VIEW32 クラスおよびFML/FML32クラスを生成できます。これらのコンパイラまたはユーティリティを実行する前に、$TUXDIR/udataobj/tuxj/com.bea.core.jatmi_12.2.2.0.jarが含まれるクラス・パスを指定します。

1.4.1.1.6 jdbc-resources

jdbc-resourcesは、JDBC互換データ・ソース・パラメータを指定します。次の表は、jdbc-resourcesのすべてのネスト要素を示しています。

表1-6 jdbc-resourcesのネスト要素

名前 説明
data-source データベース接続を作成するためのJDBCデータ・ソースのエントリが含まれます。

次の表data-source Attributesおよび表data-source Nested Elementsは、すべてのdata-source属性およびネスト要素を示しています。

表1-7 data-sourceの属性

名前 タイプ 範囲 説明
vendor 文字列 1..31 必須。ドライバのベンダー名を指定します。
driver-type 文字列 1..31 必須。ドライバ・タイプを指定します。
enabled ブール値 true/false オプション。デフォルト値はtrueです。データ・ソースが有効かどうかを指定します。

表1-8 data-sourceのネスト要素

名前 タイプ 範囲 説明
classpath 文字列 1..511 オプション。データ・ソースのドライバ・パッケージ・パスを指定します。classpath-config要素でドライバ・クラス・パスを指定することもできます。
datasource-class name 文字列 1..255 必須。JDBCドライバ・クラス名を指定します。
driver-params データベース接続の作成に使用されるJDBCドライバのエントリが含まれます。

次の表は、driver-paramsのすべてのネスト要素を示しています。

表1-9 driver-paramsのネスト要素

名前 タイプ 範囲 説明
connection-url 文字列 1..10239 データ・ソースの接続URLを指定します。
1.4.1.1.7 tux-server-config

次の表tux-server-configは、Javaサーバー・クラス属性を指定します。

表1-10 tux-server-configの属性

名前 タイプ 範囲 説明
maxmodules 短い書式 1..1024 Javaサーバーでのサーバー・モジュールの最大数。オプション。デフォルト値は256です。

tux-server-configには、ネスト要素sever-moduleが含まれます。

次の表は、tux-server-config/server-moduleのすべての属性を示しています。

表1-11 tux-server-config/server-moduleの属性

プロパティ タイプ 範囲 説明
name 文字列 1..63 サーバー・モジュール要素の名前。

必須。

サーバー・モジュール名は、<tux-server-config>要素セクション内のすべてのサーバー・モジュール名の中で一意である必要があり、アスタリスク(*)、カンマ(,)またはコロン(:)は使用できません。

maxsvrclasses 短い書式 1..8192 サーバー・モジュールでのJavaサーバー・クラスの最大数。オプション。デフォルト値は256です。
maxadmclasses 短い書式 1..4096 サーバー・モジュールでの/Adminコマンド・クラスの最大数。これはオプションです。デフォルト値は128です。
maxadmmcmds 短い書式 1..4096 Javaサーバーでの/Adminコマンドの最大数。これはオプションです。デフォルト値は128です。

次の表は、tux-server-config/server-moduleのすべてのネスト要素を示しています。

表1-12 tux-server-config/server-moduleのネスト要素

プロパティ タイプ 範囲 説明
<classpath> 文字列 1..511 オプション。サーバー・クラスのクラス・パスを指定します。classpath-configセクションでクラス・パスを指定することもできます。
<server-clopt> 文字列 1..255 引数パラメータを指定してtpsvrinit()に渡します。
<server-propopt> 文字列 1..255 KVペアを指定します。アプリケーションは、getTuxConfigProperty (K)インタフェースを使用してペアを取得できます。
<server-class> servicesというネスト要素が含まれます。

tux-server-config/server-module/server-classの属性を次の表に示します

表1-13 tux-server-config/server-module/server-classの属性

プロパティ タイプ 範囲 説明
name 文字列 1..255 サーバー・クラス名を指定します。
autoadv ブール値 yes/no 構成ファイルで明示的に指定されていない場合に、Javaサーバーがサービス・メソッドをメソッド名と同じ名前のTuxedoサービスとして通知できるようにします。オプション。以前のリリースとの互換性を維持するために、デフォルト値はyesです。

server-classには、servicesというネスト要素もあります。servicesには、serviceというネスト要素があります。

次の表は、tux-server-config/server-module/server-class/services/serviceのすべての属性を示しています。

表1-14 serviceの属性

プロパティ タイプ 範囲 説明
name 文字列 1..127 必須。Tuxedoアプリケーション・ドメインに通知されるサービス名を指定します。
target 文字列 1..255 サーバー・クラスに実装されるメソッドを指定します。メソッドは、TPSVCINFOパラメータおよびvoidタイプの戻り値で宣言する必要があります。
1.4.1.2 サービスの通知

サービスを実行する各Tuxedo Javaサーバー・クラスは、一連のメソッドを実行する必要があります。ここで、入力引数パラメータはTPSVCINFOインタフェースです。サービスとして通知されるメソッドは、パブリック・メソッドで、戻し型をvoidに設定する必要があります。

Tuxedo Javaサーバーは、すべてのパブリック・メソッドをサービスとして掲示板に通知します。Servicesが構成ファイルで指定されている場合、Tuxedo Javaサーバーは名前プロパティの値をサービス名として使用します。それ以外の場合は、メソッド名がサービス名として使用されます。

Javaサーバーには、Tuxedoサービスを通知する3つの方法があります。

  1. 構成ファイル<tux-server-config>/<server-module>/<server-class>/<services>/<service>:nameで指定された名前でTuxedoサービスを通知し、このTuxedoサービスを<tux-server-config>/<server-module>/<server-class>/<services>/<service>:targetで指定されたJavaメソッドに関連付けます。

    次のコード・サンプルは、構成ファイルで指定されたTuxedoサービスを通知する方法を示しています。

    <TJSconfig version="2.1">
      ...
      <tux-server-config maxmodules="100" maxadmcmds="100">
        <server-module name="MyAppModule_1">
          <server-class name="MyTuxedoServerClass">
            <services>
              <service name="svc1" target="method1"></service>
              ...
            </services>
          </server-class>
        </server-module>
      </tux-server-config>
    </TJSconfig>

    このサンプルでは、JavaクラスMyTuxedoServerClassに実装されたJava method1は、Tuxedoサービスsvc1に関連付けられます。正確なサービス処理ロジックは、Java言語で記述されたMyTuxedoServerClass.method1に実装されています。

  2. 構成ファイルで指定されたJavaサーバー・クラスに実装されたJavaサービス・メソッドが示されず、Javaサーバー・クラスのautoadv属性が設定されていない(以前のリリースとの互換性を維持するためにデフォルト値はyes)か明示的にyesに設定されている場合、サービス・メソッドはサービス・メソッドと同じ名前のTuxedoサービスに通知されます。

    autoadvの属性値がnoに設定されている場合、このJavaサーバー・クラスに実装されている残りのサービス・メソッドは自動的には通知されません。

  3. TuxAppContext.tpadvertise()を呼び出してTuxedoサービスを通知します。この方法を使用すると、Javaサーバー・アプリケーションは構成ファイルでJavaサーバー・クラスを明示的に指定する必要はなく、サーバー・クラスは抽象クラスcom.oracle.tuxedo.tjatmi.TuxedoJavaServerから継承されません。
1.4.1.3 バージョン2.1構成ファイルの例

バージョン2.1では、Javaサーバー・アプリケーションを詳細に管理する方法を提供するために、以前のアプリケーションをより多くのモジュールに分離するために使用されるモジュール・エンティティが導入されています。いくつかの新しい属性も構成ファイルに追加されています。

次のコード・サンプルは、Tuxedo Javaサーバー構成ファイル・バージョン2.1の作成例を示しています。

<TJSconfig version="2.1">
  <java-config>
    <jvm-options>-XX:MaxPermSize=192m -Xms256m </jvm-options>
    <jvm-options>-server</jvm-options>
    <jvm-options>-Xmx512m</jvm-options>
  </java-config>
  <tux-config>
    <server-clopt>-C dom=TMJSVRDOM -t 1000</server-clopt>
    <server-clopt>-n 200</server-clopt>
    <server-propopt> TUXCNF_propK1=propV1 </server-propopt>
    <server-propopt> TUXCNF_propK2=propV2 TUXCNF_propK3=propV3
    </server-propopt>
  </tux-config>
  <classpath-config>
    <classpath>${APPDIR}/classes</classpath>
    <classpath>$USERCLASS/usr/libs/lib1.jar</classpath>
    <classpath>$USERCLASS/usrlib2/*</classpath>
    <classpath>$USERCLASS/usrlib3/*.jar</classpath>
  </classpath-config>
  <tux-resources>
    <classpath>$(APPDIR)/tuxres</classpath>
    <classpath>${APPDIR}/testres</classpath>
    <fld-tbl16-class>test1.FML16TBL, test2.FML16TBL</fld-tbl16-class>
    <fld-tbl16-class>test3.FML16TBL</fld-tbl16-class>
    <fld-tbl16-class>test4.FML16TBL</fld-tbl16-class>
    <fld-tbl32-class>test1.FML32TBL</fld-tbl32-class>
    <fld-tbl32-class>test2.FML32TBL, test3.FML32TBL</fld-tbl32-class>
    <fld-tbl32-class>test4.FML32TBL</fld-tbl32-class>
    <view16-class>test1.VIEW16, test2.VIEW16</view16-class>
    <view16-class>test3.VIEW16</view16-class>
    <view16-class>test4.VIEW16</view16-class>
    <view32-class>test1.VIEW32</view32-class>
    <view32-class>test2.VIEW32,test3.VIEW32</view32-class>
    <view32-class>test4.VIEW32</view32-class>
  </tux-resources>
  <jdbc-resources>
    <data-source vendor="Oracle" driver-type="thin" enabled="true" object-type="usr" jndi-name="none" pool-name="none">
      <classpath>$(JDBC_DRIVER_ORA)/11gR2_ojdbc6_g.jar</classpath>
      <classpath>$(JDBC_DRIVER_ORA)/11gR2_xdb6.jar</classpath>
      <classpath>$(JDBC_DRIVER_ORA)/11gR2_orai18n.jar</classpath>
      <datasource-classname>oracle.jdbc.xa.client.OracleXADataSource</datasource -classname>
        <res-type>javax.sql.XADataSource</res-type>
        <driver-params>
          <connection-url>
            jdbc:oracle:thin:@//10.182.54.144:1521/javaorcl
          </connection-url>
          <property name="user" value="tiger" />
          <property name="password" value="scott" />
          <property name="autocommit" value="true" />
          <property name="autotran" value="yes" />
          <property name="query" value=" " />
          <property name="thread" value="true" />
        </driver-params>
    </data-source>
  </jdbc-resources>
  <jdbc-connection-pool>
  </jdbc-connection-pool>
  <tux-server-config maxmodules="100">
    <server-module name="MyAppModule_1" maxsvrclasses="100" maxadmclasses="64" maxadmcmds="200">
      <classpath>${APPDIR}/Java/module_1/classes</classpath>
      <classpath>${APPDIR}/Java/module_1/lib</classpath>
      <server-clopt>-C dom=TMJSVRDOM1 -g TJSSVRGRP1 -t
        2000</server-clopt>
      <server-clopt>-f application1.xml </server-clopt>
      <server-propopt> K1=V1 K2=V2 </server-propopt>
      <server-propopt> k3=v3 k4=v4</server-propopt>
      <server-class name="MyTuxedoServerClass" autoadv="no">
        <services>
          <service name="mou1_svc1" target="method1"></service>
          <service name="mou1_svc2" target="method2"></service>
        </services>
      </server-class>
      <server-class name="MyTuxedoServerClass2" autoadv="yes">
        <services>
          <service name="mou1_svc3" target="JAVASTRINGSVC"></service>
          <service name="mou1_svc4" target="JAVAFML32SVC"></service>
        </services>
      </server-class>
    </server-module>
    <server-module name="MyAppModule_2" maxsvrclasses="200" maxadmcmds="20">
      <classpath>${APPDIR}/Java/module_2/classes</classpath>
      <classpath>${APPDIR}/Java/module_2/lib</classpath>
      <server-clopt>-C dom=TMJSVRDOM2 -g TJSSVRGRP2 -t
        1000</server-clopt>
      <server-clopt>-f application2.xml </server-clopt>
      <server-propopt> Kmou1=Vmou1 Kmou2=Vmou2 </server-propopt>
      <server-propopt> kmou3=vmou3 kmou4=vmou4</server-propopt>
      <server-class name="MyTuxedoServerClass">
        <services>
          <service name="mou2_svc1" target="method1"></service>
          <service name="mou2_svc2" target="method2"></service>
        </services>
      </server-class>
      <server-class name="MyTuxedoServerClass2" autoadv="yes">
        <services>
          <service name="mou2_svc3" target="JAVASTRINGSVC"></service>
          <service name="mou2_svc4" target="JAVAFML32SVC"></service>
        </services>
      </server-class>
    </server-module>
  </tux-server-config>
</TJSconfig>
1.4.1.4 Javaサービスのマッピング

Javaサーバーは、アプリケーション・サーバー・クラスに実装されているすべてのサービス・メソッドを取得し、次の規則でサービスを通知します。

  • 1つのメソッドを異なるサービス名で複数回通知できます。
  • 構成ファイルに指定されているメソッドは、指定されたサービス名で通知されます。
  • 構成ファイルに指定されていないメソッドでは、メソッド名がサービス名として通知されます。
  • 構成ファイルに指定されているサービス名で通知されたメソッドが、同じメソッド名でさらに通知されることはありません。

サーバー・クラス内でpublicと宣言されたメソッドのみがJavaサーバーによって取得されて、通知アクションに関与します。

1.4.2 Tuxedo Javaサーバー構成ファイル、バージョン2.0

1.4.2.1 バージョン2.0構成ファイルの要素

Tuxedo Javaサーバー構成ファイルには、次の要素があります。

  • ルート要素
    • TJSconfig
  • 主要要素
    • java-config
    • tux-config
    • classpath-config
    • tux-resources
    • jdbc-resources
    • tux-server-config
1.4.2.1.1 TJSconfig

Tuxedo Javaサーバー構成ファイルのルート要素です。Javaサーバーは最初にプリフェッチ処理を実行して、TJSconfigが現在の構成ファイルに存在するかどうかを確認します。TJSconfigが見つからない場合、Javaサーバーはログにエラーを記録して終了します。次の表は、TJSconfigのすべての属性を示しています。

表1-15 TJSconfigの属性

名前 タイプ 範囲 説明
version 列挙 2.0 これはオプションです。指定されない場合、Javaサーバーは構成ファイルをバージョン1.0の構成ファイルとして処理します。
1.4.2.1.2 java-config

java-configは、JavaサーバーがJVMを作成するときに、Javaサーバーによって読み取られ、JVMに渡されるJVMオプションを指定します。これらのオプションは、JVMを調整したり、追加のプロパティをJVMに渡すために使用されます。この要素を使用すると、ユーザーはGCポリシー、スタック・サイズ、ヒープ・サイズなどの観点からJVMの動作を制御できます。次の表は、java-configのすべてのネスト要素を示しています。

表1-16 java-configのネスト要素

名前 タイプ 範囲 説明
jvm-optiona 文字列 1..255 JavaサーバーがJVMを作成するときに、Javaサーバーによって読み取られ、JVMに渡されるJVMオプションを指定します。

1つのjvm-optionsでは、複数のJVMオプションを指定できます。各オプションは空白で区切る必要があります。

ノート:

Javaサーバーは、指定されたJVMオプションを検証せずに、これらのオプションを使用して標準のJNI JVM初期化データ構造体を作成し、それをJVMに渡して処理するのみです。ただし、-Xmsおよび-Xmxという2つのオプションをユーザーが指定しない場合、Oracle Tuxedo Javaサーバーは、その組込み値を、IBM PowerPC上のIBM AIX 6.1 (32ビット)の場合は256mおよび256mに置換し、Exalogic 2.0上のOracle Linux 5.6 (64ビット)の場合は256mおよび512mに置換します。
1.4.2.1.3 tux-config

tux-configは、Tuxedoアプリケーションに関連する属性を指定します。次の表は、tux-configのすべてのネスト要素を示しています。

表1-17 tux-configのネスト要素

名前 タイプ 範囲 説明
server-clopt 文字列 1..255 Javaサーバー・クラスで実装されているメソッドtpsvrinit(String [])およびtpsvrthrinit(String[])に対して、いくつかの起動オプションを指定します。具体的には、ユーザーのJavaサーバー・クラスでこの2つのメソッドの少なくとも1つが実装されている場合、Javaサーバーはこれらのオプションを読み取り、文字列配列を作成し、実装されているメソッドにその文字列配列を渡します。

1つのserver-cloptでは、複数のオプションを指定できます。各オプションは空白で区切る必要があります。

1.4.2.1.4 classpath-config

classpath-configは、ユーザー定義クラスを検索するときに使用するパッケージを指定します。バージョン1.0のClassPathsとは異なり、バージョン2.0のclasspath文字列は、環境変数で外部的に定義される変数、またはjvm-options-Dオプションで指定されるJVMオプション文字列で指定できます。たとえば、<classpath>${USER_JAVA_LIB}/lib1</classpath>などです。

このクラス・パスを追加すると、Javaサーバーは最初にjvm-optionsリストを検索して、-DUSER_JAVA_LIB=…がすでに指定されているかどうかを探します。見つかった場合、JavaサーバーはUSER_JAVA_LIB-DUSER_JAVA_LIB=で指定される値に置換し、クラス・パス検索リストに結果を渡します。見つからなかった場合、Javaサーバーは環境変数USER_JAVA_LIBが指定されているかどうかを探し、クラス・パス検索リストに結果を渡します。-DUSER_JAVA_LIB=…も環境変数USER_JAVA_LIBも見つからなかった場合、Javaサーバーは指定されていないクラス・パスをスキップし、ULOGにエラーを記録します。

ノート:

Javaサーバーは、クラス・パスの指定で変数を使用するために、次の3つのモードをサポートしています。
  • ${RELATIVE_PATH_VAR}
  • $(RELATIVE_PATH_VAR)
  • %RELATIVE_PATH_VAR% (Windowsのみ)

次の表は、classpath-configのすべてのネスト要素を示しています。

表1-18 classpath-configのネスト要素

名前 タイプ 範囲 説明
classpath 文字列 1..511 Javaサーバーがクラスの検索およびロードで使用するクラス・パス情報を指定します。

1つのclasspathでは、複数のクラス・パスを指定できます。各クラス・パスはシステムのパス・セパレータ(Windowsプラットフォームの場合は「;」、Unix系プラットフォームの場合は「:」)で区切る必要があります。

また、Javaサーバーのワイルドカード・モードが強化されて、すべてのサブディレクトリを再帰的に検索して一致する結果を見つけることができるようになりました。

1.4.2.1.5 tux-resources

tux-resourcesは、view/view32およびfml/fml32型付きバッファ・クラスを指定して、バッファ・リソース・オブジェクトをインスタンス化します。次の表は、tux-resourcesのすべてのネスト要素を示しています。

表1-19 tux-resourcesのネスト要素

名前 タイプ 範囲 説明
classpath 文字列 1..511 これはオプションです。Tuxedoの型付きバッファ・クラスのクラス・パスを指定します。ノート: ユーザーは、classpath-config要素でTuxedoの型付きバッファ・クラスのクラス・パスを指定することもできます。
fld-tbl16-class 文字列 1..127 FML型付きバッファのクラス名リストです。
fld-tbl32-class 文字列 1..127 FML 32型付きバッファのクラス名リストです。
view16-class 文字列 1..127 VIEW型付きバッファのクラス名リストです。
view32-class 文字列 1..127 VIEW 32型付きバッファのクラス名リストです。

1つの要素に複数のFML/FML32/VIEW/VIEW32クラスを指定できます。各クラスはカンマで区切る必要があります。

jatmi型付きバッファの詳細は、『Oracle WebLogic Server Oracle WebLogic Tuxedo Connectorアプリケーションの開発』を参照してください。

ユーザーは、viewj/viewj32コンパイラおよびmkfldclass/mkfldclass32ユーティリティを直接使用して、対応するVIEW/VIEW32 クラスおよびFML/FML32クラスを生成できます。これらのコンパイラまたはユーティリティを実行する前に、$TUXDIR/udataobj/tuxj/com.bea.core.jatmi_2.0.0.0.jarが含まれるクラス・パスを指定してください。

1.4.2.1.6 jdbc-resources

jdbc-resourcesは、JDBC互換データ・ソース・パラメータを指定します。次の表は、jdbc-resourcesのすべてのネスト要素を示しています。

表1-20 jdbc-resourcesのネスト要素

名前 説明
data-source データベース接続を作成するためのJDBCデータ・ソースのエントリが含まれます。

次の表data-source Attributesおよび表data-source Nested Elementsは、すべてのdata-source属性およびネスト要素を示しています。

表1-21 data-sourceの属性

名前 タイプ 範囲 説明
vendor 文字列 1..31 必須です。ドライバのベンダー名を指定します。
driver-type 文字列 1..31 必須です。ドライバ・タイプを指定します。
enabled ブール値 true/false これはオプションです。デフォルト値はtrueです。データ・ソースが有効かどうかを指定します。

表1-22 data-sourceのネスト要素

名前 タイプ 範囲 説明
classpath 文字列 1..511 これはオプションです。データ・ソースのドライバ・パッケージ・パスを指定します。classpath-config要素でドライバ・クラス・パスを指定することもできます。
datasource-class name 文字列 1..255 必須です。JDBCドライバ・クラス名を指定します。
driver-params データベース接続の作成に使用されるJDBCドライバのエントリが含まれます。

次の表は、driver-paramsのすべてのネスト要素を示しています。

表1-23 driver-paramsのネスト要素

名前 タイプ 範囲 説明
connection-url 文字列 1..511 データ・ソースの接続URLを指定します。
1.4.2.1.7 tux-server-config

tux-server-configは、Javaサーバー・クラス・パラメータを指定します。次の表は、tux-server-configのすべてのネスト要素を示しています。

表1-24 tux-server-configのネスト要素

名前 タイプ 範囲 説明
classpath 文字列 1..511 これはオプションです。サーバー・クラスのクラス・パスを指定します。classpath-configセクションでクラス・パスを指定することもできます。
server-class Javaサーバー・クラスのエントリが含まれます。ユーザーはサーバー・クラス名を指定する必要があり、メソッドのサービス別名を指定できます。

次の表は、server-classのすべての属性を示しています。

表1-25 server-classの属性

名前 タイプ 範囲 説明
name 文字列 1..255 サーバー・クラス名を指定します。

server-classには、servicesというネスト要素もあります。servicesには、serviceというネスト要素があります。次の表は、serviceのすべての属性を示しています。

表1-26 serviceの属性

名前 タイプ 範囲 説明
name 文字列 1..127 必須です。Tuxedoアプリケーション・ドメインに通知されるサービス名を指定します。
target 文字列 1..255 サーバー・クラスに実装されるメソッドを指定します。メソッドは、TPSVCINFOパラメータおよびvoidタイプの戻り値で宣言する必要があります。
1.4.2.2 バージョン2.0構成ファイルの例

次のコード・サンプルは、Tuxedo Javaサーバー構成ファイル・バージョン2.0の作成例を示しています。

<?xml version="1.0" encoding="UTF-8"?>
<TJSconfig version="2.0">
  <java-config>
    <jvm-options>-XX:MaxPermSize=192m</jvm-options>
    <jvm-options>-server</jvm-options>
    <jvm-options>-DMYVAR="var01" -DMYVAR02="var02"</jvm-options>
  </java-config>
  <tux-config>
    <server-clopt>-C dom=TMJSVRDOM -t 1000</server-clopt>
    <server-clopt>-n 200</server-clopt>
  </tux-config>
  <classpath-config>
    <classpath>${USER_JAVA_LIB}/lib1</classpath>
  </classpath-config>
  <tux-resources>
    <fld-tbl16-class>myfmltbl</fld-tbl16-class>
    <fld-tbl32-class>myfmltbl32,customerflds32</fld-tbl32-class>
    <view16-class>myView</view16-class>
    <view32-class>myView32,customerView32</view32-class>
  </tux-resources>
  <jdbc-resources>
    <data-source vendor="Oracle" driver-type="thin" enabled="true">
      <datasource-classname>oracle.jdbc.xa.client.OracleXADataSource</datasource -classname>
        <driver-params>
          <connection-url>
            jdbc:oracle:thin:@//Server:1521/orcl
          </connection-url>
        </driver-params>
    </data-source>
  </jdbc-resources>
  <tux-server-config>
    <classpath>$TUXJRE/jce.jar</classpath>
    <server-class name="MyTuxedoJavaServer">
      <services>
        <service name="JAVATOUPPER" target="JAVATOUPPER"></service>
        <service name="JAVATOUPPERFORWARD" target="JAVATOUPPERFORWARD"></service>
      </services>
    </server-class>
  </tux-server-config>
</TJSconfig>
1.4.2.3 Javaサービスのマッピング

Javaサーバーは、アプリケーション・サーバー・クラスに実装されているすべてのサービス・メソッドを取得し、次の規則でサービスを通知します。

  • 1つのメソッドを異なるサービス名で複数回通知できます。
  • 構成ファイルに指定されているメソッドは、指定されたサービス名で通知されます。
  • 構成ファイルに指定されていないメソッドでは、メソッド名がサービス名として通知されます。
  • 構成ファイルに指定されているサービス名で通知されたメソッドが、同じメソッド名でさらに通知されることはありません。

サーバー・クラス内でpublicと宣言されたメソッドのみがJavaサーバーによって取得されて、通知アクションに関与します。

1.4.3 Tuxedo Javaサーバー構成ファイル、バージョン1.0

1.4.3.1 Tuxedo Javaサーバー構成ファイルのプロパティ

次の表は、Javaサーバー構成ファイルで使用可能なプロパティを示しています。対応する 「Javaサーバー構成スキーマ・ファイル」を参照してください。このファイルでは、より詳細な情報に基づいて構成XMLファイルの検証チェックが行われます。

表1-27 Tuxedo Javaサーバー構成ファイルのプロパティ

プロパティ名 タイプ 範囲 説明
ClassPath 文字列 Length:0..1024 構成済のクラス・メソッドの実行に使用されるパッケージを指定します。
DriverClass 文字列 Length:1..512 JDBC DataSourceクラス名を指定します。
ConnectionUrl 文字列 Length:1..512 JDBC接続URL文字列(対応するJDBCドライバに必要な形式に従う必要がある)を指定します。ユーザー名およびパスワードを含めないでください。
name (For TuxedoServer Class) 文字列 Length:1..512 Tuxedo Javaサーバー・クラス名を指定します。構成で必須です。
name (For Service) 文字列 Length:1..127 メソッドに関連する掲示板で通知されるサービス名を指定します。構成ファイルでは、各「svcname」属性値は一意である必要があります。このプロパティを指定しない場合、メソッド名はサービス名として使用されます。
target 文字列 Length:1..127 対応するサービスのクラス・メソッドを指定します。
fieldTable16Class 文字列 Length:0..1024 完全修飾FMLクラスのカンマ区切りリスト。FML16フィールド表クラスはすべてここで定義する必要があります。ここで定義しない場合、FMLのFldid()/ Fname()は機能しません。
fieldTable32Class 文字列 Length:0..1024 完全修飾FMLクラスのカンマ区切りリスト。FML32フィールド表クラスはすべてここで定義する必要があります。ここで定義しない場合、FML32のFldid()/ Fname()は機能しません。
viewFile16Class 文字列 Length:0..1024 完全修飾FMLクラスのカンマ区切りリスト。プログラミングで使用されるすべてのviewクラスはここで定義する必要があります。
viewFile32Class 文字列 Length:0..1024 完全修飾FMLクラスのカンマ区切りリスト。プログラミングで使用されるすべてのview32クラスはここで定義する必要があります。
1.4.3.2 クラス・パス要素の設定

次の<ClassPath>要素設定は、Tuxedo Java構成ファイルでサポートされています。

<ClassPath>customer_lib_path/*.jar</ClassPath>または<ClassPath>customer_lib_path/*.zip</ClassPath>
customer_lib_path直下のすべての.jarまたは.zipアーカイブをJVMクラスパスに追加します。
<ClassPath>customer_lib_path</ClassPath>
customer_lib_path直下のすべてのクラスをJVMクラスパスに追加します。
<ClassPath>customer_lib_path/*</ClassPath>
customer_lib_path直下のすべての.jarファイル、.zipファイルおよびクラスをJVMクラスパスに追加します。
<ClassPath>customer_lib_path/lib1.jar</ClassPath> or <ClassPath>customer_lib_path/lib2.zip</ClassPath>
customer_lib_path/lib1.jarまたはcustomer_lib_path/lib2.zipをJVMクラスパスに追加します。

ノート:

  • customer_lib_path内のすべてのファイル検索は非再帰です。
  • $APPDIRへのcustomer_lib_pathは、絶対パスまたは相対パスのいずれかになります。
  • $APPDIRはデフォルトでクラスパスに追加されます。
1.4.3.3 FML/Viewフィールド表クラスの設定

View/View32を使用するには、<Resources></Resources>要素でViewクラスを指定する必要があります。Fldid()/Fname()を適切に使用するには、<Resources></Resources>要素でFML/FML32 field tableクラスを指定する必要があります。

1.4.3.4 構成ルール

Javaサーバー構成ファイルを作成する際には、次のルールに従う必要があります。

  • Javaサーバー構成ファイルでは<TuxedoServerClasses>のみが必須で、少なくとも1つのTuxedoServerClassを構成する必要があります。
  • 現在、構成ファイルの<DataSources>で構成が許可されているのは、1つの<DataSource>要素のみです。<DataSource>の名前プロパティは現在は有効ではありません。
  • 複数のエンティティを持つことができる要素は、<ClassPath><fieldTable16Class><fieldTable32class><viewFile16Class><viewFile32Class>および<Service>のみです。
  • <Resources>セクションでは、最初に<fieldTable16Class>を構成し、続いて<fieldTable32class><viewFile16Class><viewFile32Class>の順に構成する必要があります。

ノート:

構成ファイル(TJSconfig.xmlなど)は、$TUXDIR/udataobj/tuxj/TJSconfig.xsd (Unix)または$TUXDIR\udataobj\tuxj/TJSconfig.xsd (Windows)に格納されているスキーマ・ファイルTJSconfig.xsdに対してチェックされます。構成ルールに関する詳細は、TJSconfig.xsdを参照することをお薦めします。
1.4.3.5 サービスの通知

サービスを実行する各Tuxedo Javaサーバー・クラスは、一連のメソッドを実行する必要があります。ここで、入力引数パラメータはTPSVCINFOインタフェースです。サービスとして通知されるメソッドは、パブリック・メソッドで、戻し型をvoidに設定する必要があります。

Tuxedo Javaサーバーは、すべてのパブリック・メソッドをサービスとして掲示板に通知します。Servicesが構成ファイルで指定されている場合、Tuxedo Javaサーバーは名前プロパティの値をサービス名として使用します。それ以外の場合は、メソッド名がサービス名として使用されます。

1.4.3.6 バージョン1.0構成ファイルの例

MyTuxedoServerClass1 JavaクラスでJAVASTRINGSVCJAVAFML32SVCおよびsvc3メソッドが定義され、MyTuxedoServerClass2 Javaクラスでsvc4が定義されていることを前提としています。この例では、Oracleデータベースに対してJDBC接続が作成され、サービス(svc1svc2svc3およびsvc4)がエクスポートされます。

ノート:

構成ファイルでメソッド名svc3およびsvc4<Service>プロパティが指定されていないため、これらのメソッド名はサービス名としてエクスポートされます。

次のコード・サンプルは、Tuxedo Javaサーバー構成ファイル・バージョン1.0の作成例を示しています。

<?xml version="1.0" encoding="UTF-8"?>
<TJSconfig>
<ClassPaths>
<ClassPath>/home/oracle/app/javaserver/MyTuxedoServerClass.jar</ClassPath>
<ClassPath>"/home/oracle/jdbc/ucp.jar</ClassPath>
<ClassPath>/home/oracle/jdbc/ojdbc8.jar</ClassPath>
</ClassPaths>
<Resources>
                  <FieldTable16Classes>test1.FML16TBL,
test2.FML16TBL</FieldTable16Classes>
                  <FieldTable16Classes>test3.FML16TBL,
test4.FML16TBL</FieldTable16Classes>
                  <FieldTable32Classes>test1.FML32TBL1,
test2.FML32TBL</FieldTable32Classes>
                  <FieldTable32Classes>test3.FML32TBL1,
test4.FML32TBL</FieldTable32Classes>
                  <ViewFile16Classes>test1.VIEW16,
test2.VIEW16</ViewFile16Classes>
                  <ViewFile16Classes>test3.VIEW16,
test4.VIEW16</ViewFile16Classes>
                  <ViewFile32Classes>test1.VIEW32,
test2.VIEW32</ViewFile32Classes>
                  <ViewFile32Classes>test3.VIEW32,
test4.VIEW32</ViewFile32Classes>
</Resources>
<DataSources>
          <DataSource name="oracle">

<DriverClass>oracle.jdbc.xa.client.OracleXADataSource</DriverClass>
            <JdbcDriverParams>

<ConnectionUrl>jdbc:oracle:thin:@//10.182.54.144:1521/javaorcl</Connection
Url>
              </JdbcDriverParams>
          </DataSource>
</DataSources>
<TuxedoServerClasses>
<TuxedoServerClass name="MyTuxedoServerClass1">
          <Services>
                <Service name="svc1" target="JAVASTRINGSVC"></Service>
                <Service name="svc2" target="JAVAFML32SVC"></Service>
          </Services>
</TuxedoServerClass>
<TuxedoServerClass name="MyTuxedoServerClass2"></TuxedoServerClass>
</TuxedoServerClasses>
</TJSconfig>

ノート:

  • サービス名は、構成ファイル内の指定したクラス+メソッドへのマッピングに使用されるため、1つのTuxedo Javaサーバーおよびそれに含まれる異なるJavaクラス間で一意である必要があります。
  • ユーザー定義クラスおよびDataSourceドライバ・ライブラリなどのJavaアプリケーションで使用されるすべてのライブラリ(標準JREライブラリを除く)を提供する必要があります。

1.5 Tuxedo Javaサーバー・トランザクション・マネージャの構成

Javaサーバーには、JTA準拠のトランザクション・マネージャを新規作成したり、既存のものを取得するためのgetterメソッドがあります。次のリストに、Springアプリケーション・コンテキストの構成ファイルでTuxedoトランザクション・マネージャを構成する方法を示します。

Springアプリケーション・コンテキストの構成ファイルの詳細は、「Springアプリケーション・コンテキストの作成」を参照してください。

このコード・サンプルは、Tuxedoトランザクション・マネージャの構成方法を示しています。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<bean id="TuxTransactionManager"
class="com.oracle.tuxedo.tjatmi.TuxTransactionManager"
factory-method="getTransactionManager">
</bean>

<bean id="springAppTransactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
      <property name="userTransaction" ref="TuxTransactionManager"/>
      <property name="transactionManager" ref="TuxTransactionManager"/>
</bean>

</beans>

1.5.1 Springアプリケーション・コンテキストの作成

Springアプリケーション・コンテキストを作成、破棄、管理するのはJavaサーバーではなく、Springアプリケーションです。

Spring Frameworkライブラリおよびすべての依存ライブラリは、Javaサーバー構成ファイルで構成する必要があります。次のリストに、Javaサーバー構成ファイルでSpring Frameworkライブラリを指定する方法を示します。

Javaサーバー構成ファイルの詳細は、「Tuxedo Javaサーバー構成ファイル」を参照してください。

次のコード・サンプルは、Spring Frameworkのライブラリを指定する方法を示しています。

<?xml version="1.0" encoding="UTF-8"?>
<TJSconfig version="2.0">
<java-config>
    <jvm-options>-DSPRING_LIB=/home/tuxdev/Spring/3.2.4</jvm-options>
    <jvm-options>-DSPRING_DEP=/home/tuxdev/Spring/deps</jvm-options>
</java-config>
<classpath-config>
      <classpath>${SPRING_LIB}/*.jar</classpath>
      <classpath>${SPRING_DEP}/*.jar</classpath>
</classpath-config>
</TJSconfig>

Javaサーバーは起動の段階で、Javaサーバー構成ファイル内の構成情報に従って、Spring Frameworkとすべての依存ライブラリをロードします。Springアプリケーションでは、必要に応じて、Spring Frameworkクラスを直接インポートできます。

1.6 トランザクション管理

Tuxedo Javaベース・トランザクションは、既存のTuxedoトランザクション管理フレームワークに基づいて実行されます。これまでと同様に、トランザクション用にUBB構成ファイルで作成する必要がある構成として、特定のグループのトランザクション・マネージャ・サーバー(TMSs)およびリソース・マネージャ(RMs)の属性を定義する必要があります。Tuxedo Javaサーバー(TMJAVASVR)はこのグループに属する必要があります。

次のコード・サンプルは、JavaベースのトランザクションのUBB構成を示しています。

*GROUP
ORASVRGRP  LMID=simple GRPNO=1
OPENINFO="Oracle_XA:Oracle_XA+Acc=P/system/oracle+SesTm=120+MaxCur=5+LogDi
r=.+SqlNet=orcl"
          TMSNAME=TMSORA TMSCOUNT=2
*SERVERS
TMJAVASVR SRVGRP=ORASVRGRP SRVID=3 CLOPT="-- -c TJSconfig_ORA.xml"
        MINDISPATCHTHREADS=2 MAXDISPATCHTHREADS=2

詳細は、「トランザクション対応のATMIアプリケーションの構成」を参照してください。

Java実装サービスはJava world内のデータ・ソースに接続する必要があるため、Tuxedo Javaサーバー構成ファイル内のデータ・ソースに接続する方法を定義するパラメータを定義する必要があります。

今回のリリースでは、Java実装サービスが接続できるのはJDBC接続によるデータベースのみであるため、ConnectionUrlプロパティを使用してTuxedo Javaサーバー構成ファイルでJDBCパラメータを指定する必要があります。

Javaサーバーはユーザー名とパスワードをOPENINFOから取得するため、ユーザー名とパスワードをUBB構成ファイル内のOPENINFOに入力する必要があります。これによってパスワードが暗号化され、セキュリティの強さが保証されます。

DataSourceが異なるとConnectionURL形式も異なります。

Oracleデータベースの場合、形式は次のとおりです。

jdbc:oracle:thin:@//hostname:portnumber/servicename

DB2データベースの場合、形式は次のとおりです。

jdbc:db2://hostname:portnumber/DatabaseName

次のコード・サンプルは、Oracle Database構成の例を示しています。

<DataSources>
          <DataSource name="oracle">
<DriverClass>oracle.jdbc.xa.client.OracleXADataSource</DriverClass>
            <JdbcDriverParams>
<ConnectionUrl>jdbc:oracle:thin:@//10.182.54.144:1521/javaorcl</Connection
Url>
            </JdbcDriverParams>
          </DataSource>

1.6.1 AUTOTRAN

AUTOTRANも、Tuxedo Javaサーバーが通知するサービスで構成できます。Tuxedo Javaサーバーが*SERVICESセクションで構成されており、かつそのAUTOTRAN属性がYに指定されている場合、サービスによってトランザクションが自動的に開始されます。

1.6.2 サポートされるSpringアプリケーションのトランザクション・モード

Spring Frameworkは、2つのトランザクション管理モードをサポートしています。

  • プログラム的トランザクション・モード
  • 宣言的トランザクション・モード

宣言的トランザクションでは、EJBの対応するコンテナ管理トランザクション・モードにマップできる、次のような7つのトランザクション伝播モードをサポートできます。

表1-28 サポートされるトランザクション伝播モード

伝播定数 説明
PROPAGATION_REQUIRED 現在のトランザクションをサポートします。トランザクションが存在しない場合は、新しいトランザクションを作成します。これは、同じ名前のEJBトランザクション属性に似ています。このモードは、通常、トランザクション定義のデフォルト設定です。
PROPAGATION_SUPPORTS 現在のトランザクションをサポートします。トランザクションが存在しない場合は、トランザクションを伴わずに実行します。これは、同じ名前のEJBトランザクション属性に似ています。
PROPAGATION_MANDATORY 現在のトランザクションをサポートします。トランザクションが存在しない場合は、例外をスローします。これは、同じ名前のEJBトランザクション属性に似ています。
PROPAGATION_REQUIRES_NEW 新しいトランザクションを作成します。トランザクションが存在する場合は、現在のトランザクションを一時停止します。これは、同じ名前のEJBトランザクション属性に似ています。
PROPAGATION_NOT_SUPPORTED トランザクションを伴わずに実行します。トランザクションが存在する場合は、現在のトランザクションを一時停止します。これは、同じ名前のEJBトランザクション属性に似ています。
PROPAGATION_NEVER トランザクションを伴わずに実行します。トランザクションが存在する場合は、例外をスローします。これは、同じ名前のEJBトランザクション属性に似ています。
PROPAGATION_NESTED* 現在のトランザクションが存在する場合は、ネストされたトランザクション内で実行します。またはPROPAGATION_REQUIREDのように動作します。

ノート:

* 宣言的トランザクション管理モードでは、PROPAGATION_NESTED伝播動作がJavaサーバー・トランザクション・マネージャでサポートされていません。

Javaサーバーは、2つの開始トランザクションをサポートしています。

  • Javaサーバーから開始されるトランザクション。Spring Frameworkによって作成されます。
  • サービス・リクエスタから開始されるトランザクション。

トランザクション属性のtimeout、rollback-forおよびno-rollback-forがサポートされています。

ノート:

Tuxedo JavaサーバーのSpringトランザクション・マネージャを使用して、Oracle Databaseの各操作を非トランザクション型モデルで処理するには、使用するシナリオにトランザクションの開始文/終了文を明示的に追加する必要があります。
1.6.2.1 Javaサーバー・トランザクション・マネージャのデフォルトのタイムアウト

1つのBeanメソッドにタイムアウト値が指定されている場合、このタイムアウトが新しいトランザクションで使用されます。明示的なトランザクション・タイムアウト値もJavaサーバー・トランザクション・マネージャのタイムアウト値も指定されていない場合は、デフォルトの組込みのタイムアウト値(30)を使用して新しいトランザクションが作成されます。Javaサーバーでは、Javaサーバー構成ファイルでのデフォルトのトランザクション・タイムアウト値の指定がサポートされています。

次のコード・サンプルは、デフォルトのトランザクション・タイムアウト値を指定する方法を示しています。

<?xml version="1.0" encoding="UTF-8"?>
<TJSconfig version="2.0">
<java-config>
    <jvm-options>-Dtuxedo.tjatmi.defaultTransactionTimeout=60</jvm-options>
</java-config>
</TJSconfig>

1.7 制限事項

  • JDBCドライバを使用したデータベースへの接続のみがサポートされます。DB2の場合、サポートされるのはType 4 JDBCドライバのみです。
  • Oracle Tuxedo Javaサーバーでは対話機能はサポートされていません。
  • Oracle Tuxedo JavaサーバーではMSSQはサポートされていません。
  • <TJSconifg>/<tux-resources>で指定されるすべてのOracle Tuxedoリソースは、Javaサーバー自体によって管理および維持されます。それらは、Javaサーバーにデプロイされているすべてのサーバー・モジュールからアクセスおよび表示可能である必要があります。これらのリソース・クラスはパブリックとしてデプロイされる必要があります。