いくつかの接続プールを使用するデータベースを操作するためのメイン データ ソースがあります。ここで、同じ接続プールを使用して、別のトランザクションでロギング操作を実行し、次にメイン データベース トランザクションを実行する 2 番目のデータ ソースを作成したいと考えています。複数のデータ ソースが同じ接続プールを使用している場合、Glassfish のドキュメントから理解している限り、それらは接続が閉じられるまでトランザクションを共有します (間違っている可能性があります。修正してください)。
では、データ ソースへの接続を取得するときに、新しいトランザクションを開始する方法はありますか? TransactionIsolation を設定することで可能性がありますか?
接続は次の方法で取得されます。
private synchronized Connection getConnection() {
if (connection == null) {
try {
final Context ctx = new InitialContext();
final DataSource ds = (DataSource) ctx.lookup(getDataSourceLookupAddress());
connection = ds.getConnection();
} catch (final NamingException e) {
errorHandler.error("Datasource JNDI lookup failed: " + dataSourceLookupAddress + "!");
errorHandler.error(e.toString());
} catch (final SQLException e) {
errorHandler.error("Sql connection failed to " + dataSourceLookupAddress + "!");
errorHandler.error(e.toString());
}
}
return connection;
}