我正在使用具有会话范围的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观察两个不同浏览器会话中的冲突是错误的。我不需要自己创建一个唯一的ID。
答案 0 :(得分:0)
作为Siliarus评论,浏览器URL中的ID可能相同,但ID在会话中是唯一的。因此没有冲突,也没有必要手动生成唯一的ID。