jakarta-ee - ColdFusion 9 多服务器设置 : setting application name prevents session replication

标签 jakarta-ee coldfusion jvm coldfusion-9 jrun

所以,标题几乎说明了一切:我正在从单服务器 ColdFusion 安装切换到多服务器 ColdFusion 安装,并且如果我设置应用程序名称, session 复制将不起作用。

这是一个精简的 application.cfc,它无法成功复制 session 。

    component 
    {
        this.name                = 'myTestApp';
        this.sessionManagement   = true;
        this.sessionTimeout      = createTimeSpan(0,2,0,0);
    }

一旦我注释掉应用程序名称, session 复制就可以在我的服务器之间完美运行。

我相信this Adobe help page切线引用这个问题:

If you do not specify an application name in the This.name variable in the Application.cfc initialization code or by using the ColdFusion cfapplication tag, the application is unnamed, and the Application scope corresponds to the ColdFusion J2EE servlet context. ColdFusion, therefore, supports only a single unnamed application.

If multiple cfapplication tags and Application.cfc files do not specify an application name, all pages in these applications share the servlet context as their Application scope. All sessions of unnamed applications correspond directly to the session object of the J2EE application server. (If you do not use J2EE session variables, ColdFusion ensures that the J2EE session lasts at least as long as the session time-out.)"

停止使用application.name显然不被视为最佳实践。但是,如何让我的服务器在使用命名应用程序时使 session 可用?有没有办法在 J2EE/JRun servlet 上下文中注册应用程序名称?我不想为我们在服务器上运行的每个 CF 应用程序设置一个单独的实例集群;这似乎不是一个可扩展的解决方案。

我觉得我可能在这里错过了一些非常简单的东西,不是一个java大师,但是任何提示都值得赞赏。--Will

最佳答案

我们使用 ColdFusion (J2EE) 集群配置了许多集群,并且使 session 复制始终使用定义的 ColdFusion 应用程序可靠地运行。毫无疑问,在 6.1 到 8 版本中,这是非常具有挑战性的,CF9 后情况肯定变得更好。然而,ColdFusion 集群并不是简单的点击练习,需要仔细创建;从在所有服务器上创建多个实例开始;此时进行检查,以确保每个实例都按预期单独提供内容;然后我们可以创建集群添加成员(最近创建和测试的实例)。

我们的建议是设置“循环”和“粘性 session ”,但我们已成功地使客户端能够仅使用循环。在此过程的每个阶段,每次进行更改或添加时都必须重新启动所有实例,并且应在每次重新启动后检查 {instance}-out.log 以确保不存在相关错误正如 Barney 在该线程中所阐述的那样。只有当{instance}-out.log中没有出现集群错误时,集群才能正常工作,在集群配置完成之前不要做出任何判断或假设。

关于jakarta-ee - ColdFusion 9 多服务器设置 : setting application name prevents session replication,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12648568/

相关文章:

java - 如何在 sbt 中运行多 jvm 测试?

java - 具有多个实例的集群中的 JMS 持久订阅者

java - 大型项目中监听器类的作用是什么

transactions - 是否使用 JTA 事务?

coldfusion - 如何包含 ColdFusion 代码但不对其进行处理?

java - 如何验证Java中的内存泄漏

jakarta-ee - Tomcat 可以为 Java EE 提供完整的实现吗?

tomcat - 从 JRun 4.0 转换到 Tomcat 有什么好处?

coldfusion - 如何在Coldfusion中获取当前页面的URL?在获取当前页面网址时,我正在获取home_page_URL/index.cfm

java - 查找 JVM 中上下文切换或唤醒线程所花费的 CPU 时间