ATMI JavaサーバーのTMJAVASVR
は、TuxedoシステムとJava実装サービス間のブリッジとして機能する新しいOracle Tuxedoシステム・サーバーです。Tuxedo Javaサーバーは主に次のタスクを実行します。
TMJAVASVR
のCLOPT
のJava実装サービスの構成ファイルを探すパスを構成します。 MINDISPATCHTHREADS
およびMAXDISPATCHTHREADS
を指定して、その実行モード(マルチスレッド・モードまたはシングルスレッド・モード)を決定します。具体的には、MINDISPATCHTHREADS
もMAXDISPATCHTHREADS
も指定しない場合、またはMAXDISPATCHTHREADS
を1に指定した場合、Javaサーバーはシングルスレッド・モードで実行され、それ以外の場合、Javaサーバーはマルチスレッド・モードで実行されます。リスト18-1に、例を示します。
*SERVERS
TMJAVASVR SRVGRP=TJSVRGRP SRVID=3
CLOPT="-- -c /home/oracle/app/javaserver/TJSconfig.xml"
MINDISPATCHTHREADS=2 MAXDISPATCHTHREADS=3
Tuxedo Javaサーバー構成ファイルは、JVMでJava実装サービスの実行に必要なパラメータを定義するXMLファイルです。
Oracle Tuxedo Javaサーバー構成ファイルには、バージョン1.0および2.0の2種類のバージョンがあります。対応するスキーマ・ファイルはTJSconfig_1.0.xsd
およびTJSconfig_2.0.xsd
で、両方とも$TUXDIR/udataobj/tuxj
ディレクトリにインストールされます。
両方のバージョンがサポートされていますが、TJSconfig
のversion
属性を2.0
に指定することにより、バージョン2.0を使用することを強くお薦めします。version
が設定されない場合、Javaサーバーは構成ファイルをバージョン1.0ファイルとして処理します。
Tuxedo Javaサーバー構成ファイルには、次の要素があります。
Tuxedo Javaサーバー構成ファイルのルート要素です。Javaサーバーは最初にプリフェッチ処理を実行して、TJSconfig
が現在の構成ファイルに存在するかどうかを確認します。TJSconfig
が見つからない場合、Javaサーバーはログにエラーを記録して終了します。次の表は、TJSconfig
のすべての属性を示しています。
java-config
は、JavaサーバーがJVMを作成するときに、Javaサーバーによって読み取られ、JVMに渡されるJVMオプションを指定します。これらのオプションは、JVMを調整したり、追加のプロパティをJVMに渡すために使用されます。この要素を使用すると、ユーザーはGCポリシー、スタック・サイズ、ヒープ・サイズなどの観点からJVMの動作を制御できます。次の表は、java-config
のすべてのネスト要素を示しています。
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アプリケーションに関連する属性を指定します。次の表は、tux-config
のすべてのネスト要素を示しています。
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つのモードをサポートしています。 |
次の表は、classpath-config
のすべてのネスト要素を示しています。
1つのclasspath
では、複数のクラス・パスを指定できます。各クラス・パスはシステムのパス・セパレータ(Windowsプラットフォームの場合は「;」、Unix系プラットフォームの場合は「:」)で区切る必要があります。
また、Javaサーバーのワイルドカード・モードが強化されて、すべてのサブディレクトリを再帰的に検索して一致する結果を見つけることができるようになりました。
tux-resourcesは、view/view32
およびfml/fml32
型付きバッファ・クラスを指定して、バッファ・リソース・オブジェクトをインスタンス化します。次の表は、tux-resourcesのすべてのネスト要素を示しています。
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互換データ・ソース・パラメータを指定します。次の表は、jdbc-resources
のすべてのネスト要素を示しています。
表18-7および表18-8は、data-source
のすべての属性およびネスト要素を示しています。
次の表は、driver-params
のすべてのネスト要素を示しています。
tux-server-config
は、Javaサーバー・クラス・パラメータを指定します。次の表は、tux-server-config
のすべてのネスト要素を示しています。
リスト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サーバーは、アプリケーション・サーバー・クラスに実装されているすべてのサービス・メソッドを取得し、次の規則でサービスを通知します。
サーバー・クラス内でpublicと宣言されたメソッドのみがJavaサーバーによって取得されて、通知アクションに関与します。
表18-13は、Javaサーバー構成ファイルで使用可能なプロパティを示しています。対応する「Javaサーバー構成スキーマ・ファイル」を参照してください。このファイルでは、より詳細な情報に基づいて構成XMLファイルの検証チェックが行われます。
次の<ClassPath>
要素設定は、Tuxedo Java構成ファイルでサポートされています。
<ClassPath>customer_lib_path/*.jar</ClassPath>
または<ClassPath>customer_lib_path/*.zip</ClassPath>
<ClassPath>customer_lib_path</ClassPath>
<ClassPath>customer_lib_path/*</ClassPath>
<ClassPath>customer_lib_path/lib1.jar</ClassPath>
または<ClassPath>customer_lib_path/lib2.zip</ClassPath>
注: |
View/View32
を使用するには、<Resources></Resources>
要素でView
クラスを指定する必要があります。Fldid()/Fname()
を適切に使用するには、<Resources></Resources>
要素でFML/FML32 field table
クラスを指定する必要があります。
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サーバーは名前プロパティの値をサービス名として使用します。それ以外の場合は、メソッド名がサービス名として使用されます。
リスト18-3に、Tuxedo Javaサーバー構成ファイルの例を示します。
MyTuxedoServerClass1
JavaクラスがJAVASTRINGSVC
、JAVAFML32SVC
、svc3
の各メソッドを定義し、MyTuxedoServerClass2
Javaクラスがsvc4
メソッドを定義すると仮定すると、この例ではJDBC接続によりOracleデータベースへの接続が開始され、svc1
、svc2
、svc3
およびsvc4
の各サービスがエクスポートされます。
構成ファイルでメソッド名svc3
およびsvc4
に<Service>
プロパティが指定されていないため、これらのメソッド名はサービス名としてエクスポートされます。
<?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>
注: |
Javaサーバーには、JTA準拠のトランザクション・マネージャを新規作成したり、既存のものを取得するためのgetterメソッドがあります。リスト18-4に、Springアプリケーション・コンテキストの構成ファイルでTuxedoトランザクション・マネージャを構成する方法を示します。
Springアプリケーション・コンテキストの構成ファイルの詳細は、「Springアプリケーション・コンテキストの作成」を参照してください。
<?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アプリケーション・コンテキストを作成、破棄、管理するのはJavaサーバーではなく、Springアプリケーションです。
Spring Frameworkライブラリおよびすべての依存ライブラリは、Javaサーバー構成ファイルで構成する必要があります。リスト18-5に、Javaサーバー構成ファイルでSpring Frameworkライブラリを指定する方法を示します。
Javaサーバー構成ファイルの詳細は、「Tuxedo Javaサーバー構成ファイル」を参照してください。
<?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
)はこのグループに属する必要があります。
*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
形式も異なります。
jdbc:oracle:thin:@//hostname:portnumber/servicename
jdbc:db2://hostname:portnumber/DatabaseName
リスト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
も、Tuxedo Javaサーバーが通知するサービスで構成できます。Tuxedo Javaサーバーが*SERVICES
セクションで構成されており、かつそのAUTOTRAN
属性がY
に指定されている場合、サービスによってトランザクションが自動的に開始されます。
Spring Frameworkは、2つのトランザクション管理モードをサポートしています。
宣言的トランザクションでは、EJBの対応するコンテナ管理トランザクション・モードにマップできる、次のような7つのトランザクション伝播モードをサポートできます。
注意: | *宣言的トランザクション管理モードでは、PROPAGATION_NESTED 伝播動作がJavaサーバー・トランザクション・マネージャでサポートされていません。 |
Javaサーバーは、2つの開始トランザクションをサポートしています。
トランザクション属性のtimeout、rollback-forおよびno-rollback-forがサポートされています。
注意: | Tuxedo JavaサーバーのSpringトランザクション・マネージャを使用して、Oracle Databaseの各操作を非トランザクション型モデルで処理するには、使用するシナリオにトランザクションの開始文/終了文を明示的に追加する必要があります。 |
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>
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/lib/amd64/server
が$LD_LIBRARY_PATH
に含まれていることを確認します。$JRE_HOME/lib/amd64/jrockit
および$JRE_HOME/lib/amd64
が$LD_LIBRARY_PATH
に含まれていることを確認します。$JRE_HOME/lib/ppc64/classic
および$JRE_HOME/lib/ppc64
の両方を$LIBPATH
に含めることをお薦めします。$JRE_HOME/lib/sparcv9/server
が$LD_LIBRARY_PATH
に含まれていることを確認します。$JRE_HOME/lib/amd64/server
が$LD_LIBRARY_PATH
に含まれていることを確認します。%JRE_HOME%\bin\server
がPATH
環境変数に含まれていることを確認します。注意: | $JRE_HOME はJREホーム・ディレクトリを指定します。設定については、$TUXDIR/tux.env も参照できます。 |
リスト18-9に、バージョン2.0用のJavaサーバー構成ファイルのXMLスキーマを示します。
<?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>
リスト18-10に、バージョン1.0用のJavaサーバー構成ファイルのXMLスキーマを示します。
<?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>