避免在WebSphere 7上的两个不同应用服务器的两个选项卡之间共享会话



我正面临着类似JSF强制URL重写的问题希望避免跨应用程序共享会话

  • 遗留系统-环境:JSF 1.2, JSF -api-2.1.0-b03,jsf-facelets-1.1.14, jsf - impl - 1.2

我在websphere 7上部署了两个独立的应用服务器使用基于表单的身份验证,使用标准的LDAP注册表。

  1. Server1 webapp (ear):-使用基于JSP表单的身份验证创建。
  2. Server2 webapp (ear):-使用JSF创建

faces-config.xml

<managed-bean>
    <managed-bean-name>Login</managed-bean-name>
    <managed-bean-class>
        com.abc.ui.mbean.session.LoginMBean
    </managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
    <managed-bean-name>DeviceType</managed-bean-name>
    <managed-bean-class>com.abc.nsam.jsfmanager.jsf.mbean.stateful.DeviceTypeMBean</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
    <managed-property>
        <property-name>contextMBean</property-name> "This is of session scope"
        <value>#{Context}</value>
    </managed-property>
</managed-bean>

当我登录到server1 &做一些操作,然后在IE上打开新的选项卡,并为server2输入URL,它会自动登录我(因为他们共享相同的本地用户名),并做一些操作,然后回到server1选项卡..它抛出ViewExpiredException,并将我注销,并再次返回登录页面。登录后,当我回到server2选项卡并单击任何链接时,它会注销我。

所以看起来jsessionId被2个不同的选项卡(两个不同的应用服务器实例)覆盖。

根据这个问题的答案:你能给我推荐同样的——正确管理作用域吗?但它似乎是请求范围在我的情况下,登录它的会话范围.....我应该重写URL吗?(使用漂亮的URL重写?)....请帮忙……谢谢你。

我找到解决办法了。

在websphere下,我可以更改每个应用服务器的cookie名称。

http://www - 01. - ibm.com/support/docview.wss?uid=swg21225834

默认情况下,它使用JSESSIONID,你可以根据你的应用程序使用重命名它,这样它就不会在浏览器选项卡访问之间覆盖。

最新更新