0

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

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

如何跨数据库记住托管 bean 中设置的这个客户 ID?我是否必须生成标准配置文件,因为托管 bean 不能跨数据库工作?!

4

3 回答 3

4

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

你有(至少?)两种选择:

  1. 将所有 XPage 逻辑移动到一个 nsf 中,该 nsf 可以访问所有不同的后端数据库
  2. 使用作为OpenNTF 上 XPages Starter Kit一部分的服务器范围的服务器范围

我会推荐选项1。

于 2013-09-26T08:39:12.130 回答
1

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

于 2013-09-26T09:21:53.577 回答
0

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

bean的源代码(逻辑):

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

数据:

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

于 2013-09-26T09:21:43.863 回答