会話スコープを持つ CDI Bean を使用しています。次のように、Bean のアクション メソッドで新しい会話を開始します。
if (conversation.isTransient()) {
conversation.begin();
logger.fine("start new conversation, id=" + conversation.getId());
}
CDI によって与えられる ID は、'1' や '2' などの単純な小さな数字であることがわかりました。いくつかのテストの後、最後に同じ ID を取得したさまざまなブラウザー セッションを開始することができました。したがって、両方のブラウザは、たとえば ID '1' を要求します。そして、これは会話中に衝突を引き起こします。
この動作は正常なのだろうか (私は Wildfly で実行しています)?
生成された一意の ID を自分で指定することから会話を開始する必要がありますか?
if (conversation.isTransient()) {
conversation.begin(UUID.randomUUID().toString());
logger.fine("start new conversation, id=" + conversation.getId());
}
更新: Siliarus のコメントとして、ID はブラウザー セッション内で一意です。同じ CID を使用している 2 つの異なるブラウザー セッションでの競合に関する私自身の観察は間違っていました。自分で一意の ID を作成する必要はありません。