ColdFusion 9多服务器设置:设置应用程序名称可防止会话复制

时间:2012-09-28 23:26:27

标签: java-ee coldfusion jvm coldfusion-9 jrun

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

这是一个精简的application.cfc,它不会成功复制会话。

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

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

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

  

如果未在This.name变量中指定应用程序名称   Application.cfc初始化代码或使用ColdFusion   cfapplication标签,应用程序未命名,以及应用程序   scope对应于ColdFusion J2EE servlet上下文。 ColdFusion的,   因此,仅支持一个未命名的应用程序。

     

如果多个cfapplication标签和Application.cfc文件没有   指定应用程序名称,这些应用程序中的所有页面共享   servlet上下文作为其应用程序范围。所有未提名的会议   应用程序直接对应于J2EE的会话对象   应用服务器。 (如果不使用J2EE会话变量,   ColdFusion确保J2EE会话至少持续时间   会话暂停。)“

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

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

以下是一些想法:

  • 您是否在两个CF实例上都启用了J2EE会话?
  • 您的CF服务器是否与CF版本完全相同的JRun?
  • 他们是否运行相同版本的Java?

JRun或Coldfusion的日志中是否显示了任何内容?

我希望如果会话无法复制,那么您会在日志中看到它的提及。由于可靠性问题(主要是大量集群成员),我们放弃了JRun / CF中的会话复制,但我们确实让它运行了一个具有应用程序名称的应用程序,所以我知道它是可能的。