我希望在不同子域(同一服务器)上的某些应用之间共享会话数据。在过去,我会确保每个应用程序在各自的application.cfc中具有相同的名称。一段时间以来工作正常 - 人们登录一个应用程序;会话与其他人共享。
现在我们希望将其中一个应用转换为ColdBox。所以我在我的开发机器上设置了在ACF 2016上运行的ColdBox 4。从
更改默认的Coldbox应用程序名称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,但不能在另一台机器上使用。如果有人有任何线索,我会非常感激!非常感谢!
答案 0 :(得分:0)
Element CBBOOTSTRAP is undefined
。
您在本地开发中未发现此问题的原因是您始终首先启动您的CB应用,因此在启动非CB之前在应用范围中定义CBBOOTSTRAP
应用程序。在您的其他环境中,非CB应用程序首先启动,因此尚未定义该值。
停止,执行此操作
几年前我经历了同样的问题,试图让CB和非CB应用程序一起玩得很好。 IIRC,我们必须在两者之间创建一个共享应用程序变量的包含,并将CFM包含在两个应用程序中,这样我们只需在更新任何一组变量时编辑一个文件。
尝试共享会话可能会在您采用该方法后起作用。如果没有,我们最终还是在我们的CB和非CB应用程序之间创建了一个SSO登录,这样我们就可以在两者之间登录。