JavaEE6 Conversation.end不会将conversation.id重置为1

时间:2013-04-16 13:16:29

标签: java-ee-6 conversation-scope

在调用conversation.end时,是否会重置conversation.id?

场景:我有一个在CRUD中使用会话范围的应用,所以当我访问列表页面时,它会启动一个对话。转到详细信息,然后单击返回将调用结束对话并再次开始对话。但是当我处于调试模式时,我发现当调用conversation.end()时,会话被设置为null。然后,当我重新调用conversation.begin()时,conversation.id不会重置为1而是最后一个值+ 1.这样做是否正确?

更令人费解的是,在退出并再次登录后,conversation.id会获取最后一个值+1。

我的环境:使用javaee-api的Jboss 7.1.3。

protected void beginConversation() {
    if (conversation.isTransient()) {
        conversation.begin();
    }
}

protected void endConversation() {
    if (!conversation.isTransient()) {
        conversation.end();
    }
}

所以基本上我有一个基本实体(其中定义了上面的代码。)由所有支持bean扩展。当列表页面呈现时,它将调用beginConversation。单击详细信息页面中的后退按钮将调用endConversation。

1 个答案:

答案 0 :(得分:1)

为什么要重置会话ID?

解决这些问题的最佳方法是直接查看specification(在您的情况下为CDI 1.0),其中指出容器必须为对话生成ID,而不是如何生成。< / p>

查看this问题,该问题说明了如何在WELD中完成。