実際には、アプリケーションサーバーで作成された2つの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)オブジェクトを閉じて、次のデータソースに接続するにはどうすればよいですか?