所以,标题几乎说明了一切:我正在从单服务器 ColdFusion 安装切换到多服务器 ColdFusion 安装,如果我设置应用程序名称,会话复制将不起作用。
这是一个没有成功复制会话的精简 application.cfc。
component
{
this.name = 'myTestApp';
this.sessionManagement = true;
this.sessionTimeout = createTimeSpan(0,2,0,0);
}
只要我注释掉应用程序名称,会话复制就可以在我的服务器之间完美运行。
我相信这个 Adobe 帮助页面切线地引用了这个问题:
如果您未在 Application.cfc 初始化代码中的 This.name 变量中或使用 ColdFusion cfapplication 标记指定应用程序名称,则应用程序未命名,并且应用程序范围对应于 ColdFusion J2EE servlet 上下文。因此,ColdFusion 仅支持一个未命名的应用程序。
如果多个 cfapplication 标记和 Application.cfc 文件未指定应用程序名称,则这些应用程序中的所有页面共享 servlet 上下文作为它们的应用程序范围。未命名应用程序的所有会话都直接对应于 J2EE 应用程序服务器的会话对象。(如果您不使用 J2EE 会话变量,ColdFusion 会确保 J2EE 会话的持续时间至少与会话超时时间一样长。)"
显然,停止使用application.name
. 但是,如何让我的服务器在使用命名应用程序时使会话可用?有没有办法在 J2EE/JRun servlet 上下文中注册应用程序名称?我不想为我们在服务器上运行的每个 CF 应用程序设置一个单独的实例集群;这似乎不是一个可扩展的解决方案。
我觉得我可能在这里遗漏了一些非常简单的东西,不是 Java 大师,但任何提示都值得赞赏。--Will