1

JBoss EAP 6 で PrimeFaces 3.4.2 と CDI を使用して JSF 2 アプリケーションを作成しています。アプリケーションには、3 ページの長時間の会話を使用するセクションがあります。ユーザーが会話を使用する最初のページに移動すると、他のページへの 2 つのリンクがあります。

<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>

navigateToJob() は次のルールを使用します。

<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>       

このアプリケーションには、クリックを sessionscoped Bean に通知する ap:remoteCommand をトリガーするグローバル オン クリック JavaScript リスナーもあります。そのため、ユーザーが IFG または JOB に移動しようとすると、以下もトリガーされます。

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

ナビゲーションとクリックリスナーが近くで発火すると、次の警告が表示されると思います。

WELD-000315 ID: 1 の会話の会話ロックを 1,000 取得できませんでした

これにより、アプリケーションで他の例外やエラーが発生します。最後に、問題は常に一貫しているわけではありません。すぐに発生する場合もあれば、同じ手順を使用しても発生しない場合もあります。自分が間違っていることと、この問題を修正する方法を理解する必要があります。

更新:
誰でもこの警告を説明できますか? どういう意味ですか?具体的にはどのように引き起こされるのでしょうか。私のJSFアプリケーションが制御するものとは思えません。この場合、JBoss EAP 6 (JBoss AS 7.1.3) の Web アプリに固有のようです。

4

1 に答える 1