高手请给看看weblogic为什么不rollback呀?
是代码的问题,还是weblogic配置问题?
<%
final String jNDIString="jdbc/mysql_test";
javax.naming.Context ic = new javax.naming.InitialContext();
javax.sql.DataSource ds=(javax.sql.DataSource)ic.lookup(jNDIString);
java.sql.Connection conn = ds.getConnection();
java.sql.Statement stmt=conn.createStatement();
int i;
javax.transaction.UserTransaction userTran;
userTran = (javax.transaction.UserTransaction)ic.lookup("javax.transaction.UserTransaction");
userTran.begin();
try
{
stmt.execute("insert into test (a) values ('abc')");
i=1/0;
userTran.commit();
}
catch(Exception ex)
{
userTran.rollback();
out.print(ex.toString());
}
stmt.close();
conn.close();
ic = null;
ds = null;
conn = null;
stmt =null;
%>
下面是连接池和数据源配置
<JDBCTxDataSource EnableTwoPhaseCommit="true"
JNDIName="jdbc/mysql_test" Name="jdbc/mysql_test"
PoolName="jdbc/mysql_test" Targets="myserver"/>
<JDBCConnectionPool DriverName="org.gjt.mm.mysql.Driver"
Name="jdbc/mysql_test" Password="{3DES}wMiXJu2VjPmitcGWfZkIXA=="
Properties="user=dataCenter_user" Targets="myserver"
TestConnectionsOnCreate="true" TestConnectionsOnRelease="true"
TestConnectionsOnReserve="true" TestFrequencySeconds="60"
TestTableName="SQL SELECT 1" URL="jdbc:mysql://localhost:3306/datacenter"/>
可同样的代码在
Sun Java System Application Server Platform Edition 8.0
下面就能正常的rollback