【问题标题】:GlassFish Cluster change instance when redirect to another application重定向到另一个应用程序时 GlassFish Cluster 更改实例
【发布时间】:2016-09-01 08:11:41
【问题描述】:

在我们部署多个应用程序之后,在服务器 Glassfish 中使用 Clustering 的 Enreprise 应用程序 (ear),而这个集群使用 2 Instances 当我们导航到另一个应用程序时,我们会通知集群更改了实例,但我们的目标是使用相同的实例,因为我们对所有应用程序都使用单点登录 (SSO)应用程序。

注意

  • 当我们使用一个实例和多个 Entreprise 应用程序时,一切正常。

  • 当我们使用多个实例和一个应用程序时,一切正常

  • 当我们将多个应用程序与多个实例一起使用时,就会出现问题。

  • 当我们使用 高可用性单点登录状态 时,它可以正常工作,但我们不想在系统中使用 HA。

  • 对于 Apache,我们使用 Apache mod_jk 或 mod_proxy

  • 玻璃鱼 3.1.2.2

    是否有任何解决方案或配置可以在 GlassFish 或 Apache 中为每个用户修复一个实例,这将解决我们的问题?

谢谢。

【问题讨论】:

    标签: apache jakarta-ee architecture glassfish


    【解决方案1】:

    您可能需要使用粘性会话,以便来自单个用户的请求始终路由到同一个 GlassFish 实例。

    查看更多信息如何配置herehere

    有关使用 NGinx 的配置,请查看 here(Payara Server 是 GlassFish 4 的受支持替代品)

    【讨论】:

    • 谢谢@OndrejM,我已经使用了粘性会话,但这也不能解决问题,我找到了一个简单的解决方案,我稍后会解释
    【解决方案2】:

    一周后我们发现问题出在 cookie 上,所以当有人在他的 Instance 中更改应用程序时,服务器 Apache 会为每个 Entreprise Application 创建一个新的 cookie,格式如下:

    cookiesID.InstanceNBR
    

    例如,如果我使用 3 个应用程序和 2 个实例,那么这可以创建 3 个 cookie 内容,如下所示:

    cookiesModule1.Instance1
    cookiesModule2.Instance2
    cookiesModule3.Instance2
    

    因为 cookie 的 path 格式对于每个应用程序都不同,如下所示:

    /erp/module1
    /erp/module2
    /erp/module3
    

    所以为了解决这个问题,我们为 web.xml 中的所有应用程序指定了一个路径,如下所示:

    <session-config>
        <session-timeout>
            30
        </session-timeout>
        <cookie-config>
            <path>/PATH_OF_COOKIES</path>
        </cookie-config>
    </session-config>
    

    因为我们使用 SSO 进行身份验证,所以我们在所有应用程序的路径中仅使用 斜杠 /

    <cookie-config>
        <path>/</path>
    </cookie-config>
    

    谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-12
      • 2020-10-16
      • 2019-01-12
      • 1970-01-01
      • 2019-04-25
      • 1970-01-01
      • 1970-01-01
      • 2021-04-15
      相关资源
      最近更新 更多