Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.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
Jsf CDI会话作用域的长时间运行Bean不工作_Jsf_Java Ee 6_Cdi_Jboss Weld - Fatal编程技术网

Jsf CDI会话作用域的长时间运行Bean不工作

Jsf CDI会话作用域的长时间运行Bean不工作,jsf,java-ee-6,cdi,jboss-weld,Jsf,Java Ee 6,Cdi,Jboss Weld,我在理解Weld或CDI的对话范围时遇到了一些问题 在我的JSF Faclets页面中,我调用: <f:metadata> <f:event type="preRenderView" listener="#{viewBean.start}" /> </f:metadata> 现在,每当我刷新浏览器时,新的对话就会开始。这是正确的行为吗?那么,为什么谈话总是短暂的呢?没有抛出异常。将创建beans.xml

我在理解Weld或CDI的对话范围时遇到了一些问题

在我的JSF Faclets页面中,我调用:

        <f:metadata>
            <f:event type="preRenderView" listener="#{viewBean.start}" />
        </f:metadata>
现在,每当我刷新浏览器时,新的对话就会开始。这是正确的行为吗?那么,为什么谈话总是短暂的呢?没有抛出异常。将创建beans.xml并为空:

<beans xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>

简短回答:是的,这是正确的行为

长答案:对话代表一个“工作单元”,必须明确界定这一单元。这是通过显式调用conversation.begin()完成的-正如您已经做的那样。如果您想在多个请求上使用同一对话,您必须传播它-这是您没有做的:-)

传播会话时,会话id会附加到请求中。这会告诉容器需要哪个对话。当您只需点击刷新按钮而请求中没有会话id时,会为每个请求生成一个新的会话

从文件中:

对话上下文会自动更改 与任何JSF faces请求一起传播 (JSF表单提交)或重定向。信息技术 不会自动传播 例如,非faces请求, 通过链接导航

如果需要手动传播,只需将对话id添加到请求:

<h:link outcome="/addProduct.xhtml" value="Add Product">
   <f:param name="cid" value="#{javax.enterprise.context.conversation.id}"/>
</h:link>

所有这些,还有更多的解释。

@BalusC-这个“清理”编辑是关于什么的?我的名字和“干杯”这个词有问题吗?我遗漏了什么,还是你的个人品味?我不太相信它的好处…>“我可以使用签名或标语吗?”如果您不同意,请将其提交给我。
<h:link outcome="/addProduct.xhtml" value="Add Product">
   <f:param name="cid" value="#{javax.enterprise.context.conversation.id}"/>
</h:link>