ConnectionSpecWrapper больше не присутствует в последних выпусках - PullRequest
1 голос
/ 27 апреля 2020

Почему activejdb c класса ConnectionSpecWrapper исчез в последних выпусках?

в 3.0 (а также 2.3.2-j8) activejdb c 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 у нас есть

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, который живет уже около 8 лет и работает очень хорошо. Он включен Java 7 / Activeweb 1.10 / Activejdb c 1.4.9

1 Ответ

0 голосов
/ 27 апреля 2020

Классы-оболочки были переименованы в классы "Spe c", как вы правильно заметили. Обычно эти классы не используются. Если вы хотите продолжать использовать их, вы можете, конечно (переименовать соответственно). Тем не менее, лучшим подходом является определение ваших соединений в файле:

https://javalite.io/database_configuration#property -file-configuration и просто используйте https://javalite.io/controller_filters#dbconnectionfilter.

Я предполагаю, что вы написали собственный фильтр контроллера и используете ActiveWeb .

Обновление:

Теперь, когда мы установили, что вы используете ActivewWeb, рассмотрите возможность удаления кода и простого использования DBConnectionFilter, вот прекрасный пример: https://github.com/javalite/javalite-examples/blob/master/activeweb-simple/src/main/java/app/config/AppControllerConfig.java#L31

...