Orm FW/1应用程序在每次请求时调用应用程序启动

Orm FW/1应用程序在每次请求时调用应用程序启动,orm,cfml,railo,fw1,Orm,Cfml,Railo,Fw1,我在Railo 4.2.2/Apache上有一个FW/1应用程序,出于某种原因,它会在每次请求时调用应用程序启动。我可以看出这不是任何reinit代码-将callStackGet()转储到setupApplication中,并可以看到根调用在applicationstart上(不是通过任何init钩子)。Railo中是否存在导致此问题的已知错误?我已经仔细检查了应用程序超时(1天)和FW/1设置-它已关闭-因此应用程序没有理由在每次请求时都会丢失应用程序范围 我也看到了另一件奇怪的事情,但我不知

我在Railo 4.2.2/Apache上有一个FW/1应用程序,出于某种原因,它会在每次请求时调用应用程序启动。我可以看出这不是任何reinit代码-将
callStackGet()
转储到
setupApplication
中,并可以看到根调用在applicationstart上(不是通过任何init钩子)。Railo中是否存在导致此问题的已知错误?我已经仔细检查了应用程序超时(1天)和FW/1设置-它已关闭-因此应用程序没有理由在每次请求时都会丢失应用程序范围

我也看到了另一件奇怪的事情,但我不知道这有什么关系。在安装应用程序中,我创建了一个新的用户对象(通过ORM),并在本地管理员不存在的情况下将其持久化。我转储它并查看ID,但在查询表时它不在数据库中(是的,我刷新了它)。下一个页面点击再次创建用户(因为它现在还不存在…)

编辑:为Adam添加持久化对象代码

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' );
    }

}

我认为未能持久化到DB可能是Railo4.2.2的一个回归错误。看

尝试在事务中包装保存/刷新:

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

通常你不应该两者都需要。事务或ormFlush都应该使其持续存在。

您是否设置了应用程序名称?与Bardware达成一致,如果您没有设置应用程序名称或每次都将其设置为随机名称,则可能会导致此行为。至于您的ORM用户创建错误,请发布代码员。设置了应用程序名称,是的。不,没有重复的应用程序在本地运行@AdamTuttle-拜托,伙计,你知道我知道如何创建和持久化一个简单的用户;)我通常会给你怀疑的好处,真的。但是如果你不想发布代码,你怎么能指望得到帮助呢?无论如何,要确定在onApplicationStart(调用FW/1的setupApplication)中创建实体是否存在某种缺陷,请尝试将相同的代码移动到index.cfm或其他地方。再次检查它是否不是您的持久性代码。像科学家一样思考并隔离这些变量。