@ConversationScoped Beans - 转换ID不唯一?

时间:2016-09-23 10:19:03

标签: jsf cdi conversation-scope

我正在使用具有会话范围的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。

1 个答案:

答案 0 :(得分:0)

作为Siliarus评论,浏览器URL中的ID可能相同,但ID在会话中是唯一的。因此没有冲突,也没有必要手动生成唯一的ID。