The ATMI Java server TMJAVASVR, is a new Oracle Tuxedo system server acting as a bridge between the Tuxedo system and Java-implemented services. Tuxedo Java server mainly performs the following tasks:
The TMJAVASVR server depends on the
libjvm.so (Unix)/
jvm.dll (Windows) which is in the JRE package.
Before running TMJAVASVR, you must make sure the
libjvm.so (Unix) or
jvm.dll (Windows) is located in the library loading path of your platform.
On Unix, set LD_LIBRARY_PATH or
SHLIB_PATH (HP-UX only) or
LIBPATH (AIX only) accordingly.
|
Note:
|
The $JRE_HOME points to the JRE home directory. You can also refer to $TUXDIR/tux.env for the setting.
|
|
•
|
Specify MINDISPATCHTHREADS and MAXDISPATCHTHREADS for Java server to decide its running mode: the multi-thread mode or the single-thread mode.
|
If neither MINDISPATCHTHREADS nor
MAXDISPATCHTHREADS is specified or if
MAXDISPATCHTHREADS is specified to 1, Java server runs in the single-thread mode; other than that, Java server runs in multi-thread mode.
Version 2.1 introduces an element with the tag identifier "server-module" (similar to the previous
tux-server-config element). A
server-module element can own multiple
classpaths and
server-class child elements.These child elements are bundled in a separate server module that is easier to manage. Also, some new attributes are added in version 2.1 configuration file.
If the version attribute is specified, Java server searches the current built-in version table to validate if the
version value is supported by Java server or not. If validation fails, Java server stops initializing, and exits. If the version is valid , then Java server loads the corresponding schema file for further configuration file validation.
java-config specifies JVM options that are read by Java server and passed to JVM when Java server creates JVM. These options are used to tune JVM or pass extra properties to JVM. With this element, users can control JVM behaviors in terms of GC policy, stack size, heap size, and so on.
Table 1‑2lists the complete set of
java-config nested elements.
tux-config specifies attributes related to Tuxedo applications.
Table 1‑3 lists the complete set of
tux-config nested elements.
|
|
|
|
|
|
|
|
|
Specifies some startup options for the implemented methods, tpsvrinit(String []) and tpsvrthrinit(String[]), in Java server classes. More specifically, if users' Java server classes implement at least one of these two methods, Java server reads these options, constructs a string array, and passes the string array to the implemented method(s).
|
|
|
|
|
|
classpath-config specifies the packages used to look for user-defined classes. Differed from
ClassPaths in version 1.0,
classpath string in version 2.0 can be specified with a variable externally defined by an environment variable or a JVM option string specified in
jvm-options with "
-D" option. For example,
When adding this class path, Java server firstly searches jvm-options list to find whether
-DUSER_JAVA_LIB=… is already specified. If it is found, Java server replaces the
USER_JAVA_LIB with the value specified in
-DUSER_JAVA_LIB= and passes the result to the class path searching list; otherwise, Java server finds whether the environment variable
USER_JAVA_LIB is specified and passes the result to the class path searching list. If neither
-DUSER_JAVA_LIB=… nor the environment variable
USER_JAVA_LIB is found, Java server skips the unspecified class paths and logs an error in
ULOG.
Table 1‑4 lists the complete set of
classpath-config nested elements.
tux-resources specifies view/view32 and
fml/fml32 typed buffer classes to instantiate buffer resource objects.
Table 1‑5 lists the complete set of tux-resources nested elements.
Users can directly use viewj/viewj32 compilers and
mkfldclass/mkfldclass32 utilities to generate corresponding
VIEW/VIEW32 classes and
FML/FML32 classes. Before running these compilers or utilities, specify the class path, where
$TUXDIR/udataobj/tuxj/com.bea.core.jatmi_12.2.2.0.jar is included.
jdbc-resources specifies the JDBC compatible data source parameters.
Table 1‑6 lists the complete set of
jdbc-resources nested elements.
Table 1‑7 and
Table 1‑8 list the complete set of
data-source attributes and nested elements.
Table 1‑9 lists the complete set of
driver-params nested elements.
Table 1‑10tux-server-config specifies Java server class attributes.
Table 1‑11 list the complete set of
tux-server-config/server-module attributes.
Table 1‑12 list the complete set of
tux-server-config/server-module nested elements.
server-class also has a nested element called
services.
services has a nested element called
service.
Table 1‑14 list the complete set of
tux-server-config/server-module/server-class/services/service attributes.
In this sample, the Java method1 implemented in Java class
MyTuxedoServerClass is associated with the Tuxedo service
svc1. The exact service handling logic is implemented in
MyTuxedoServerClass.method1 writen in Java language.
|
3.
|
Invoking TuxAppContext.tpadvertise() to advertise a Tuxedo service. Using this method, the Java server application does not need to explicitly specify the Java server class in the configuration file, and the server class does not inherit from the abstract class com.oracle.tuxedo.tjatmi.TuxedoJavaServer.
|
java-config specifies JVM options that are read by Java server and passed to JVM when Java server creates JVM. These options are used to tune JVM or pass extra properties to JVM. With this element, users can control JVM behaviors in terms of GC policy, stack size, heap size, and so on.
Table 1‑16 lists the complete set of
java-config nested elements.
tux-config specifies attributes related to Tuxedo applications.
Table 1‑17 lists the complete set of
tux-config nested elements.
|
|
|
|
|
|
|
|
|
It specifies some startup options for the implemented methods, tpsvrinit(String []) and tpsvrthrinit(String[]), in Java server classes. More specifically, if users' Java server classes implement at least one of these two methods, Java server reads these options, constructs a string array, and passes the string array to the implemented method(s).
|
classpath-config specifies the packages used to look for user-defined classes. Differed from
ClassPaths in version 1.0,
classpath string in version 2.0 can be specified with a variable externally defined by an environment variable or a JVM option string specified in
jvm-options with "
-D" option. For example,
When adding this class path, Java server firstly searches jvm-options list to find whether
-DUSER_JAVA_LIB=… is already specified. If it is found, Java server replaces the
USER_JAVA_LIB with the value specified in
-DUSER_JAVA_LIB= and passes the result to the class path searching list; otherwise, Java server finds whether the environment variable
USER_JAVA_LIB is specified and passes the result to the class path searching list. If neither
-DUSER_JAVA_LIB=… nor the environment variable
USER_JAVA_LIB is found, Java server skips the unspecified class paths and logs an error in
ULOG.
Table 1‑18 lists the complete set of
classpath-config nested elements.
tux-resources specifies view/view32 and
fml/fml32 typed buffer classes to instantiate buffer resource objects.
Table 1‑19 lists the complete set of tux-resources nested elements.
Users can directly use viewj/viewj32 compilers and
mkfldclass/mkfldclass32 utilities to generate corresponding
VIEW/VIEW32 classes and
FML/FML32 classes. Before running these compilers or utilities, please specify the class path, where
$TUXDIR/udataobj/tuxj/com.bea.core.jatmi_2.0.0.0.jar is included.
jdbc-resources specifies the JDBC compatible data source parameters.
Table 1‑20 lists the complete set of
jdbc-resources nested elements.
Table 1‑23The following table lists the complete set of
driver-params nested elements.
Table 1‑25he following table lists the complete set of se
rver-class attributes.
server-class also has a nested element called services.
services has a nested element called
service.
Table 1‑26 list the complete set of
service attributes.
Listing 1‑4 lists an example to create Tuxedo Java server configuration file.
<data-source vendor="Oracle" driver-type="thin" enabled="true">
<datasource-classname>oracle.jdbc.xa.client.OracleXADataSource</datasource-classname>
Table 1‑27 lists available properties in a Java server configuration file. Please see the corresponding
Java Server Configuration File Schema, which checks the validation of the configuration XML file for more precise information.
Following <ClassPath> element settings are supported in Tuxedo Java configuration file:
|
•
|
The customer_lib_path to $APPDIR can be either absolute path or relative path.
|
|
•
|
The $APPDIR is added into classpath by default.
|
To use the View/View32, you need to specify the
View class in
<Resources></Resources> element. To use the
Fldid()/Fname() properly, you need to specify the
FML/FML32 field table class in
<Resources></Resources> element.
|
•
|
Only <TuxedoServerClasses> is mandatory in Java server configuration file, and at least one TuxedoServerClass should be configured.
|
|
•
|
Currently, only one <DataSource> element is allowed to be configured in <DataSources> in configuration file. The name property for <DataSource> does not take effect for the present.
|
|
•
|
Only <ClassPath>, <fieldTable16Class>, <fieldTable32class>, <viewFile16Class>, <viewFile32Class>, and <Service> element can have multiple entities.
|
|
•
|
In <Resources> section, you should configure <fieldTable16Class> first and then <fieldTable32class>, <viewFile16Class>, and <viewFile32Class> in sequence.
|
|
Note:
|
The configuration file (e.g. TJSconfig.xml) will be checked against the Schema file TJSconfig.xsd which is located in $TUXDIR/udataobj/tuxj/TJSconfig.xsd (Unix) or $TUXDIR\udataobj\tuxj/TJSconfig.xsd (Windows). Oracle recommends you refer to TJSconfig.xsd for more information about configuration rules.
|
Listing 1‑5 shows a Tuxedo Java server configuration file example.
Suppose the MyTuxedoServerClass1 Java class defines
JAVASTRINGSVC,
JAVAFML32SVC, and
svc3 methods, and the
MyTuxedoServerClass2 Java class defines
svc4 method, this example initiates the connection to Oracle database with JDBC connection and exports the services:
svc1,
svc2,
svc3, and
svc4.
Note that the method name svc3 and
svc4 are exported as the service name because there is no
<Service> property specified for them in the configuration file.
Different DataSource have different
ConnectionURL format.
Listing 1‑9 is a configuration example of Oracle database.
The AUTOTRAN can also be configured on the services advertised by Tuxedo Java server. When the Tuxedo Java server service is configured in
*SERVICES section and its
AUTOTRAN attribute is specified as
Y, the service starts a transaction automatically.
|
Note:
|
*In declarative transaction management mode, the PROPAGATION_NESTED propagation behavior is not support by Java server transaction manager.
|
|
•
|
All Oracle Tuxedo resources specified in <TJSconifg>/<tux-resources> are managed and maintained by Java server itself; they should be accessible and visible to all server modules deployed in Java server. These of resource classes must be deployed as public.
|