Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么导致会话ID增加_Java_Jsf 2_Cdi_Jboss Weld_Conversation Scope - Fatal编程技术网

Java 什么导致会话ID增加

Java 什么导致会话ID增加,java,jsf-2,cdi,jboss-weld,conversation-scope,Java,Jsf 2,Cdi,Jboss Weld,Conversation Scope,我正试图找出CDI对话中的一个问题。我有一个页面,如果我通过应用程序的一条路径,它就可以工作,但如果我通过另一条路径,它就不能工作。我相信这和谈话有关,但我不知道是什么 工作流程如下所示: 加载页面A 打开编辑页面A 此时,将启动一个ID为1的新对话 进行编辑和保存,返回给我一页 单击A页上的链接以加载B页 打开编辑页面B 对话以ID 2开始。在此开始时按refresh将启动ID为3的对话。其他刷新会增加会话ID。 编辑成功 不起作用的工作流程如下: 工作流程如下所示: 加载页面A 单击A页上的

我正试图找出CDI对话中的一个问题。我有一个页面,如果我通过应用程序的一条路径,它就可以工作,但如果我通过另一条路径,它就不能工作。我相信这和谈话有关,但我不知道是什么

工作流程如下所示:

加载页面A 打开编辑页面A 此时,将启动一个ID为1的新对话 进行编辑和保存,返回给我一页 单击A页上的链接以加载B页 打开编辑页面B 对话以ID 2开始。在此开始时按refresh将启动ID为3的对话。其他刷新会增加会话ID。 编辑成功 不起作用的工作流程如下: 工作流程如下所示:

加载页面A 单击A页上的链接以加载B页 打开编辑页面B 对话以ID 1开始。刷新页面将告诉我对话ID仍然为1。 页面上的各种操作引发id 1异常的WELD-000321找不到要还原的对话。 因此,这两个工作流之间的区别在于,在工作工作流中,我成功地进行了编辑&当我在第二个编辑页面上时,我获得了增量会话ID。工作流程不工作,对话ID始终为1,但我什么也做不了

我想了解的是:

如果我有一个ID为1的对话,做些什么然后结束对话,当我开始一个新的对话时-它的ID是什么?1此对话已结束,或2下一个未使用的ID。 除了没有正确结束的对话之外,还有什么事情会影响我看到的递增的对话ID吗?据我所知,我正在正确地结束我的对话。
希望其中一个问题的答案能让我们了解出了什么问题。感谢您的输入,听起来对话的启动和传播有问题。用例当然是可以实现的,没有您描述的问题。您可能想在这里发布一些相关代码

如果我有一个ID为1的对话,请执行一些操作,然后结束对话 对话,当我开始一个新的对话-它的ID是什么? 1此对话已结束,或2下一个未使用的ID

未指定CDI创建新ID的方式。Weld执行以下操作:

public class ConversationIdGenerator implements Callable<String>, Serializable {

    public static final String CONVERSATION_ID_GENERATOR_ATTRIBUTE_NAME = ConversationIdGenerator.class.getName();

    private static final long serialVersionUID = 8489811313900825684L;

    // The next conversation ID
    private final AtomicInteger id;

    /**
     * Creates a new conversation ID generator
     */
    public ConversationIdGenerator() {
        this.id = new AtomicInteger(1);
    }

    public String call() {
        int nextId = id.getAndIncrement();
        return String.valueOf(nextId);
    }

}
除了谈话没有正确结束之外,还有什么别的事情吗 我希望我的对话ID是递增的 看到?据我所知,我正在正确地结束我的对话


不,这里没有你遗漏的东西。问题很可能出现在您的代码中,这是个好消息,因为您可以更改它:-

介意发布一些代码吗?视图和支持bean?