操作两个数据库出错,大家给指点一下!!!!
在JTA中操作两个数据库出错,不知什么原因,在网上也没查到。
javax.transaction.UserTransaction tx = null;
java.sql.Connection conn = null;
java.sql.Connection conn2 = null;
String sql = "select * from blog";
String sql2 = "select * from person";
try {
Context context = new InitialContext();
tx = (UserTransaction) context
.lookup("java:comp/UserTransaction"); // 取得JTA事务,本例中是由Jboss容器管理
javax.sql.DataSource ds = (javax.sql.DataSource) context
.lookup("java:/PostgresDS"); // 取得数据库连接池,必须有支持XA的数据库、驱动程序
javax.sql.DataSource ds2 = (javax.sql.DataSource) context
.lookup("java:/PostgresDS2"); // 取得数据库连接池,必须有支持XA的数据库、驱动程序
tx.begin();
conn = ds.getConnection();
//conn = getJtaConnection("java:/PostgresDS2");
java.sql.Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery(sql);
while (rs.next()) {
System.out.println("***************:" + rs.getString(2));
}
rs.close();
statement.close();
conn.close();
ds = null;
conn2 = ds2.getConnection(); //(这里出错)
java.sql.Statement statement2 = conn2.createStatement();
ResultSet rs2 = statement2.executeQuery(sql2);
while (rs2.next()) {
System.out.println("person is :" + rs2.getString(2));
}
statement2.close();
rs2.close();
conn2.close();
tx.commit();
难道在一个事务里,不能用两个Connection?