重定向到另一个应用程序时,GlassFish群集更改实例

时间:2016-09-01 08:11:42

标签: apache java-ee architecture glassfish

在我们部署多个应用程序后,使用群集的服务器Glassfish中的Enreprise应用程序( ear ),并且此群集使用 2实例我们通知群集在我们导航到另一个应用程序时更改了实例,但我们的目标是使用相同的实例,因为我们使用单点登录( SSO )来实现所有应用

N.B

  • 当我们使用一个实例和多个Entreprise应用程序时,每件事都可以正常工作。

  • 当我们使用多个实例和一个应用程序时,每件事情都可以正常工作

  • 当我们对多个实例使用多个应用程序时,这会产生问题。

  • 当我们使用 Hight availibility 单点登录状态时,它运行正常,但我们不想在我们的系统中使用HA

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

  • GlassFish 3.1.2.2

      

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

谢谢。

2 个答案:

答案 0 :(得分:1)

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

详细了解如何配置herehere

对于使用NGinx进行配置,请查看here(Payara Server是GlassFish 4的替代支持)

答案 1 :(得分:0)

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

cookiesID.InstanceNBR

enter image description here

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

cookiesModule1.Instance1
cookiesModule2.Instance2
cookiesModule3.Instance2

因为Cookie的路径的格式对于每个应用程序来说都是不同的:

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

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

<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>

谢谢。