XPages托管Bean可以跨多个数据库工作吗?

时间:2013-09-26 08:28:40

标签: java xpages managed-bean

我有一套数据库,当用户进行身份验证时,托管bean会记住客户ID。整个数据库套件中的所有XPage都使用此客户ID。所有XPage都能够切换到不同的帐户,因此客户ID会发生变化。

当切换帐户时,设置了该数据库的托管bean,但是转移到另一个数据库中的另一个XPage,并且该托管bean尚未更新!似乎托管bean会话范围是特定于数据库的,但我的情况(对或错)意味着我必须记住跨数据库的这个客户ID。

如何在跨数据库记住托管bean中设置的客户ID?我是否必须得到标准配置文件,因为托管bean无法跨数据库工作?!

3 个答案:

答案 0 :(得分:4)

托管bean的范围限定为应用程序,会话,视图或请求,这些范围只能在单个nsf中访问。

你有(至少?)两个选项:

  1. 将所有XPage逻辑移动到一个访问所有不同后端数据库的nsf
  2. 使用属于XPages Starter Kit on OpenNTF
  3. 的服务器范围的服务器范围

    我会推荐选项1。

答案 1 :(得分:1)

唯一的另一个选择是当你从一个数据库移动到另一个数据库时,在查询字符串中传递一些东西,允许你在另一个数据库的上下文中重建bean。如果您对Java感到满意,那么Per的选项2就是前进的方向。

答案 2 :(得分:0)

你必须从两个角度来看待它:

bean的源代码(逻辑):

  • 将其捆绑到JAR并复制到每个NSF
  • 使用OSGi分享其逻辑

数据:

不共享bean的值:对于应用程序,视图和请求范围,它是预期的。您可能想要共享会话范围的bean。我确信您可以重新考虑并将bean的范围更改为其他范围,将会话范围的属性保留在其他位置(cookie或数据库)。 在这种情况下,如Per Henrik Lausten建议的那样,部署您的bean代码服务器。