实际上我需要连接在我的应用程序服务器中创建的两个mysql数据源。我正在使用JPA2.0
我尝试了以下代码。但我收到异常“ java.lang.IllegalStateException:本地事务已经有 1 个非 XA 资源:无法添加更多资源。 ”。
import com.google.common.collect.Lists;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import javax.annotation.Resource;
import javax.sql.DataSource;
public class SampleClass {
@Resource(name = "jdbc/source1")
DataSource source1;
@Resource(name = "jdbc/source2")
DataSource source2;
final List<String> list = Lists.newArrayList("Source1", "Source2");
public void getresponse() throws Exception {
for (String source : list) {
Connection connection = null;
Statement statement = null;
try {
connection = getConnection(source);
statement = connection.createStatement();
} catch (SQLException ex) {
} finally {
statement.close();
connection.close();
}
}
}
public Connection getConnection(String source) {
Connection conn = null;
try {
if(source.equalsIgnoreCase("Source1")){
conn = source1.getConnection();
} else if(source.equalsIgnoreCase("Source2")){
conn = source2.getConnection();
}
} catch(SQLException se) {
}
return conn;
}
}
对于我在代码中的逻辑。我需要使用单个 Connection 对象连接所有数据源。
如何关闭现有连接 ( conn ) 对象并连接下一个数据源?