Java 如何在weblogic中共享会话

Java 如何在weblogic中共享会话,java,session,weblogic,locale,Java,Session,Weblogic,Locale,我有多个应用程序在weblogic上运行。我需要让用户选择语言(英语,西班牙语,法语,…),当他们选择时,所有他们想使用的应用程序必须基于他们选择的语言。当我在会话中保存Locale时,该应用程序一切正常,但当用户单击其他应用程序(不在应用程序范围内)时,该语言将更改为默认语言。有没有办法在所有应用程序之间共享此值?有。一个选项是将用户区域设置首选项保存在共享数据库中。另一种方法是手动发送浏览器cookie。如果您将应用程序部署在同一台服务器上,请尝试在weblogic的服务器级别配置JMS。

我有多个应用程序在weblogic上运行。我需要让用户选择语言(英语,西班牙语,法语,…),当他们选择时,所有他们想使用的应用程序必须基于他们选择的语言。当我在会话中保存
Locale
时,该应用程序一切正常,但当用户单击其他应用程序(不在应用程序范围内)时,该语言将更改为默认语言。有没有办法在所有应用程序之间共享此值?

有。一个选项是将用户区域设置首选项保存在共享数据库中。另一种方法是手动发送浏览器cookie。

如果您将应用程序部署在同一台服务器上,请尝试在weblogic的服务器级别配置JMS。 请看这个主题,它将帮助你

使用会话共享状态模式

您必须在同一企业应用程序(.ear)中的web应用程序(.war)之间共享HTTP会话。在.ear的weblogic-application.xml中添加以下设置:

<session-descriptor>
  <sharing-enabled>true</sharing-enabled>
</session-descriptor>

真的
见:和

警告:
当你混合了几个战争时,要小心饼干的名字。在我们的例子中,将.wars(静态资源)与默认cookie名称JSESSIONID和具有显式定义的会话cookie名称的应用程序混合在一起,“共享”cookie名称变成了JSESSIONID,而不是显式定义的名称

如果将区域设置保存在共享数据库中,则任何请求都必须查询该表,这对性能有不良影响。对于cookies,我不确定它是否在所有应用程序之间共享。你能再解释一下吗?@pmp如果域没有改变,cookie值将在每次请求时从浏览器发送到服务器。进行数据库调用是一种解决方案,我不认为它会对性能造成不良影响。也就是说。相关-是否所有应用程序都提供了将区域设置为特定或所有应用程序的选项,还是在某种主应用程序中?@BheshGurung没有主应用程序。基本上,当您访问网站并更改语言(无论您登录的是哪个模块)时,您应该能够看到与您选择的语言相同的所有其他模块(应用程序)。例如,如果我在weblogic上运行应用程序A、B、C,我登录到A并选择法语,然后切换到B,我应该能够看到法语的B。@BheshGurung问题(我不确定,只是猜测)
会话共享
可能是因为会话中的某些值在不同应用程序之间发生冲突。例如,如果我在应用程序A中将
XYZ
设置为
1
,在应用程序B中将
XYZ
设置为
2
,那么我在应用程序之间切换
XYZ
会发生什么?我在每个模块上设置时看到它们了吗?还是会被更改?如果您担心冲突,并且应该共享的数据有限,那么我不认为会话共享是正确的方法。我还认为共享数据库实际上可能会影响性能,但也可能是错误的。最后,正如埃利奥特·弗里希所说,我认为饼干将是最好的最佳解决方案。此外,如果您想要SSO,那么这也是您将要使用的。欢迎提供指向解决方案的链接,但请确保您的答案在没有它的情况下是有用的:这样您的其他用户就会知道它是什么以及为什么存在,然后引用您链接到的页面的最相关部分,以防目标页面不可用。