2

マルチデータベース Web アプリケーションを LS から Java Bean アーキテクチャに移行していますが、データベース接続を処理する最善の方法と、それらに使用するスコープを決定するのに苦労しています。

sessionScope を使用すると、呼び出しごとに 5 ~ 6 個のデータベースへの接続がユーザーごとに作成されます。データベース接続に applicationScope Bean を使用すると、サーバーが再起動されるまで開いたままになり、メモリ リークが発生します。ほとんど変更されないシステム構成値などの特定の値を applicationScope レベルでキャッシュできることは理解していますが、残りの接続が心配です。

私の質問は、パフォーマンスやメモリ リーク、または自動 GC の問題に影響を与えずにドミノ データベース接続 (ドミノ オブジェクトはシリアル化できません) を処理する最善の方法は何ですか?

4

2 に答える 2

2

これは、特定のソリューションを設計することと、一般的な「これはそれよりうまく機能する」というアドバイスだけを扱っているため、難しいものです。追加のデータベースからデータが取得されるように、コンシューマ XPage アプリケーションを設計することに大きな成功を収めました。データベース バックエンドを備えたフロント エンドのようなものですが、Domino を備えています。

アプリケーションにグローバルなものは何もないため、applicationScope は何も使用しませんが、おそらく applicationScope が思ったほどユビキタスではないことを示すのに十分なおしゃべりがあったとしても、オブジェクトを注意深く監視する必要があります。

ドミノ オブジェクトの問題はすでに把握しているため、どのアプローチを選択しても解決する必要があります。

アプリケーションによっては、いくつかの主要な再構築を検討している可能性がありますが、最初に sessionScope で試して、そのパフォーマンスを確認することをお勧めします。ベンチマークを行います。十分に高速に動作する場合は、それを使用しますが、Bean を開発するときは、パフォーマンスの最適化に細心の注意を払う必要があります。複数のデータベース呼び出しが問題になる可能性がありますが、少し試してみないとわかりません。

役立つことの 1 つは、最初に必要だと思うよりも詳細なアーキテクチャを使用してクラス Bean を構築すると (すべてを単一のクラスまたは Bean に積み上げようとしないでください)、簡単に適応できるようになるだけでなく、必要に応じてアーキテクチャを検討しますが、可能性があることすら知らなかった設計パターンも見始めるでしょう。

于 2013-04-16T02:40:03.940 に答える
1

ラッセルが言及しているように、これを行う方法は 1 つではなく、それぞれに長所と短所があります。

Document 情報を格納するために使用できる Wrapped Document クラスがあります。

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はここにあります:

http://public.dhe.ibm.com/software/dw/lotus/Domino-Designer/JavaDocs/XPagesExtAPI/8.5.2/com/ibm/xsp/model/domino/wrapped/DominoDocument.html

ただし、これはバックグラウンドで recycle() の処理の一部を行うだけです。そのため、データベース オブジェクトの Making/recycle() によって生成される同じオーバーヘッドが引き続き発生します。

主なオーバーヘッドは、Java コードでデータベースへの接続を作成することです。その接続が確立されると、他のすべてが比較的高速になります。

このパフォーマンスをテストする場合は、XPages Toolkit を使用することをお勧めします。使用方法に関するビデオは、openNTF の XPages Masterclass の一部です。

http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=XPages%20Masterclass

于 2013-04-16T07:13:52.037 に答える