1. XADataSource中autocommit是处于false状态的,所以其只能够采用jta中事务处理方式
进行begin(),commit(),rollback()操作。
如果不采用jta中事务处理方式
如:UserTransactionut = (UserTransaction)initCtx.lookup("java:comp/UserTransaction");
ut.begin();
/*
操作
*/
ut.commit();
则增加,删除,更改 操作不能够进行
2. jta对普通的DataSource都是将其AutoCommit 设置为false
进行操作的
如果 在 ut.begin();后,所调用到的connection都设置为false,不管之前的
3 以下是一些实践: 使用的glassfish服务器
jta获得:UserTransactionut = (UserTransaction)initCtx.lookup("java:comp/UserTransaction");
非 XA DataSource jndi测试 connection.jsp
在jndi中配置的 XADataSource DataSource ds = (DataSource)initCtx.lookup("jdbc/webgoods");
在jndi中配置的 DataSource = com.sun.gjc.spi.jdbc40.DataSource40@1f71790
在调用 UserTransaction.begin()方法前 获得的connection AutoCommit是打开的
conn.getAutoCommit() = true
在glassfish jndi中默认配置的(JTA) UserTransaction = com.sun.enterprise.transaction.UserTransactionImpl@12bf720
1 2 3 4 6 7 8 9 10 11
在调用 UserTransaction.commit()方法前 获得的connection AutoCommit是关闭的
说明:在UserTransaction.begin()方法后,connection的AutoCommit设置为false
conn.getAutoCommit() = false
XA DataSource jndi测试 xaconnection.jsp
在jndi中配置的 XADataSource DataSource ds = (DataSource)initCtx.lookup("jdbc/xawebgoods");
在jndi中配置的 DataSource = com.sun.gjc.spi.jdbc40.DataSource40@ac7172
XADataSource中的 connection AutoCommit总是false,所以感觉没有必要测试
在调用 UserTransaction.begin()方法前 获得的connection AutoCommit是打开的
conn.getAutoCommit() = false
在glassfish jndi中默认配置的(JTA) UserTransaction = com.sun.enterprise.transaction.UserTransactionImpl@14c0f68
1 2 3 4 6 7 8 9 10 11
在调用 UserTransaction.commit()方法前 获得的connection AutoCommit是关闭的
说明:在UserTransaction.begin()方法后,connection的AutoCommit设置为false
conn.getAutoCommit() = false
在jndi中配置的 DataSource = com.sun.gjc.spi.jdbc40.DataSource40@ac7172
XADataSource中的 connection AutoCommit总是false,所以感觉没有必要测试
在调用 UserTransaction.begin()方法前 获得的connection AutoCommit是打开的
conn.getAutoCommit() = false
在glassfish jndi中默认配置的(JTA) UserTransaction = com.sun.enterprise.transaction.UserTransactionImpl@14c0f68
1 2 3 4 6 7 8 9 10 11
在调用 UserTransaction.commit()方法前 获得的connection AutoCommit是关闭的
说明:在UserTransaction.begin()方法后,connection的AutoCommit设置为false
conn.getAutoCommit() = false
XA DataSource jndi测试 没有采用jta事务处理,看看能否进行插入操作 xaconnection2.jsp
在jndi中配置的 XADataSource DataSource ds = (DataSource)initCtx.lookup("jdbc/xawebgoods");
在jndi中配置的 DataSource = com.sun.gjc.spi.jdbc40.DataSource40@4f5a9e
XADataSource中的 connection AutoCommit总是false,所以感觉没有必要测试
XADataSource中没有采用UserTransaction的jta事务处理,则增加操作能否成功
在jndi中配置的 DataSource = com.sun.gjc.spi.jdbc40.DataSource40@4f5a9e
XADataSource中的 connection AutoCommit总是false,所以感觉没有必要测试
XADataSource中没有采用UserTransaction的jta事务处理,则增加操作能否成功
非 XA DataSource Hibernate jndi测试 HibernateJNDINOXADataSource.jsp
在HibernateSessionFactory中设置CONFIG_FILE_LOCATION = "/noXAhibernate.cfg.xml";
查询结果是:licg
XA DataSource Hibernate jndi测试 HibernateJNDIXADataSource.jsp
在HibernateSessionFactory中设置CONFIG_FILE_LOCATION = "/XAhibernate.cfg.xml";
查询结果是:licg