我希望在驻留在不同子域(同一服务器)上的一些应用程序之间共享会话数据。在过去,我会确保每个应用程序在各自的application.cfc中具有相同的名称。这已经运行了一段时间了--人们在一个应用程序上登录;会话与其他应用程序共享。
现在,我们希望将其中一个应用程序转换为ColdBox。所以我在我的开发机器上设置了在ACF2016上运行的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 admin中取消了组件缓存的检查,并重新启动了(几次)都没有用。我对ColdBox的了解还不够多,无法猜测可能发生了什么,但我完全被难住了。我不知道为什么它可以在一台机器上的ACF 2016上工作,但在另一台机器上却不行。如果有人有任何线索,我将不胜感激!非常感谢!
发布于 2018-05-09 00:35:41
Element CBBOOTSTRAP is undefined。
您在本地开发中看不到此问题的原因是,您总是首先启动CB应用程序,因此在启动非CB应用程序之前在应用程序范围内定义CBBOOTSTRAP。在您的其他环境中,非CB应用程序将首先启动,因此该值尚未定义。
停下来,做这个,
几年前,我遇到过同样的问题,试图让CB和非CB应用程序很好地结合在一起。IIRC,我们必须在两个应用程序之间创建一个共享应用程序变量的包含,并将CFM包含到两个应用程序中,以便在更新这组变量中的任何一个时,我们只需编辑一个文件。
一旦你采用这种方法,尝试共享会话可能会起作用。如果没有,我们还最终在CB和非CB应用程序之间创建了一个SSO登录,这样我们就可以在两者之间登录。
https://stackoverflow.com/questions/50223852
复制相似问题