1 Oracle Tuxedo Javaサーバーの構成
この項の内容は次のとおりです。
1.1 概要
ATMI JavaサーバーのTMJAVASVR
は、TuxedoシステムとJava実装サービス間のブリッジとして機能する新しいOracle Tuxedoシステム・サーバーです。Tuxedo Javaサーバーは主に次のタスクを実行します。
- Tuxedo Javaサーバー構成ファイルの読取り
- 構成ファイルに従いJavaコードに実装されるサービスの通知
- JVMの起動
- Java worldへのリクエストの転送
- Java実装サービスからの結果の取得および実行
- Java worldへの結果の返し
親トピック: Oracle Tuxedo Javaサーバー構成
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
も参照できます。
親トピック: Oracle Tuxedo Javaサーバー構成
1.3 UBBCONFIGにおける構成
UBBCONFIG
で次の構成を行う必要があります。
- Tuxedo Javaサーバーが
TMJAVASVR
CLOPT
のJava実装サービスの構成ファイルを探すパスを構成します。詳細は、TMJAVASVR(5)
を参照してください - Javaサーバーに対して
MINDISPATCHTHREADS
およびMAXDISPATCHTHREADS
を指定して、その実行モード(マルチスレッド・モードまたはシングルスレッド・モード)を決定します。MINDISPATCHTHREADS
もMAXDISPATCHTHREADS
も指定しない場合、またはMAXDISPATCHTHREADS
を1に指定した場合、Javaサーバーはシングルスレッド・モードで実行され、それ以外の場合、Javaサーバーはマルチスレッド・モードで実行されます。
次のサンプル・コードは、UBBCONFIGファイルを使用してTMJAVASVRを構成する方法を示しています。
*SERVERS
TMJAVASVR SRVGRP=TJSVRGRP SRVID=3
CLOPT="-- -c /home/oracle/app/javaserver/TJSconfig.xml"
MINDISPATCHTHREADS=2 MAXDISPATCHTHREADS=3
親トピック: Oracle Tuxedo Javaサーバー構成
1.4 Tuxedo Javaサーバー構成ファイル
Tuxedo Javaサーバー構成ファイルは、JVMでJava実装サービスの実行に必要なパラメータを定義するXMLファイルです。
2.1、2.0および1.0の3つのOracle Tuxedo Javaサーバー構成ファイル・バージョンがあります(対応するスキーマ・ファイルは、TJSconfig_2.1.xsd
、TJSconfig_2.0.xsd
、and 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を使用することをお薦めします(TJSconfig
のversion
属性を2.1
に指定します)。version
属性が設定されない場合、Javaサーバーはデフォルトで構成ファイルをバージョン1.0として処理します。
親トピック: Oracle Tuxedo Javaサーバー構成
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の構成ファイルとして処理します。 |
親トピック: バージョン2.1構成ファイルの要素
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
に置換します。
親トピック: バージョン2.1構成ファイルの要素
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
では、複数のオプションを指定できます。各オプションは空白で区切る必要があります。
親トピック: バージョン2.1構成ファイルの要素
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サーバーのワイルドカード・モードが強化されて、すべてのサブディレクトリを再帰的に検索して一致する結果を見つけることができるようになりました。
親トピック: バージョン2.1構成ファイルの要素
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
が含まれるクラス・パスを指定します。
親トピック: バージョン2.1構成ファイルの要素
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を指定します。 |
親トピック: バージョン2.1構成ファイルの要素
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 | サーバー・モジュール要素の名前。
必須。 サーバー・モジュール名は、 |
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タイプの戻り値で宣言する必要があります。
|
親トピック: バージョン2.1構成ファイルの要素
1.4.1.2 サービスの通知
サービスを実行する各Tuxedo Javaサーバー・クラスは、一連のメソッドを実行する必要があります。ここで、入力引数パラメータはTPSVCINFO
インタフェースです。サービスとして通知されるメソッドは、パブリック・メソッドで、戻し型をvoid
に設定する必要があります。
Tuxedo Javaサーバーは、すべてのパブリック・メソッドをサービスとして掲示板に通知します。Services
が構成ファイルで指定されている場合、Tuxedo Javaサーバーは名前プロパティの値をサービス名として使用します。それ以外の場合は、メソッド名がサービス名として使用されます。
Javaサーバーには、Tuxedoサービスを通知する3つの方法があります。
- 構成ファイル
<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
に実装されたJavamethod1
は、Tuxedoサービスsvc1
に関連付けられます。正確なサービス処理ロジックは、Java言語で記述されたMyTuxedoServerClass.method1
に実装されています。 - 構成ファイルで指定されたJavaサーバー・クラスに実装されたJavaサービス・メソッドが示されず、Javaサーバー・クラスの
autoadv
属性が設定されていない(以前のリリースとの互換性を維持するためにデフォルト値はyes
)か明示的にyes
に設定されている場合、サービス・メソッドはサービス・メソッドと同じ名前のTuxedoサービスに通知されます。autoadvの属性値がnoに設定されている場合、このJavaサーバー・クラスに実装されている残りのサービス・メソッドは自動的には通知されません。
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の構成ファイルとして処理します。 |
親トピック: バージョン2.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
に置換します。
親トピック: バージョン2.0構成ファイルの要素
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
では、複数のオプションを指定できます。各オプションは空白で区切る必要があります。
親トピック: バージョン2.0構成ファイルの要素
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サーバーのワイルドカード・モードが強化されて、すべてのサブディレクトリを再帰的に検索して一致する結果を見つけることができるようになりました。
親トピック: バージョン2.0構成ファイルの要素
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
が含まれるクラス・パスを指定してください。
親トピック: バージョン2.0構成ファイルの要素
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を指定します。 |
親トピック: バージョン2.0構成ファイルの要素
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 タイプの戻り値で宣言する必要があります。
|
親トピック: バージョン2.0構成ファイルの要素
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
親トピック: Tuxedo Javaサーバー構成ファイル
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クラスでJAVASTRINGSVC
、JAVAFML32SVC
およびsvc3
メソッドが定義され、MyTuxedoServerClass2
Javaクラスでsvc4が定義されていることを前提としています。この例では、Oracleデータベースに対してJDBC接続が作成され、サービス(svc1
、svc2
、svc3
および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サーバーにデプロイされているすべてのサーバー・モジュールからアクセスおよび表示可能である必要があります。これらのリソース・クラスはパブリックとしてデプロイされる必要があります。