Oracle Tuxedoアプリケーションの設定

     前  次    新規ウィンドウで目次を開く  新規ウィンドウで索引を開く  PDFとして表示 - 新規ウィンドウ  Adobe Readerを入手 - 新規ウィンドウ
コンテンツはここから始まります

ATMI Javaサーバーの管理

このトピックは、以下の項で構成されています。

 


概要

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

 


UBBCONFIGにおける構成

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

リスト18-1に、例を示します。

リスト18-1 UBBCONFIGにおけるTMJAVASVRの構成例
*SERVERS
TMJAVASVR SRVGRP=TJSVRGRP SRVID=3
CLOPT="-- -c /home/oracle/app/javaserver/TJSconfig.xml"
MINDISPATCHTHREADS=2 MAXDISPATCHTHREADS=3

 


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

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

Oracle Tuxedo Javaサーバー構成ファイルには、バージョン1.0および2.0の2種類のバージョンがあります。対応するスキーマ・ファイルはTJSconfig_1.0.xsdおよびTJSconfig_2.0.xsdで、両方とも$TUXDIR/udataobj/tuxjディレクトリにインストールされます。

両方のバージョンがサポートされていますが、TJSconfigversion属性を2.0に指定することにより、バージョン2.0を使用することを強くお薦めします。versionが設定されない場合、Javaサーバーは構成ファイルをバージョン1.0ファイルとして処理します。

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

構成ファイルの要素

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

TJSconfig

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

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

java-config

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

表18-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に置換します。
tux-config

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

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

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

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つのモードをサポートしています。

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

表18-4 classpath-configのネスト要素
名前
範囲
説明
classpath
文字列
1..511
Javaサーバーがクラスの検索およびロードで使用するクラス・パス情報を指定します。

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

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

tux-resources

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

表18-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_2.0.0.0.jarが含まれるクラス・パスを指定してください。

jdbc-resources

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

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

表18-7および表18-8は、data-sourceのすべての属性およびネスト要素を示しています。

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

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

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

表18-9 driver-paramsのネスト要素
名前
範囲
説明
connection-url
文字列
1..511
データ・ソースの接続URLを指定します。

tux-server-config

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

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

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

表18-11 server-classの属性
名前
範囲
説明
name
文字列
1..255
サーバー・クラス名を指定します。

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

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

構成ファイルの例

リスト18-2に、Tuxedo Javaサーバー構成ファイルを作成する例を示します。

リスト18-2 Tuxedo Javaサーバー構成ファイルの作成例
<?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>

Javaサービスのマッピング

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

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

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

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

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

FML/Viewフィールド表クラスの設定

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

構成ルール

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

注意: 構成ファイル(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サーバーは名前プロパティの値をサービス名として使用します。それ以外の場合は、メソッド名がサービス名として使用されます。

構成ファイルの例

リスト18-3に、Tuxedo Javaサーバー構成ファイルの例を示します。

MyTuxedoServerClass1 JavaクラスがJAVASTRINGSVCJAVAFML32SVCsvc3の各メソッドを定義し、MyTuxedoServerClass2 Javaクラスがsvc4メソッドを定義すると仮定すると、この例ではJDBC接続によりOracleデータベースへの接続が開始され、svc1svc2svc3およびsvc4の各サービスがエクスポートされます。

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

リスト18-3 Tuxedo Javaサーバーの構成例
<?xml version="1.0" encoding="UTF-8"?>
<TJSconfig>
<ClassPaths>
<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>
</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</ConnectionUrl>
            </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>
注:

 


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

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

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

リスト18-4 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>

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

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

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

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

リスト18-5 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クラスを直接インポートできます。

 


トランザクション管理

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

リスト18-6 Javaベース・トランザクションのUBB構成
*GROUP
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
*SERVERS
TMJAVASVR SRVGRP=ORASVRGRP SRVID=3 CLOPT="-- -c TJSconfig_ORA.xml"
	MINDISPATCHTHREADS=2 MAXDISPATCHTHREADS=2

UBB構成ファイルにおけるトランザクションの構成方法の詳細は、トランザクションを使用するための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

リスト18-7は、Oracleデータベースの構成例です。

リスト18-7 Oracleデータベースの構成例
<DataSources>
	   <DataSource name="oracle">
            <DriverClass>oracle.jdbc.xa.client.OracleXADataSource</DriverClass>
            <JdbcDriverParams>
                <ConnectionUrl>jdbc:oracle:thin:@//10.182.54.144:1521/javaorcl</ConnectionUrl>
            </JdbcDriverParams>
          </DataSource>
</DataSources>

AUTOTRAN

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

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

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

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

表18-14 サポートされるトランザクション伝播モード
伝播定数
説明
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つの開始トランザクションをサポートしています。

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

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

Javaサーバー・トランザクション・マネージャのデフォルトのタイムアウト

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

リスト18-8 デフォルトのトランザクション・タイムアウト値の指定例
<?xml version="1.0" encoding="UTF-8"?>
<TJSconfig version="2.0">
<java-config>
    <jvm-options>-Dtuxedo.tjatmi.defaultTransactionTimeout=60</jvm-options>
</java-config>
</TJSconfig>

 


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のみ)を適宜設定します。

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

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

 


制限

 


Javaサーバー構成ファイルのスキーマ

バージョン2.0用のJavaサーバー構成スキーマ・ファイル

リスト18-9に、バージョン2.0用のJavaサーバー構成ファイルのXMLスキーマを示します。

リスト18-9 バージョン2.0用のJavaサーバー構成スキーマ・ファイル
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="TJSconfig">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="1" ref="java-config"/>
        <xs:element minOccurs="0" maxOccurs="1" ref="tux-config"/>
        <xs:element minOccurs="0" maxOccurs="1" ref="classpath-config"/>
        <xs:element minOccurs="0" maxOccurs="1" ref="tux-resources"/>
        <xs:element minOccurs="0" maxOccurs="1" ref="jdbc-resources"/>
        <xs:element minOccurs="0" maxOccurs="1" ref="jdbc-connection-pool"/>
        <xs:element minOccurs="1" maxOccurs="1" ref="tux-server-config"/>
      </xs:sequence>
      <xs:attribute name="version" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="2.0"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="java-config">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="jvm-options"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="jvm-options">
    <xs:simpleType>
      <xs:annotation>
        <xs:documentation>255-chars string only</xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
        <xs:minLength value="2" />
        <xs:maxLength value="255"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="tux-config">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="server-clopt"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="server-clopt">
    <xs:simpleType>
      <xs:annotation>
        <xs:documentation>255-chars string only</xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
        <xs:minLength value="2" />
        <xs:maxLength value="255"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="classpath-config">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="classpath"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="classpath">
    <xs:simpleType>
      <xs:annotation>
        <xs:documentation>511-chars string only</xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
        <xs:minLength value="0" />
        <xs:maxLength value="511"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="tux-resources">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="classpath"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="fld-tbl16-class"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="fld-tbl32-class"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="view16-class"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="view32-class"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="view32-class">
    <xs:simpleType>
      <xs:annotation>
        <xs:documentation>127-chars string only</xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
        <xs:minLength value="1" />
        <xs:maxLength value="127"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="view16-class">
    <xs:simpleType>
      <xs:annotation>
        <xs:documentation>127-chars string only</xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
        <xs:minLength value="1" />
        <xs:maxLength value="127"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="fld-tbl32-class">
    <xs:simpleType>
      <xs:annotation>
        <xs:documentation>127-chars string only</xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
        <xs:minLength value="1" />
        <xs:maxLength value="127"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="fld-tbl16-class">
    <xs:simpleType>
      <xs:annotation>
        <xs:documentation>127-chars string only</xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
        <xs:minLength value="1" />
        <xs:maxLength value="127"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="jdbc-resources">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="1" ref="data-source"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="data-source">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="classpath"/>
        <xs:element minOccurs="1" maxOccurs="1" ref="datasource-classname"/>
        <xs:element minOccurs="1" maxOccurs="1" ref="res-type"/>
        <xs:element minOccurs="1" maxOccurs="1" ref="driver-params"/>
      </xs:sequence>
      <xs:attribute name="vendor" use="required">
        <xs:simpleType>
          <xs:annotation>
            <xs:documentation>31-chars string only</xs:documentation>
          </xs:annotation>
          <xs:restriction base="xs:string">
            <xs:minLength value="1" />
            <xs:maxLength value="31"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="pool-name" use="optional">
        <xs:simpleType>
          <xs:annotation>
            <xs:documentation>63-chars string only</xs:documentation>
          </xs:annotation>
          <xs:restriction base="xs:string">
            <xs:minLength value="1" />
            <xs:maxLength value="63"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="object-type" use="optional">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="usr"/>
            <xs:enumeration value="sys"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="jndi-name" use="optional">
        <xs:simpleType>
          <xs:annotation>
            <xs:documentation>63-chars string only</xs:documentation>
          </xs:annotation>
          <xs:restriction base="xs:string">
            <xs:minLength value="1" />
            <xs:maxLength value="63"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="enabled" use="optional" type="xs:boolean" default="true"/>
      <xs:attribute name="driver-type" use="required">
        <xs:simpleType>
          <xs:annotation>
            <xs:documentation>31-chars string only</xs:documentation>
          </xs:annotation>
          <xs:restriction base="xs:string">
            <xs:minLength value="1" />
            <xs:maxLength value="31"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="datasource-classname">
    <xs:simpleType>
      <xs:annotation>
        <xs:documentation>255-chars string only</xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
        <xs:minLength value="1" />
        <xs:maxLength value="255"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="res-type">
    <xs:simpleType>
      <xs:annotation>
        <xs:documentation>255-chars string only</xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
        <xs:minLength value="1" />
        <xs:maxLength value="255"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="driver-params">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="1" maxOccurs="1" ref="connection-url"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="property"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="connection-url">
    <xs:simpleType>
      <xs:annotation>
        <xs:documentation>511-chars string only</xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
        <xs:minLength value="1" />
        <xs:maxLength value="511"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="property">
    <xs:complexType>
      <xs:attribute name="name" use="optional">
        <xs:simpleType>
          <xs:annotation>
            <xs:documentation>63-chars string only</xs:documentation>
          </xs:annotation>
          <xs:restriction base="xs:string">
            <xs:minLength value="1" />
            <xs:maxLength value="31"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="value" use="optional">
        <xs:simpleType>
          <xs:annotation>
            <xs:documentation>127-chars string only</xs:documentation>
          </xs:annotation>
          <xs:restriction base="xs:string">
            <xs:minLength value="1" />
            <xs:maxLength value="127"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="jdbc-connection-pool" type="xs:string"/>
  <xs:element name="tux-server-config">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="classpath"/>
        <xs:element minOccurs="1" maxOccurs="unbounded" ref="server-class"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="server-class">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="services"/>
      </xs:sequence>
      <xs:attribute name="name" use="required">
        <xs:simpleType>
          <xs:annotation>
            <xs:documentation>255-chars string only</xs:documentation>
          </xs:annotation>
          <xs:restriction base="xs:string">
            <xs:minLength value="1" />
            <xs:maxLength value="255"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="services">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="service"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="service">
    <xs:complexType>
      <xs:attribute name="name" use="required">
        <xs:simpleType>
          <xs:annotation>
            <xs:documentation>127-chars string only</xs:documentation>
          </xs:annotation>
          <xs:restriction base="xs:string">
            <xs:minLength value="1" />
            <xs:maxLength value="127"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="target" use="required">
        <xs:simpleType>
          <xs:annotation>
            <xs:documentation>255-chars string only</xs:documentation>
          </xs:annotation>
          <xs:restriction base="xs:string">
            <xs:minLength value="1" />
            <xs:maxLength value="255"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
</xs:schema>

バージョン1.0用のJavaサーバー構成スキーマ・ファイル

リスト18-10に、バージョン1.0用のJavaサーバー構成ファイルのXMLスキーマを示します。

リスト18-10 バージョン1.0用のJavaサーバー構成スキーマ・ファイル
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="TJSconfig">
    <xs:complexType>
      <xs:all>
        <xs:element minOccurs="0" maxOccurs="1" ref="ClassPaths"/>
        <xs:element minOccurs="0" maxOccurs="1" ref="DataSources"/>
        <xs:element minOccurs="0" maxOccurs="1" ref="Resources"/>
        <xs:element minOccurs="1" maxOccurs="1" ref="TuxedoServerClasses"/>
      </xs:all>
    </xs:complexType>
  </xs:element>
  <xs:element name="ClassPaths">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="ClassPath"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ClassPath" type="xs:string"/>
  <xs:element name="DataSources">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="1" ref="DataSource"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DataSource">
    <xs:complexType>
      <xs:all>
        <xs:element minOccurs="1" maxOccurs="1" ref="DriverClass"/>
        <xs:element minOccurs="1" maxOccurs="1" ref="JdbcDriverParams"/>
      </xs:all>
      <xs:attribute name="name" use="required" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="DriverClass" type="xs:string"/>
  <xs:element name="JdbcDriverParams">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="1" maxOccurs="1" ref="ConnectionUrl"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ConnectionUrl" type="xs:string"/>
  <xs:element name="Resources">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="FieldTable16Classes"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="FieldTable32Classes"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="ViewFile16Classes"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="ViewFile32Classes"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="FieldTable16Classes" type="xs:string"/>
  <xs:element name="FieldTable32Classes" type="xs:string"/>
  <xs:element name="ViewFile16Classes" type="xs:string"/>
  <xs:element name="ViewFile32Classes" type="xs:string"/>
  <xs:element name="TuxedoServerClasses">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="1" maxOccurs="unbounded" ref="TuxedoServerClass"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="TuxedoServerClass">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Services"/>
      </xs:sequence>
      <xs:attribute name="name" use="required" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Services">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Service"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Service">
    <xs:complexType mixed="true">
      <xs:attribute name="name" use="required" type="xs:string"/>
      <xs:attribute name="target" use="required" type="xs:string"/>
    </xs:complexType>
  </xs:element>
</xs:schema>

  先頭に戻る       前  次