coldfusion - 尝试在 ColdFusion / ColdBox 应用程序之间共享会话时重命名应用程序时出错
问题描述
我希望在驻留在不同子域(同一服务器)上的一些应用程序之间共享会话数据。过去,我会确保每个应用程序在其各自的 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 上工作,但不能在另一台机器上工作。如果有人有任何线索,我将不胜感激!非常感谢!
解决方案
Element CBBOOTSTRAP is undefined
.
您在本地开发人员中没有看到此问题的原因是您总是首先启动 CB 应用程序,因此CBBOOTSTRAP
在启动非 CB 应用程序之前在应用程序范围内进行定义。在您的其他环境中,非 CB 应用程序首先启动,因此该值尚未定义。
停止那个,做这个
几年前我遇到了同样的问题,试图让 CB 和非 CB 应用程序一起玩得很好。IIRC,我们必须在两者之间创建共享应用程序变量的包含,并将 CFM 包含到两个应用程序中,以便在更新任何一组变量时我们只需要编辑一个文件。
一旦您采用这种方法,尝试共享会话可能会奏效。如果没有,我们最终还在 CB 和非 CB 应用程序之间创建了 SSO 登录,因此我们可以在两者之间登录。
推荐阅读
- logging - 垃圾收集日志格式
- php - 动态显示名字和姓氏作为选择选项
- reactjs - Material UI v1 - SwipeableDrawer:元素类型无效
- php - 防止用户更改自己的权限
- reactjs - 在反应中使用 hashHistory 时,在 createhashHistory 中当前路径未获取,它正在重定向到登录页面
- javascript - ES5 风格的 Concat 数组。将数组合并为一个
- mysql - mysql where 子句中的 case 或 If 条件在 sql 语法中产生 #1064 错误
- python-3.x - $的退出状态?发生分段错误时使用python
- java - jsonObjectRequest 错误,总是以 onErrorResponse 方法结束
- php - wordpress 链接让我找不到 404