尝试在 ColdFusion / ColdBox 应用程序之间共享会话时重命名应用程序时出错



我希望在驻留在不同子域(同一服务器(的某些应用程序之间共享会话数据。过去,我会确保每个应用程序在其各自的 application.cfc 中具有相同的名称。这已经运行了一段时间——人们在一个应用程序上登录;会话与其他人共享。

现在我们希望将这些应用程序之一转换为 ColdBox。所以我在我的开发机器上设置了在ACF 2016上运行的ColdBox 4。将默认的冷箱应用程序名称从

this.name = hash( getCurrentTemplatePath() ); 

this.name = 'mysite;'

在开发机器上工作正常,没有问题。但是,一旦我将相同的代码上传到生产环境(也是ACF 2016(,我就会收到以下错误:

Element CBBOOTSTRAP is undefined in a Java object of type class [Ljava.lang.String;. 
The error occurred in application.cfc: line 50
48 :    public boolean function onRequestStart( string targetPage ){
49 :        // Process ColdBox Request
50 :        application.cbBootstrap.onRequestStart( arguments.targetPage );
51 : 
52 :        return true;

只要我将应用程序名称改回

this.name = hash( getCurrentTemplatePath() ); 

该应用程序运行良好,没有错误(但会话未共享(。我认为关于第 50 行的消息可能是一条红鲱鱼。我在那里尝试了各种修改,但除了将应用程序名称更改回原来的样子之外,没有任何更改原始错误消息。

我已经取消了 CF 管理员中的组件缓存并重新启动(多次(无济于事。我对ColdBox的了解还不够多,无法猜测可能发生的事情,但我完全被难住了。我不知道为什么它会在一台机器上的 ACF 2016 上运行,而在另一台机器上不起作用。如果有人有任何线索,我将不胜感激!非常感谢!

Element CBBOOTSTRAP is undefined.

您在本地开发中没有看到此问题的原因是,您始终首先启动CB应用程序,因此在启动非CB应用程序之前在应用程序范围内定义CBBOOTSTRAP。在您的其他环境中,非 CB 应用程序首先启动,因此尚未定义该值。

停止那个,做这个

几年前,我遇到了同样的问题,试图让 CB 和非 CB 应用程序一起玩得很好。IIRC,我们必须在两者之间创建一个共享应用程序变量的包含,并将 CFM 包含在两个应用程序中,这样我们就只需要在更新任何一组变量时编辑一个文件。

采用这种方法后,尝试共享会话可能会起作用。如果没有,我们最终还在 CB 和非 CB 应用程序之间创建了一个 SSO 登录名,以便我们可以在两者之间登录。

最新更新