Jsf javabean体系结构的Domino数据库连接

Jsf javabean体系结构的Domino数据库连接,jsf,javabeans,xpages,lotus-domino,Jsf,Javabeans,Xpages,Lotus Domino,我们正在将我们的多数据库web应用程序从LS迁移到JavaBeans体系结构,但我们正在努力决定如何最好地处理数据库连接以及我们应该为它们使用什么范围 如果我们使用sessionScope,那么每次调用都会为每个用户创建到5-6个数据库的连接。如果我们将applicationScope bean用于数据库连接,那么它将保持打开状态,直到服务器重新启动,从而导致内存泄漏。我知道某些值(例如很少更改的系统配置值)可以在applicationScope级别缓存,但我担心其余的连接 我的问题是,在不影响

我们正在将我们的多数据库web应用程序从LS迁移到JavaBeans体系结构,但我们正在努力决定如何最好地处理数据库连接以及我们应该为它们使用什么范围

如果我们使用sessionScope,那么每次调用都会为每个用户创建到5-6个数据库的连接。如果我们将applicationScope bean用于数据库连接,那么它将保持打开状态,直到服务器重新启动,从而导致内存泄漏。我知道某些值(例如很少更改的系统配置值)可以在applicationScope级别缓存,但我担心其余的连接


我的问题是,在不影响性能、内存泄漏或自动GC问题的情况下,处理domino数据库连接(domino对象不可序列化)的最佳方法是什么?

这是一个棘手的问题,因为它处理的是架构一个特定的解决方案,而不是一些通用的“这比那好”建议。我们已经成功地构建了一个消费者XPage应用程序,以便从其他数据库检索数据。有点像前端,有数据库后端,但有Domino

我们不使用applicationScope,因为应用程序没有全局性,但即使有足够多的闲聊表明applicationScope可能没有听起来那么普遍,因此您必须密切监视您的对象

您已经解决了Domino对象问题,因此无论您选择哪种方法,都必须这样做

根据您的应用程序,您可能会开始一些主要的重新构建,但我的建议是先在sessionScope上尝试一下,看看它的性能如何。做一些基准测试。如果它运行得足够快,那么就这样做,但是在开发bean时,您应该非常关注性能优化。多个数据库调用可能是一个问题,但在您稍微使用它之前,您真的不会知道


一件有帮助的事情是,如果您使用比您最初认为需要的更详细的体系结构来构建类bean(不要试图将所有内容堆积到单个类或bean中),如果需要,不仅可以更容易地调整您的体系结构,而且您还将开始看到您甚至不知道可能存在的设计模式。

正如Russell提到的,没有一种方法可以做到这一点,每种方法都有其优缺点

有一个包装文档类可用于存储文档信息

public static DominoDocument wrap(java.lang.String database,
                              lotus.domino.Database db,
                              java.lang.String parentId,
                              java.lang.String form,
                              java.lang.String computeWithForm,
                              java.lang.String concurrencyMode,
                              boolean allowDeletedDocs,
                              java.lang.String saveLinksAs)
Javadoc在这里:

但是,这只是在后台处理recycle()。因此,您仍然会有与生成/回收()数据库对象相同的开销

您将发现的主要开销是在Java代码中创建到数据库的连接。一旦建立了这种连接,其他一切都会相对更快

我建议在测试性能时使用XPages工具包。有关如何使用它的视频是openNTF上XPages Masterclass的一部分


您看过这个新项目了吗:?谢谢Russell,这就是我们目前正在做的事情,ObjectAid UML之类的东西帮助我们看到了整个画面以及对象之间的关系。因此,如果使用MVC将每个表单/子表单定义为一个实体(没有任何特定于Domino的逻辑)是有意义的,那么我们以这样的方式构建它,即每个表单/子表单的后端都有一个类。您建议使用哪些工具来监控性能?我还想进一步了解您在构建从多个数据库检索数据的应用程序方面取得的成功。我们很早就使用了XPages工具包,一旦我们对通用方法感到满意,我们就继续使用它并停止测量。然而,其他人使用你的工具包。我们从来没用过,谢谢你的回复,西蒙。我们正在尝试构建模型,所以我们不会在内存中保存文档,而是保存Java对象。我仍然需要尝试XPages toolkit,它是否也测试Java对象和bean的性能,或者您会推荐一个特定于Java的Eclipse插件?该包装类将允许您存储Java对象,而不是带有后端JNI引用的文档。所以它可以被序列化。工具箱用于针对JVM/CPU测试代码。它也吃豆子。