ATMI Javaサーバーの
TMJAVASVRは、TuxedoシステムとJava実装サービス間のブリッジとして機能する新しいOracle Tuxedoシステム・サーバーです。Tuxedo Javaサーバーは主に次のタスクを実行します。
•
|
Tuxedo Javaサーバー構成ファイルの読取り
|
•
|
構成ファイルに従いJavaコードに実装されるサービスの通知
|
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の場合、 %JRE_HOME%\bin\serverが PATH環境変数に含まれていることを確認します。
|
注意:
|
$JRE_HOMEはJREホーム・ディレクトリを指定します。設定については、 $TUXDIR/tux.envも参照できます。
|
UBBCONFIGで次の構成を行う必要があります。
•
|
Tuxedo Javaサーバーが TMJAVASVR CLOPTのJava実装サービスの構成ファイルを探すパスを構成します。詳細は、 TMJAVASVR(5)を参照してください
|
•
|
Javaサーバーに対して MINDISPATCHTHREADSおよび MAXDISPATCHTHREADSを指定して、その実行モード(マルチスレッド・モードまたはシングルスレッド・モード)を決定します。
|
MINDISPATCHTHREADSも
MAXDISPATCHTHREADSも指定しない場合、または
MAXDISPATCHTHREADSを1に指定した場合、Javaサーバーはシングルスレッド・モードで実行され、それ以外の場合、Javaサーバーはマルチスレッド・モードで実行されます。
リスト1-1
UBBCONFIGにおけるTMJAVASVR構成の例
TMJAVASVR SRVGRP=TJSVRGRP SRVID=3
CLOPT="-- -c /home/oracle/app/javaserver/TJSconfig.xml"
MINDISPATCHTHREADS=2 MAXDISPATCHTHREADS=3
Tuxedo Javaサーバー構成ファイルは、JVMでJava実装サービスの実行に必要なパラメータを定義するXMLファイルです。
2.1、2.0および1.0という3つのOracle Tuxedo Javaサーバー構成ファイル・バージョンがあります(対応するスキーマ・ファイルは、
TJSconfig_2.1.xsd、
TJSconfig_2.0.xsdおよび
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として処理します。
|
Tuxedo Javaサーバー構成ファイル、バージョン2.1
Tuxedo Javaサーバー構成ファイルには、次の要素があります。
Tuxedo Javaサーバー構成ファイルのルート要素です。Javaサーバーは最初にプリフェッチ処理を実行して、
TJSconfigが現在の構成ファイルに存在するかどうかを確認します。
TJSconfigが見つからない場合、Javaサーバーはログにエラーを記録して終了します。
表1-1は、
TJSconfigのすべての属性を示しています。
|
|
|
|
|
|
|
オプション。指定されない場合、Javaサーバーは構成ファイルをバージョン1.0の構成ファイルとして処理します。
|
java-configは、JavaサーバーがJVMを作成するときに、Javaサーバーによって読み取られ、JVMに渡されるJVMオプションを指定します。これらのオプションは、JVMを調整したり、追加のプロパティをJVMに渡すために使用されます。この要素を使用すると、ユーザーはGCポリシー、スタック・サイズ、ヒープ・サイズなどの観点からJVMの動作を制御できます。
表1-2は、
java-configのすべてのネスト要素を示しています。
|
|
|
|
|
|
|
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に置換します。
|
tux-configは、Tuxedoアプリケーションに関連する属性を指定します。
表1-3は、
tux-configのすべてのネスト要素を示しています。
|
|
|
|
|
|
|
Javaサーバー・クラスで実装されているメソッド tpsvrinit(String [])および tpsvrthrinit(String[])に対して、いくつかの起動オプションを指定します。具体的には、ユーザーのJavaサーバー・クラスでこの2つのメソッドの少なくとも1つが実装されている場合、Javaサーバーはこれらのオプションを読み取り、文字列配列を作成し、実装されているメソッドにその文字列配列を渡します。
|
|
|
|
KVペアを指定します。アプリケーションは、 getTuxConfigProperty(K)インタフェースを使用してペアを取得できます。
|
1つの
server-cloptでは、複数のオプションを指定できます。各オプションは空白で区切る必要があります。
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% (Windowsのみ)
|
表1-4は、
classpath-configのすべてのネスト要素を示しています。
表1-4
classpath-configのネスト要素
|
|
|
|
|
|
|
Javaサーバーがクラスの検索およびロードで使用するクラス・パス情報を指定します。
|
1つの
classpathでは、複数のクラス・パスを指定できます。各クラス・パスはシステムのパス・セパレータ(Windowsプラットフォームの場合は「;」、Unix系プラットフォームの場合は「:」)で区切る必要があります。
また、Javaサーバーのワイルドカード・モードが強化されて、すべてのサブディレクトリを再帰的に検索して一致する結果を見つけることができるようになりました。
tux-resourcesは、
view/view32および
fml/fml32型付きバッファ・クラスを指定して、バッファ・リソース・オブジェクトをインスタンス化します。
表1-5は、tux-resourcesのすべてのネスト要素を示しています。
|
|
|
|
|
|
|
オプション。Tuxedoの型付きバッファ・クラスのクラス・パスを指定します。
注意:
|
ユーザーは、 classpath-config要素でTuxedoの型付きバッファ・クラスのクラス・パスを指定することもできます。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1つの要素に複数の
FML/FML32/VIEW/VIEW32クラスを指定できます。各クラスはカンマで区切る必要があります。
ユーザーは、
viewj/viewj32コンパイラおよび
mkfldclass/mkfldclass32ユーティリティを直接使用して、対応する
VIEW/VIEW32クラスおよび
FML/FML32クラスを生成できます。これらのコンパイラまたはユーティリティを実行する前に、
$TUXDIR/udataobj/tuxj/com.bea.core.jatmi_12.2.2.0.jarが含まれるクラス・パスを指定します。
jdbc-resourcesは、JDBC互換データ・ソース・パラメータを指定します。
表1-6は、
jdbc-resourcesのすべてのネスト要素を示しています。
表1-6
jdbc-resourcesのネスト要素
|
|
|
データベース接続を作成するためのJDBCデータ・ソースのエントリが含まれます。
|
表1-7および
表1-8は、
data-sourceのすべての属性およびネスト要素を示しています。
|
|
|
|
|
|
|
データ・ソースのドライバ・パッケージ・パスを指定します。 classpath-config要素でドライバ・クラス・パスを指定することもできます。
|
|
|
|
|
|
データベース接続の作成に使用されるJDBCドライバのエントリが含まれます。
|
表1-9は、
driver-paramsのすべてのネスト要素を示しています。
表1-10tux-server-configは、Javaサーバー・クラス属性を指定します。
表1-10
tux-server-configの属性
|
|
|
|
|
|
|
Javaサーバーでのサーバー・モジュールの最大数。
|
tux-server-configには、ネスト要素
sever-moduleが含まれます。
表1-11は、
tux-server-config/server-moduleのすべての属性を示しています。
表1-11
tux-server-config/server-moduleの属性
|
|
|
|
|
|
|
サーバー・モジュール名は、 <tux-server-config>要素セクション内のすべてのサーバー・モジュール名の中で一意である必要があり、アスタリスク (*)、カンマ (,)またはコロン (:)は使用できません。
|
|
|
|
サーバー・モジュールでのJavaサーバー・クラスの最大数。
|
|
|
|
サーバー・モジュールでの/Adminコマンド・クラスの最大数。
|
|
|
|
Javaサーバーでの/Adminコマンドの最大数。
|
表1-12は、
tux-server-config/server-moduleのすべてのネスト要素を示しています。
表1-12
tux-server-config/server-moduleのネスト要素
|
|
|
|
|
|
|
オプション。サーバー・クラスのクラス・パスを指定します。 classpath-configセクションでクラス・パスを指定することもできます。
|
|
|
|
引数パラメータを指定して tpsvrinit()に渡します。
|
|
|
|
KVペアを指定します。アプリケーションは、 getTuxConfigProperty(K)インタフェースを使用してペアを取得できます。
|
|
|
tux-server-config/server-module/server-classの属性を
表1-13に示します。
表1-13
tux-server-config/server-module/server-classの属性
|
|
|
|
|
|
|
|
|
|
|
構成ファイルで明示的に指定されていない場合に、Javaサーバーがサービス・メソッドをメソッド名と同じ名前のTuxedoサービスとして通知できるようにします。
オプション。以前のリリースとの互換性を維持するために、デフォルト値は yesです。
|
server-classには、
servicesというネスト要素もあります。
servicesには、
serviceというネスト要素があります。
表1-14は、
tux-server-config/server-module/server-class/services/serviceのすべての属性を示しています。
|
|
|
|
|
|
|
Tuxedoアプリケーション・ドメインに通知されるサービス名を指定します。
|
|
|
|
サーバー・クラスに実装されるメソッドを指定します。メソッドは、 TPSVCINFOパラメータおよび voidタイプの戻り値で宣言する必要があります。
|
サービスを実行する各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メソッドに関連付けます。
|
リスト1-2
構成ファイルで指定されたTuxedoサービスの通知
<TJSconfig version="2.1">
<tux-server-config maxmodules="100" maxadmcmds="100">
<server-module name="MyAppModule_1">
<server-class name="MyTuxedoServerClass">
<service name="svc1" target="method1"></service>
このサンプルでは、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から継承されません。
|
バージョン2.1では、Javaサーバー・アプリケーションを詳細に管理する方法を提供するために、以前のアプリケーションをより多くのモジュールに分離するために使用されるモジュール・エンティティが導入されています。いくつかの新しい属性も構成ファイルに追加されています。
<TJSconfig version="2.1">
<jvm-options>-XX:MaxPermSize=192m -Xms256m </jvm-options>
<jvm-options>-server</jvm-options>
<jvm-options>-Xmx512m</jvm-options>
<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>
<classpath>${APPDIR}/classes</classpath>
<classpath>$USERCLASS/usr/libs/lib1.jar</classpath>
<classpath>$USERCLASS/usrlib2/*</classpath>
<classpath>$USERCLASS/usrlib3/*.jar</classpath>
<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>
<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>
jdbc:oracle:thin:@//10.182.54.144:1521/javaorcl
<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"/>
<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">
<service name="mou1_svc1" target="method1"></service>
<service name="mou1_svc2" target="method2"></service>
<server-class name="MyTuxedoServerClass2" autoadv="yes">
<service name="mou1_svc3" target="JAVASTRINGSVC"></service>
<service name="mou1_svc4" target="JAVAFML32SVC"></service>
<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">
<service name="mou2_svc1" target="method1"></service>
<service name="mou2_svc2" target="method2"></service>
<server-class name="MyTuxedoServerClass2" autoadv="yes">
<service name="mou2_svc3" target="JAVASTRINGSVC"></service>
<service name="mou2_svc4" target="JAVAFML32SVC"></service>
Javaサーバーは、アプリケーション・サーバー・クラスに実装されているすべてのサービス・メソッドを取得し、次の規則でサービスを通知します。
•
|
1つのメソッドを異なるサービス名で複数回通知できます。
|
•
|
構成ファイルに指定されているメソッドは、指定されたサービス名で通知されます。
|
•
|
構成ファイルに指定されていないメソッドでは、メソッド名がサービス名として通知されます。
|
•
|
構成ファイルに指定されているサービス名で通知されたメソッドが、同じメソッド名でさらに通知されることはありません。
|
サーバー・クラス内でpublicと宣言されたメソッドのみがJavaサーバーによって取得されて、通知アクションに関与します。
Tuxedo Javaサーバー構成ファイル、バージョン2.0
Tuxedo Javaサーバー構成ファイルには、次の要素があります。
Tuxedo Javaサーバー構成ファイルのルート要素です。Javaサーバーは最初にプリフェッチ処理を実行して、
TJSconfigが現在の構成ファイルに存在するかどうかを確認します。
TJSconfigが見つからない場合、Javaサーバーはログにエラーを記録して終了します。
表1-15は、
TJSconfigのすべての属性を示しています。
|
|
|
|
|
|
|
これはオプションです。指定されない場合、Javaサーバーは構成ファイルをバージョン1.0の構成ファイルとして処理します。
|
java-configは、JavaサーバーがJVMを作成するときに、Javaサーバーによって読み取られ、JVMに渡されるJVMオプションを指定します。これらのオプションは、JVMを調整したり、追加のプロパティをJVMに渡すために使用されます。この要素を使用すると、ユーザーはGCポリシー、スタック・サイズ、ヒープ・サイズなどの観点からJVMの動作を制御できます。
表1-16は、
java-configのすべてのネスト要素を示しています。
|
|
|
|
|
|
|
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に置換します。
|
tux-configは、Tuxedoアプリケーションに関連する属性を指定します。
表1-17は、
tux-configのすべてのネスト要素を示しています。
|
|
|
|
|
|
|
Javaサーバー・クラスで実装されているメソッド tpsvrinit(String [])および tpsvrthrinit(String[])に対して、いくつかの起動オプションを指定します。具体的には、ユーザーのJavaサーバー・クラスでこの2つのメソッドの少なくとも1つが実装されている場合、Javaサーバーはこれらのオプションを読み取り、文字列配列を作成し、実装されているメソッドにその文字列配列を渡します。
|
1つの
server-cloptでは、複数のオプションを指定できます。各オプションは空白で区切る必要があります。
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% (Windowsのみ)
|
表1-18は、
classpath-configのすべてのネスト要素を示しています。
表1-18
classpath-configのネスト要素
|
|
|
|
|
|
|
Javaサーバーがクラスの検索およびロードで使用するクラス・パス情報を指定します。
|
1つの
classpathでは、複数のクラス・パスを指定できます。各クラス・パスはシステムのパス・セパレータ(Windowsプラットフォームの場合は「;」、Unix系プラットフォームの場合は「:」)で区切る必要があります。
また、Javaサーバーのワイルドカード・モードが強化されて、すべてのサブディレクトリを再帰的に検索して一致する結果を見つけることができるようになりました。
tux-resourcesは、
view/view32および
fml/fml32型付きバッファ・クラスを指定して、バッファ・リソース・オブジェクトをインスタンス化します。
表1-19は、tux-resourcesのすべてのネスト要素を示しています。
表1-19
tux-resourcesのネスト要素
|
|
|
|
|
|
|
これはオプションです。Tuxedoの型付きバッファ・クラスのクラス・パスを指定します。
注意:
|
ユーザーは、 classpath-config要素でTuxedoの型付きバッファ・クラスのクラス・パスを指定することもできます。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1つの要素に複数の
FML/FML32/VIEW/VIEW32クラスを指定できます。各クラスはカンマで区切る必要があります。
ユーザーは、
viewj/viewj32コンパイラおよび
mkfldclass/mkfldclass32ユーティリティを直接使用して、対応する
VIEW/VIEW32クラスおよび
FML/FML32クラスを生成できます。これらのコンパイラまたはユーティリティを実行する前に、
$TUXDIR/udataobj/tuxj/com.bea.core.jatmi_2.0.0.0.jarが含まれるクラス・パスを指定してください。
jdbc-resourcesは、JDBC互換データ・ソース・パラメータを指定します。
表1-20は、
jdbc-resourcesのすべてのネスト要素を示しています。
表1-20
jdbc-resourcesのネスト要素
|
|
|
データベース接続を作成するためのJDBCデータ・ソースのエントリが含まれます。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
これはオプションです。デフォルト値は trueです。
|
|
|
|
|
|
|
|
データ・ソースのドライバ・パッケージ・パスを指定します。 classpath-config要素でドライバ・クラス・パスを指定することもできます。
|
|
|
|
|
|
データベース接続の作成に使用されるJDBCドライバのエントリが含まれます。
|
表1-23は、
driver-paramsのすべてのネスト要素を示しています。
表1-23
driver-paramsのネスト要素
|
|
|
|
|
|
|
|
tux-server-configは、Javaサーバー・クラス・パラメータを指定します。
表1-24は、
tux-server-configのすべてのネスト要素を示しています。
表1-24
tux-server-configのネスト要素
|
|
|
|
|
|
|
これはオプションです。サーバー・クラスのクラス・パスを指定します。 classpath-configセクションでクラス・パスを指定することもできます。
|
|
Javaサーバー・クラスのエントリが含まれます。ユーザーはサーバー・クラス名を指定する必要があり、メソッドのサービス別名を指定できます。
|
表1-25は、
server-classのすべての属性を示しています。
server-classには、servicesというネスト要素もあります。
servicesには、
serviceというネスト要素があります。
表1-26は、
serviceのすべての属性を示しています。
|
|
|
|
|
|
|
Tuxedoアプリケーション・ドメインに通知されるサービス名を指定します。
|
|
|
|
サーバー・クラスに実装されるメソッドを指定します。メソッドは、 TPSVCINFOパラメータおよび voidタイプの戻り値で宣言する必要があります。
|
リスト1-4に、Tuxedo Javaサーバー構成ファイルを作成する例を示します。
リスト1-4
Tuxedo Javaサーバー構成ファイルの作成例
<?xml version="1.0" encoding="UTF-8"?>
<TJSconfig version="2.0">
<jvm-options>-XX:MaxPermSize=192m</jvm-options>
<jvm-options>-server</jvm-options>
<jvm-options>-DMYVAR="var01" -DMYVAR02="var02"</jvm-options>
<server-clopt>-C dom=TMJSVRDOM -t 1000</server-clopt>
<server-clopt>-n 200</server-clopt>
<classpath>${USER_JAVA_LIB}/lib1</classpath>
<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>
<data-source vendor="Oracle" driver-type="thin" enabled="true">
<datasource-classname>oracle.jdbc.xa.client.OracleXADataSource</datasource-classname>
jdbc:oracle:thin:@//Server:1521/orcl
<classpath>$TUXJRE/jce.jar</classpath>
<server-class name="MyTuxedoJavaServer">
<service name="JAVATOUPPER" target="JAVATOUPPER"></service>
<service name="JAVATOUPPERFORWARD" target="JAVATOUPPERFORWARD"></service>
Javaサーバーは、アプリケーション・サーバー・クラスに実装されているすべてのサービス・メソッドを取得し、次の規則でサービスを通知します。
•
|
1つのメソッドを異なるサービス名で複数回通知できます。
|
•
|
構成ファイルに指定されているメソッドは、指定されたサービス名で通知されます。
|
•
|
構成ファイルに指定されていないメソッドでは、メソッド名がサービス名として通知されます。
|
•
|
構成ファイルに指定されているサービス名で通知されたメソッドが、同じメソッド名でさらに通知されることはありません。
|
サーバー・クラス内でpublicと宣言されたメソッドのみがJavaサーバーによって取得されて、通知アクションに関与します。
Tuxedo Javaサーバー構成ファイル、バージョン1.0
Tuxedo Javaサーバー構成ファイルのプロパティ
表1-27は、Javaサーバー構成ファイルで使用可能なプロパティを示しています。対応する
「Javaサーバー構成スキーマ・ファイル」を参照してください。このファイルでは、より詳細な情報に基づいて構成XMLファイルの検証チェックが行われます。
表1-27
Tuxedo Javaサーバー構成ファイルのプロパティ
|
|
|
|
|
|
|
構成済のクラス・メソッドの実行に使用されるパッケージを指定します。
|
|
|
|
JDBC DataSourceクラス名を指定します。
|
|
|
|
JDBC接続URL文字列(対応するJDBCドライバに必要な形式に従う必要がある)を指定します。ユーザー名およびパスワードを含めないでください。
|
name (For TuxedoServerClass)
|
|
|
Tuxedo Javaサーバー・クラス名を指定します。
|
|
|
|
メソッドに関連する掲示板で通知されるサービス名を指定します。構成ファイルでは、各「svcname」属性値は一意である必要があります。このプロパティを指定しない場合、メソッド名はサービス名として使用されます。
|
|
|
|
|
|
|
|
完全修飾FMLクラスのカンマ区切りリスト。FML16フィールド表クラスはすべてここで定義する必要があります。ここで定義しない場合、FMLの Fldid()/ Fname()は機能しません。
|
|
|
|
完全修飾FMLクラスのカンマ区切りリスト。FML32フィールド表クラスはすべてここで定義する必要があります。ここで定義しない場合、FML32の Fldid()/ Fname()は機能しません。
|
|
|
|
完全修飾FMLクラスのカンマ区切りリスト。プログラミングで使用されるすべてのviewクラスはここで定義する必要があります。
|
|
|
|
完全修飾FMLクラスのカンマ区切りリスト。プログラミングで使用されるすべてのview32クラスはここで定義する必要があります。
|
次の
<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>または
<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はデフォルトでクラスパスに追加されます。
|
View/View32を使用するには、
<Resources></Resources>要素で
Viewクラスを指定する必要があります。
Fldid()/Fname()を適切に使用するには、
<Resources></Resources>要素で
FML/FML32 field tableクラスを指定する必要があります。
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を参照することをお薦めします。
|
サービスを実行する各Tuxedo Javaサーバー・クラスは、一連のメソッドを実行する必要があります。ここで、入力引数パラメータは
TPSVCINFOインタフェースです。サービスとして通知されるメソッドは、パブリック・メソッドで、戻し型を
voidに設定する必要があります。
Tuxedo Javaサーバーは、すべてのパブリック・メソッドをサービスとして掲示板に通知します。
Servicesが構成ファイルで指定されている場合、Tuxedo Javaサーバーは名前プロパティの値をサービス名として使用します。それ以外の場合は、メソッド名がサービス名として使用されます。
リスト1-5に、Tuxedo Javaサーバー構成ファイルの例を示します。
MyTuxedoServerClass1 Javaクラスが
JAVASTRINGSVC、
JAVAFML32SVC、
svc3の各メソッドを定義し、
MyTuxedoServerClass2 Javaクラスが
svc4メソッドを定義すると仮定すると、この例ではJDBC接続によりOracleデータベースへの接続が開始され、
svc1、
svc2、
svc3および
svc4の各サービスがエクスポートされます。
構成ファイルでメソッド名
svc3および
svc4に
<Service>プロパティが指定されていないため、これらのメソッド名はサービス名としてエクスポートされます。
リスト1-5
Tuxedo Javaサーバーの構成例
<?xml version="1.0" encoding="UTF-8"?>
<ClassPath>/home/oracle/app/javaserver/MyTuxedoServerClass.jar</ClassPath>
<ClassPath>/home/oracle/app/oracle/product/11.2.0/dbhome_2/ucp/lib/ucp.jar</ClassPath>
<ClassPath>/home/oracle/app/oracle/product/11.2.0/dbhome_2/jdbc/lib/ojdbc6.jar</ClassPath>
<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>
<DataSource name="oracle">
<DriverClass>oracle.jdbc.xa.client.OracleXADataSource</DriverClass>
<ConnectionUrl>jdbc:oracle:thin:@//10.182.54.144:1521/javaorcl</ConnectionUrl>
<TuxedoServerClass name="MyTuxedoServerClass1">
<Service name="svc1" target="JAVASTRINGSVC"></Service>
<Service name="svc2" target="JAVAFML32SVC"></Service>
<TuxedoServerClass name="MyTuxedoServerClass2"></TuxedoServerClass>
•
|
サービス名は、構成ファイル内の指定したクラス+メソッドへのマッピングに使用されるため、1つのTuxedo Javaサーバーおよびそれに含まれる異なるJavaクラス間で一意である必要があります。
|
•
|
ユーザー定義クラスおよびDataSourceドライバ・ライブラリなどのJavaアプリケーションで使用されるすべてのライブラリ(標準JREライブラリを除く)を提供する必要があります。
|
Tuxedo Javaサーバー・トランザクション・マネージャの構成
Javaサーバーには、JTA準拠のトランザクション・マネージャを新規作成したり、既存のものを取得するためのgetterメソッドがあります。
リスト1-6に、Springアプリケーション・コンテキストの構成ファイルでTuxedoトランザクション・マネージャを構成する方法を示します。
リスト1-6
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 id="springAppTransactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransaction" ref="TuxTransactionManager"/>
<property name="transactionManager" ref="TuxTransactionManager"/>
Springアプリケーション・コンテキストを作成、破棄、管理するのはJavaサーバーではなく、Springアプリケーションです。
Spring Frameworkライブラリおよびすべての依存ライブラリは、Javaサーバー構成ファイルで構成する必要があります。
リスト1-7に、Javaサーバー構成ファイルでSpring Frameworkライブラリを指定する方法を示します。
リスト1-7
Spring Frameworkライブラリの指定例
<?xml version="1.0" encoding="UTF-8"?>
<TJSconfig version="2.0">
<jvm-options>-DSPRING_LIB=/home/tuxdev/Spring/3.2.4</jvm-options>
<jvm-options>-DSPRING_DEP=/home/tuxdev/Spring/deps</jvm-options>
<classpath>${SPRING_LIB}/*.jar</classpath>
<classpath>${SPRING_DEP}/*.jar</classpath>
Javaサーバーは起動の段階で、Javaサーバー構成ファイル内の構成情報に従って、Spring Frameworkとすべての依存ライブラリをロードします。Springアプリケーションでは、必要に応じて、Spring Frameworkクラスを直接インポートできます。
Tuxedo Javaベース・トランザクションは、既存のTuxedoトランザクション管理フレームワークに基づいて実行されます。これまでと同様に、トランザクション用にUBB構成ファイルで作成する必要がある構成として、特定のグループのトランザクション・マネージャ・サーバー(
TMSs)およびリソース・マネージャ(
RMs)の属性が定義する必要があります。Tuxedo Javaサーバー(
TMJAVASVR)はこのグループに属する必要があります。
リスト1-8
Javaベース・トランザクションのUBB構成
ORASVRGRP LMID=simple GRPNO=1
OPENINFO="Oracle_XA:Oracle_XA+Acc=P/system/oracle+SesTm=120+MaxCur=5+LogDir=.+SqlNet=orcl"
TMSNAME=TMSORA TMSCOUNT=2
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
jdbc:db2://hostname:portnumber/DatabaseName
<DataSource name="oracle">
<DriverClass>oracle.jdbc.xa.client.OracleXADataSource</DriverClass>
<ConnectionUrl>jdbc:oracle:thin:@//10.182.54.144:1521/javaorcl</ConnectionUrl>
AUTOTRANも、Tuxedo Javaサーバーが通知するサービスで構成できます。Tuxedo Javaサーバーが
*SERVICESセクションで構成されており、かつその
AUTOTRAN属性が
Yに指定されている場合、サービスによってトランザクションが自動的に開始されます。
サポートされるSpringアプリケーションのトランザクション・モード
Spring Frameworkは、2つのトランザクション管理モードをサポートしています。
宣言的トランザクションでは、EJBの対応するコンテナ管理トランザクション・モードにマップできる、次のような7つのトランザクション伝播モードをサポートできます。
表1-28
サポートされるトランザクション伝播モード
|
|
|
現在のトランザクションをサポートします。トランザクションが存在しない場合は、新しいトランザクションを作成します。これは、同じ名前のEJBトランザクション属性に似ています。このモードは、通常、トランザクション定義のデフォルト設定です。
|
|
現在のトランザクションをサポートします。トランザクションが存在しない場合は、トランザクションを伴わずに実行します。これは、同じ名前のEJBトランザクション属性に似ています。
|
|
現在のトランザクションをサポートします。トランザクションが存在しない場合は、例外をスローします。これは、同じ名前のEJBトランザクション属性に似ています。
|
|
新しいトランザクションを作成します。トランザクションが存在する場合は、現在のトランザクションを一時停止します。これは、同じ名前のEJBトランザクション属性に似ています。
|
PROPAGATION_NOT_SUPPORTED
|
トランザクションを伴わずに実行します。トランザクションが存在する場合は、現在のトランザクションを一時停止します。これは、同じ名前のEJBトランザクション属性に似ています。
|
|
トランザクションを伴わずに実行します。トランザクションが存在する場合は、例外をスローします。これは、同じ名前のEJBトランザクション属性に似ています。
|
|
現在のトランザクションが存在する場合は、ネストされたトランザクション内で実行します。または PROPAGATION_REQUIREDのように動作します。
|
注意:
|
*宣言的トランザクション管理モードでは、 PROPAGATION_NESTED伝播動作がJavaサーバー・トランザクション・マネージャでサポートされていません。
|
Javaサーバーは、2つの開始トランザクションをサポートしています。
•
|
Javaサーバーから開始されるトランザクション。Spring Frameworkによって作成されます。
|
•
|
サービス・リクエスタから開始されるトランザクション。
|
トランザクション属性のtimeout、rollback-forおよびno-rollback-forがサポートされています。
注意:
|
Tuxedo JavaサーバーのSpringトランザクション・マネージャを使用して、Oracle Databaseの各操作を非トランザクション型モデルで処理するには、使用するシナリオにトランザクションの開始文/終了文を明示的に追加する必要があります。
|
Javaサーバー・トランザクション・マネージャのデフォルトのタイムアウト
1つのBeanメソッドにタイムアウト値が指定されている場合、このタイムアウトが新しいトランザクションで使用されます。明示的なトランザクション・タイムアウト値もJavaサーバー・トランザクション・マネージャのタイムアウト値も指定されていない場合は、デフォルトの組込みのタイムアウト値(30)を使用して新しいトランザクションが作成されます。Javaサーバーでは、Javaサーバー構成ファイルでのデフォルトのトランザクション・タイムアウト値の指定がサポートされています。例を示します。
リスト1-10
デフォルトのトランザクション・タイムアウト値の指定例
<?xml version="1.0" encoding="UTF-8"?>
<TJSconfig version="2.0">
<jvm-options>-Dtuxedo.tjatmi.defaultTransactionTimeout=60</jvm-options>
•
|
JDBCドライバを使用したデータベースへの接続のみがサポートされます。DB2の場合、サポートされるのはType 4 JDBCドライバのみです。
|
•
|
Oracle Tuxedo Javaサーバーでは対話機能はサポートされていません。
|
•
|
Oracle Tuxedo JavaサーバーではMSSQはサポートされていません。
|
•
|
<TJSconifg>/<tux-resources>で指定されるすべてのOracle Tuxedoリソースは、Javaサーバー自体によって管理および維持されます。それらは、Javaサーバーにデプロイされているすべてのサーバー・モジュールからアクセスおよび表示可能である必要があります。これらのリソース・クラスはパブリックとしてデプロイされる必要があります。
|