Java WELD-000315无法获取对话锁

Java WELD-000315无法获取对话锁,java,jsf,primefaces,weld,jboss-weld,Java,Jsf,Primefaces,Weld,Jboss Weld,我正在JBossEAP6上使用PrimeFaces3.4.2和CDI创建一个JSF2应用程序。该应用程序有一个使用3页长对话的部分。当用户导航到使用对话的第一个页面时,他们有两个指向其他页面的链接 <p:commandLink action="#{event.navigateToIfg()}" > <h:outputText value="#{msg.ifg_label}" /> </p:commandLink> <p:command

我正在JBossEAP6上使用PrimeFaces3.4.2和CDI创建一个JSF2应用程序。该应用程序有一个使用3页长对话的部分。当用户导航到使用对话的第一个页面时,他们有两个指向其他页面的链接

<p:commandLink action="#{event.navigateToIfg()}" >
    <h:outputText value="#{msg.ifg_label}" />      
</p:commandLink>
<p:commandLink action="#{event.navigateToJob()}" >   
        <h:outputText value="#{msg.job_label}"/>        
</p:commandLink>

这两种方法都使用导航规则在页面之间移动

navigateToIfg()使用以下规则:

<navigation-rule>
    <from-view-id>/event/event.xhtml</from-view-id>
        <navigation-case>
            <from-outcome>TO_IFG</from-outcome>
            <to-view-id>/event/eventGuideIfg.xhtml?cid=#  {javax.enterprise.context.conversation.id}</to-view-id>
            <redirect />
        </navigation-case>
</navigation-rule>
<navigation-rule>
    <from-view-id>/event/event.xhtml</from-view-id>
    <navigation-case>
        <from-outcome>TO_JOB</from-outcome>
        <to-view-id>/event/eventGuideJob.xhtml?cid=#{javax.enterprise.context.conversation.id}</to-view-id>
        <redirect />
    </navigation-case>
</navigation-rule>       

/event/event.xhtml
到IFG
/event/eventGuideIfg.xhtml?cid={javax.enterprise.context.conversation.id}
navigateToJob()使用以下规则:

<navigation-rule>
    <from-view-id>/event/event.xhtml</from-view-id>
        <navigation-case>
            <from-outcome>TO_IFG</from-outcome>
            <to-view-id>/event/eventGuideIfg.xhtml?cid=#  {javax.enterprise.context.conversation.id}</to-view-id>
            <redirect />
        </navigation-case>
</navigation-rule>
<navigation-rule>
    <from-view-id>/event/event.xhtml</from-view-id>
    <navigation-case>
        <from-outcome>TO_JOB</from-outcome>
        <to-view-id>/event/eventGuideJob.xhtml?cid=#{javax.enterprise.context.conversation.id}</to-view-id>
        <redirect />
    </navigation-case>
</navigation-rule>       

/event/event.xhtml
工作
/event/eventGuideJob.xhtml?cid={javax.enterprise.context.conversation.id}
该应用程序还有一个全局点击javascript监听器,该监听器触发一个p:remoteCommand,通知sessionscoped bean点击。因此,当用户尝试导航到IFG或作业时,也会触发以下操作

<p:remoteCommand id="keepAliveRemoteCommand" name="keepAliveRC" actionListener="#{sessionInfo.keepAlive()}" autoRun="false" update="@none" process="@this" />

我相信导航和点击监听器一起触发会让我得到警告:

WELD-000315未能在1000中获取用于的对话锁 与id:1的对话

这会在我的应用程序中导致其他异常和失败。最后,问题并不总是一致的,有时它会立即发生,有时它不会使用相同的步骤发生。我需要了解我做错了什么,以及如何解决这个问题

更新:

有人能解释这个警告吗?这是什么意思?具体原因是什么?这似乎不是我的JSF应用程序可以控制的。在本例中,它似乎是特定于web应用的JBoss EAP 6(JBoss AS 7.1.3)。

在获得有关其含义的更多信息后,我确定错误的原因是,我为用户的每次单击都启动了一个全局单击侦听器

单击的ajax请求总是将会话id附加到请求上,这导致它在另一个请求运行超过1秒时尝试锁定会话。问题发生在耗时超过1秒的请求上,例如导航到不同的页面或长时间的保存请求。要解决这个问题,我所要做的就是更具体地说明何时启动click侦听器