2

マネージド Bean にはフィールドがあり、フィールドにはゲッターとセッターがあります。ただし、この場合は Notes プロファイル文書に値を保存し直す必要もあります。だから私はメソッドを持っていloadProfileDocumentますsaveProfileDocument。アプリケーションスコープでBeanを使用することを考えていました。

プロフィール文書が確実に保存されるようにするにはどうすればよいですか?

saveProfileDocumentセッターから呼び出す必要がありますか?私は明示的に呼び出すのsaveProfileDocument()ですか?デストラクタ (ファイナライズ) を使用できますか? または何...???...

4

2 に答える 2

2

Bean の状態をド​​キュメントの MIME アイテムにシリアル化する、いわゆる "MIMEBean" アプローチの使用を検討することをお勧めします。このアプローチでは、各オブジェクトがシリアライズ可能である限り、Bean フィールドを階層化できます (オブジェクト内のオブジェクト内のオブジェクト)。これにより、1 つのフィールド = 1 つのプリミティブ値 (または値のベクトル) である通常のフラットなデータ構造よりもはるかに柔軟になります。

アプリケーションでかなり広範囲に使用されているこのアプローチの例については、OpenNTF の WatrCoolr プロジェクトのソースを調べてください。

Jesse Gallagher は、この手法をかなり透過的に使用できるようにするカスタム データ ソースも作成しました。

于 2012-11-29T13:48:47.103 に答える
1

プロフィール文書は使用しないでください。@Sven Hasselbach が述べたように、HTTP タスクのすべてのスレッドにはプロファイル ドキュメントの独自のキャッシュ コピーがあり (プロファイルは設計によりキャッシュされます)、1 つのスレッドに保存しても他のスレッドには取り込まれません。通常、混乱を修正するには、HTTP タスクの再起動が必要です。

あなたの質問に答えるには、更新の頻度を決定する必要があります。ときどき単一のプロパティを更新する場合は、setter で呼び出して保存することをお勧めします。バッチで多くの属性/フィールドを更新する場合、同じアプローチではパフォーマンスが低下します。

適切なトレードオフは、setter でダーティ フラグを設定し、afterRenderResponse で save メソッドを呼び出して、条件付きで Bean の状態をバックエンド ドキュメントに保存することです。リクエスト スコープ Bean の場合、ダーティ フラグをクリアする必要はありません。他のスコープの場合は、保存後にフラグをリセットすることを忘れないでください。

于 2012-11-29T00:32:54.693 に答える