Oracle® Fusion Middleware Programming JTA for Oracle WebLogic Server 11g Release 1 (10.3.5) Part Number E13731-04 |
|
|
View PDF |
This section discusses the following topics:
This section provides an overview of XA JDBC drivers with WebLogic Server in distributed transactions. These drivers provide connectivity between WebLogic Server connection pools and the DBMS. Drivers used in distributed transactions are designated by the driver name followed by /XA; for example, Oracle Thin/XA Driver.
WebLogic Server ships with the Oracle Thin Driver version 10g preconfigured and ready to use. If you want to update the driver or use a different version, see "Using Oracle Extensions with the Oracle Thin Driver" in Programming JDBC for Oracle WebLogic Server.
The following sections provide information for using the Oracle Thin/XA Driver with WebLogic Server.
The Oracle Thin/XA Driver requires the following:
Java 2 SDK 1.4.x or later.
Note:
The Oracle 10g and 9.2 Thin driver (ojdbc14.jar
) are the only versions of the driver supported for use with a Java 2 SDK 1.4.X.Oracle server configured for XA transaction support.
The following sections explain how to set the environment for the Oracle Thin/XA Driver.
See "Using Oracle Extensions with the Oracle Thin Driver" in Programming JDBC for Oracle WebLogic Server.
To prepare the database for XA, perform these steps:
Log on to sqlplus as system user, for example, sqlplus sys/CHANGE_ON_INSTALL@<DATABASE ALIAS NAME>
Execute the following command: @xaview.sql
The xaview.sql
script resides in the $ORACLE_HOME/rdbms/admin
directory
Grant the following permissions:
grant select on v$xatrans$ to public (or <user>);
grant select on pending_trans$ to public;
grant select on dba_2pc_pending to public;
grant select on dba_pending_transactions to public;
when using the Oracle Thin driver 10.1.0.3 or later:
grant execute on dbms_system to <user>;
If the above steps are not performed on the database server, normal XA database queries and updates may work fine. However, when the Weblogic Server Transaction Manager performs recovery on a re-boot after a crash, recover for the Oracle resource faisl with XAER_RMERR
. Crash recovery is a standard operation for an XA resource.
The following table contains sample code for configuring a JDBC data source:
Table 10-2 Oracle Thin/XA Driver: Connection Pool Configuration
Property Name | Property Value |
---|---|
Name |
oracleXAPool |
URL |
jdbc:oracle:thin:@serverName:port(typically 1521 on Windows):sid
|
DriverClassname |
oracle.jdbc.xa.client.OracleXADataSource |
Database Username |
Scott |
Properties |
user=scott |
Test Table Name |
DUAL |
The following sections provide important configuration information and performance issues when using the Sybase jConnect Driver 5.5 and 6.0/XA Drivers:
Follow these instructions to set up the environment on your database server:
Run sp_configure "enable DTM",1
to enable transactions.
Run sp_configure "enable xact coordination",1.
Run grant role dtm_tm_role to <USER_NAME>
.
Copy the sample xa_config
file from the SYBASE_INSTALL
\OCS-12_0\sample\xa-dtm
subdirectory up three levels to SYBASE_INSTALL
,where SYBASE_INSTALL
is the directory of your Sybase server installation. For example:
$ SYBASE_INSTALL\xa_config
Edit the xa_config file
. In the first [xa
] section, modify the sample server name to reflect the correct server name.
To prevent deadlocks when running transactions, enable row level lock by default:
Run sp_configure "lock scheme",0,datarows
Note:
ThejConnect.jar
, jconn2
, and jconn3.jar
files are no longer included with WebLogic Server. You can, however, download the Sybase drivers directly from Sybase.Correct support for XA connections is available in the Sybase Adaptive Server Enterprise 12.0 and later versions only. XA connections with WebLogic Server are not supported on Sybase Adaptive Server 11.5 and 11.9.
Prior to Adaptive Server version 12.0, all resources of a transaction were privately owned by a single task on the server. The server could not share a transaction with any task other than the one that initiated the transaction. Adaptive Server version 12.x includes support for the suspend and join semantics used by XA-compliant transaction managers (such as WebLogic Server). Transactions can be shared among different execution threads, or may not be associated with an execution thread (detached).
On the Sybase server, you can set the dtm detach timeout period
, which sets the amount of time (in minutes) that a distributed transaction branch can remain in the detached state (without an associated execution thread). After this period, the DBMS automatically rolls back the transaction. The dtm detach timeout period
applies to all transactions on the database server. It cannot be set for each transaction.
For example, to automatically rollback transactions after being detached for 10 minutes, use the following command:
sp_configure 'dtm detach timeout period', 10
You should set the dtm detach timeout period
higher than the transaction timeout to prevent the database server from rolling back the transaction before the transaction times out in WebLogic Server.
For more information about the dtm detach timeout period
, see the Sybase documentation.
If a global transaction is started on the Sybase server, but is not completed, the outcome of the transaction varies depending on the transaction state before the transaction is abandoned:
If the client is terminated before the xa.end
call, the transaction is rolled back.
If the client is terminated after the xa.end
call, the transaction remains on the database server (and holds all relevant locks).
If an application calls xa.start
but has not called xa.end
and the application terminates unexpectedly, the database server immediately rolls back the transaction and frees locks held by the transaction.
If an application calls xa.start
and xa.end
and the application terminates unexpectedly, the database server rolls back the transaction and frees locks held by the transaction after the dtm detach timeout period
has elapsed. See Setting the Timeout for Detached Transactions.
If an application calls xa.start
and xa.end
, and then the transaction is prepared, if the application terminates unexpectedly, the transaction persists so that it can be properly recovered. The Transaction Manager must call rollback or commit to complete the transaction.
Set the following configuration properties when running a Java client.
Table 10-3 Sybase jConnect 5.5/XA Driver: Java Client Connection Properties
Property Name | Property Value |
---|---|
ds.setPassword |
<password>
|
ds.setUser |
<username>
|
ds.setNetworkProtocol |
Tds |
ds.setDatabaseName |
<database-name>
|
ds.setResourceManagerName |
<Lrm name in xa_config file>
|
ds.setResourceManagerType |
2 |
ds.setServerName |
<machine host name>
|
ds.setPortNumber |
|
These are the known issues and Oracle workarounds:
Table 10-4 Sybase jConnect 5.5 and 6.0 Known Issues and Workarounds
Description | Sybase Bug | Comments/Workarounds for WebLogic Server |
---|---|---|
When calling java.sql.SQLException: JZ0S3: The inherited method setAutoCommit(true) cannot be used in this subclass. |
10726192 |
No workaround. Vendor fixed in jConnect 6.0. |
When driver used in distributed transactions, calling |
10727617 |
WebLogic Server has provided an internal workaround for this bug: Set the data source connection pool property Vendor fix has been requested. |
To use other XA-compliant JDBC drivers, you must include the path to the driver class libraries in your CLASSPATH and follow the configuration instructions provided by the vendor.