1

最近のリリースで activejdbc クラス ConnectionSpecWrapper が消えたのはなぜですか?

3.0 (および 2.3.2-j8) の activejdbc jar には次のものがあります。

org/javalite/activejdbc/connection_config/ConnectionJndiConfig.class
org/javalite/activejdbc/connection_config/ConnectionConfig.class
org/javalite/activejdbc/connection_config/ConnectionJdbcConfig.class
org/javalite/activejdbc/connection_config/ConnectionDataSourceConfig.class
org/javalite/activejdbc/connection_config/DBConfiguration.class

2.3 jar には

org/javalite/activejdbc/connection_config/ConnectionSpecWrapper.class
org/javalite/activejdbc/connection_config/DbConfiguration.class
org/javalite/activejdbc/connection_config/ConnectionJdbcSpec.class
org/javalite/activejdbc/connection_config/ConnectionSpec.class
org/javalite/activejdbc/connection_config/ConnectionDataSourceSpec.class
org/javalite/activejdbc/connection_config/ConnectionJndiSpec.class

フィルターで次のように使用しています。

@Override
public void before() {

    if(Configuration.isTesting())
        return;

    List<ConnectionSpecWrapper> connectionWrappers = getConnectionWrappers();

    if (connectionWrappers.isEmpty()) {
        throw new InitException("There are no connection specs in '" + Configuration.getEnv() + "' environment");
    }

    for (ConnectionSpecWrapper connectionWrapper : connectionWrappers) {
        DB db = new DB(connectionWrapper.getDbName());
        db.open(connectionWrapper.getConnectionSpec());
        log.debug("Opened connection: " + connectionWrapper.getDbName() + " envname " + connectionWrapper.getEnvironment());
        if(manageTransaction){
            db.openTransaction();
        }
    }
}

@Override
public void after() {
    if(Configuration.isTesting())
        return;

    List<ConnectionSpecWrapper> connectionWrappers = getConnectionWrappers();
    if (connectionWrappers != null && !connectionWrappers.isEmpty()) {
        for (ConnectionSpecWrapper connectionWrapper : connectionWrappers) {
            DB db = new DB(connectionWrapper.getDbName());
            if(manageTransaction){
                db.commitTransaction();
            }
            db.close();
            log.debug("Closed connection: " + connectionWrapper.getDbName() + " envname " + connectionWrapper.getEnvironment());
        }
    }
}

Gazzetta dello Sport のファンタジー フットボール サイトをアップグレードすることを考えています。Java 7/Activeweb 1.10/Activejdbc 1.4.9 上にあります。

4

1 に答える 1

0

お気づきのとおり、「ラッパー」クラスは「スペック」クラスに名前が変更されました。通常、これらのクラスは使用されません。それらを引き続き使用したい場合は、もちろんできます(それに応じて名前を変更してください)。ただし、より良いアプローチは、ファイルで接続を定義することです。

https://javalite.io/database_configuration#property-file-configuration で、単に https://javalite.io/controller_filters#dbconnectionfilter を使用します

カスタムコントローラーフィルターを作成し、ActiveWebを使用していると仮定しています。

アップデート:

ActivewWeb を使用していることを確認したので、コードを削除して単純に を使用することを検討してください。DBConnectionFilter完璧な例を次に示します: /app/config/AppControllerConfig.java#L31

于 2020-04-27T20:58:46.877 に答える