【问题标题】:XPages Can a Managed Bean work across multiple databases?XPages 托管 Bean 可以跨多个数据库工作吗?
【发布时间】:2013-10-02 02:50:08
【问题描述】:

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

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

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

【问题讨论】:

    标签: java xpages managed-bean


    【解决方案1】:

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

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

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

    我会推荐选项 1。

    【讨论】:

    • 感谢您的回复。不幸的是,我无法将所有逻辑移至单个数据库:o(
    【解决方案2】:

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

    【讨论】:

    • 我现在在查询字符串中传递 id,XPage beforePageLoad 将其拾取并设置 bean。现在都在工作。谢谢你们的帮助。
    【解决方案3】:

    你得从两个角度来看:

    bean的源代码(逻辑):

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

    数据:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多