0

いくつかの接続プールを使用するデータベースを操作するためのメイン データ ソースがあります。ここで、同じ接続プールを使用して、別のトランザクションでロギング操作を実行し、次にメイン データベース トランザクションを実行する 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;
    }
4

1 に答える 1

0

私はそれを理解しました。新しいスレッドを開始する必要があります。その後、新しいトランザクションが作成されます。ロールバック中のデータベース ログへの書き込みも参照してください。

于 2012-08-10T13:36:31.743 に答える