【问题标题】:save managed bean to notes document将托管 bean 保存到注释文档
【发布时间】:2012-11-28 22:30:30
【问题描述】:

在托管 bean 中,您有字段,并且字段有 getter 和 setter。 但在这种情况下,我还需要将值保存回 Notes 配置文件。 所以我有一个loadProfileDocument 和一个saveProfileDocument 方法。 我正在考虑在应用程序范围内使用 bean。

如何确保配置文件已保存?

我必须从二传手调用saveProfileDocument 吗? 我是否明确地致电saveProfileDocument()? 我可以使用析构函数(最终确定)吗? 或者什么...???...

【问题讨论】:

  • 我不确定在 Web 应用程序中使用配置文件是否是个好主意。不同的 HTTP 引擎线程可以缓存不同版本的配置文件,你永远不会知道你是否拥有最新的配置文件数据。这是较旧的 Lotus Web 应用程序的问题,我认为 XPages 应用程序仍然存在问题。您应该改用普通文档。
  • 斯文,这个问题在xPages环境中依然存在。最好使用普通的笔记文档。

标签: java javabeans xpages lotus-domino


【解决方案1】:

您可能需要考虑使用所谓的“MIMEBean”方法,该方法将 bean 的状态序列化为文档上的 MIME 项。使用这种方法,您的 bean 字段可以是分层的(对象中的对象中的对象),只要每个对象也是可序列化的。这比通常的平面数据结构提供了更大的灵活性,其中一个字段 = 一个原始值(或值向量)。

有关此方法在应用程序中广泛使用的示例,请查看 OpenNTF 上的 WatrCoolr 项目的源代码。

Jesse Gallagher 还创建了一个custom data source,允许相当透明地使用此技术。

【讨论】:

    【解决方案2】:

    不要使用配置文件。正如@Sven Hasselbach 提到的,HTTP 任务的每个线程都有自己的配置文件缓存副本(配置文件被设计缓存)并且保存在一个线程中不会填充到其他线程。通常需要重新启动 HTTP 任务来修复混乱。

    要回答您的问题,您必须确定更新频率。如果您不时更新单个属性,则在 setter 中调用 save 是不错的选择。对于批量更新许多属性/字段,相同的方法会执行得很差。

    好的权衡是在 setter 中设置脏标志并在 afterRenderResponse 中调用 save 方法有条件地将 bean 状态保存到后端文档。对于request scoped bean不需要清除dirty flag,对于其他scope不要忘记在save后重置它。

    【讨论】:

      猜你喜欢
      • 2016-11-12
      • 2018-04-10
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-09
      • 1970-01-01
      • 2023-03-27
      相关资源
      最近更新 更多