1

監査メッセージを受け取るメッセージ駆動型 Bean があります。これらのメッセージには、監査対象のシステムに関する情報も含まれています。メッセージを受信すると、MDB は、システムが存在しない場合はシステムを作成するか、既存のシステムを再利用できます。

私の課題は、新しいシステムから大量のメッセージを同時に受信すると、複数の MDB インスタンスが作成され、重複したシステムが作成される可能性があることです。データベースに制約を追加することは、それを解決する 1 つの方法です。アプリケーション (この場合は MDB) でこれらの重複を回避する方法はありますか?

4

3 に答える 3

2

すべてのメッセージを処理するスレッドが 1 つだけであることを確認してください。これは、Activation Spec、接続プールで構成できます。

于 2010-11-21T02:53:22.473 に答える
-1

次のようなことを試すことができます:

private Object LOCK;
public void onMessage() {
    code…
    synchronized(LOCK) {
        check if system exists, create if necessary
    }
    more code…
}
于 2010-11-16T22:21:33.593 に答える