Приложение FW/1 вызывает приложение ApplicationStart при каждом запросе

У меня есть приложение FW/1 на Railo 4.2.2/Apache и по какой-то причине оно вызывает onApplicationStart на каждый запрос. Я могу сказать, что это не какой-либо код повторного набора - положить в callStackGet() сбросить setupApplication и может видеть, что корневым вызовом является onApplicationStart (не через какой-либо хук инициализации). Есть ли известные ошибки в Railo, которые могли бы вызвать это? Я дважды проверил время ожидания приложения (1 день) и настройку FW/1 - она ​​отключена - поэтому не должно быть никаких причин, по которым приложение будет терять область приложения при каждом запросе.

Есть еще одна странная вещь, которую я вижу, но я не знаю, что это связано. В приложении настройки я создаю новый пользовательский объект (через ORM) и сохраняю его, если локальный администратор не существует. Я выкидываю его и вижу идентификатор, но его нет в базе данных, когда я запрашиваю таблицу (да, я его сбросил). Следующий удар по странице снова создает пользователя (поскольку он еще не существует...).

Редактировать: Добавить постоянный объектный код для Адама.

function setupApplication() {
    // bean factory should look in the model tree for services and beans
    var bf = new framework.ioc( "/com/sharp/model" );
    setBeanFactory( bf );
    ormReload();

    if( getEnvironment() == 'dev' ){
        writeLog('Checking for dev user');
        if( !arrayLen( ormExecuteQuery('from User where username = ?', ['admin']) ) ){
            var user = new com.sharp.model.user.User({username: 'admin', password: hash('p@ssw3rd'), isAdmin: true});
            entitySave( user );
            ormFlush();
            writeDump(user);
            writeDump(callStackGet());
            writeLog('User admin created')
        }
        else{
            var user = bf.getBean('userService').getByUsername('admin');
            writeLog('Dev admin user already exists.  Done.')
        }
        var auth = bf.getBean('userService').authenticate( 'admin', 'p@ssw3rd' );
    }

}

1 ответ

Я думаю, что сбой при сохранении в БД может быть ошибкой регрессии в Railo 4.2.2. См. https://issues.jboss.org/browse/RAILO-3279

Попробуйте включить сохранение / сброс в транзакцию:

transaction{
    entitySave( user );
    ormFlush();
}

Обычно вам не нужны оба. Либо транзакция, либо ormFlush должны сохранить ее.

Другие вопросы по тегам