TOMAT事務, JOTM, XAPOOL

使用JOTM2.1.9
如果只是为了在tomcat6中使用UserTransaction,仅需如下设置
tomcat_home/conf中设置context.xml:
<Resource name="jdbc/TEST_DS"
auth="Container"
type="javax.sql.DataSource"
factory="org.objectweb.jotm.datasource.DataSourceFactory"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@XXX:1521:xxx"
username="xxx" password="xxx" maxActive="20" maxIdle="10"
maxWait="-1" />

<Resource name="UserTransaction"
auth="Container"
type="javax.transaction.UserTransaction" />

<Transaction factory="org.objectweb.jotm.UserTransactionFactory"
jotm.timeout="60" />

在tomcat_home/conf中加入carol.properties
carol.protocols=jrmp
carol.jvm.rmi.local.call=true
carol.start.jndi=false
carol.start.ns=false
carol.jndi.java.naming.factory.url.pkgs=org.apache.naming

在tomcat_home/lib中加入
carol.jar
carol-interceptors.jar
howl.jar
jotm-core.jar
jotm-datasource.jar
ow2-connector-1.5-spec.jar
ow2-jta-1.1-spec.jar
xapool.jar
commons-logging.jar

调用程式为
Context ctx = new InitialContext();
DataSource ds = (DataSource)
ctx.lookup("java:comp/env/jdbc/TEST_DS");
UserTransaction ut = (UserTransaction)
ctx.lookup("java:comp/UserTransaction");
java.sql.Connection conn = ds.getConnection();
ut.begin();
ut.commit(); or ut.rollback();
程式最小依赖包为
jotm-core.jar
jotm-client.jar
jotm-datasource.jar
ow2-jta-1.1-spec.jar
xapool.jar

另 xapool最新為2005年的xapool-1.5.0.jar, 需使用jdk1.4進行編譯
若出現 getConnection no connection available 或游標爆掉
修改
org.enhydra.jdbc.pool.GenericPool
在 life = (Long) unlocked.get(o); 下修改為
if (life != null) {
  unlocked.remove(o);
  realObject = o.getObj();
}
修改
org.enhydra.jdbc.standard.StandardConnectionPoolDataSource
public static final int DEFAULT_PREPAREDSTMTCACHESIZE = 0;



你可能感兴趣的:(xapool,tomat,jotm)