![]() ![]() ![]() ![]() ![]() ![]() ![]() |
ATMI JavaサーバーのTMJAVASVR
は、TuxedoシステムとJava実装サービス間のブリッジとして機能する新しいOracle Tuxedoシステム・サーバーです。マルチスレッド・サーバーとして、Tuxedo Javaサーバーは主に次のタスクを実行します。
Tuxedo Javaサーバー構成ファイルは、JVMでJava実装サービスの実行に必要なパラメータを定義するXMLファイルです。
表18-1は、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フィールド・テーブル
・クラスを指定する必要があります。
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-1は、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>
注意: |
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-3は、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
に指定されている場合、サービスによってトランザクションが自動的に開始されます。
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
に含まれていることを確認します。PATH
環境変数に%JRE_HOM
E%\bin\server
が含まれていることを確認します。注意: | $JRE_HOME はJREホーム・ディレクトリを指定します。設定については、$TUXDIR/tux.env も参照できます。 |
リスト18-4に、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>
![]() ![]() ![]() |