|
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>
|