0
我正在使用对话范围的CDI bean。 我在bean的这样的操作方法开始一个新的对话:@ConversationScoped豆 - 会话标识不唯一?
if (conversation.isTransient()) {
conversation.begin();
logger.fine("start new conversation, id=" + conversation.getId());
}
现在我认识到,通过CDI给出的ID是像“1”或“2”等简单的小数字。 经过一些测试后,我能够启动不同的浏览器会话,最终得到相同的ID。因此,两个浏览器都声称ID为'1'。这会导致谈话中发生冲突。
我不知道这种行为是否正常(我在Wild running中运行)?
我是否应该通过自己提供一个生成的唯一ID开始我的谈话?
if (conversation.isTransient()) {
conversation.begin(UUID.randomUUID().toString());
logger.fine("start new conversation, id=" + conversation.getId());
}
更新: 作为Siliarus评论,该ID是在浏览器会话中是唯一的。我自己在两个不同的浏览器会话中使用相同的CID观察冲突是错误的。我不需要自己创建一个唯一的ID。
请详细说明“这会导致对话期间发生冲突”。创建不同的浏览器会话将触发CDI内的新会话。所以你最终可能拥有相同的会话ID,但每个会话都属于不同的会话(假设你保持两个会话都存活)。这不应该导致我认为的冲突。这只是我想到的第一个想法。 – Siliarus
是的 - 你是对的。我发现ID在会话中是独一无二的,认为这会是一个问题是我的错。 – Ralph