0

Primefaces 3.2を使用していますが、JSFでスレッドを使用しているときに問題が発生します。FacesContextそのスレッドから現在の参照を取得できませんでした。

そのスレッド内でそのコンテキストへの参照を取得する方法。

4

1 に答える 1

1

電流FacesContextは静的スレッドローカル変数に格納されます。サーブレットコンテナは、特定のスレッドを使用して、コンテナに到着する各要求/応答を処理します。そのため、FacesContextスレッドローカル変数にを格納すると、リクエスト処理ライフサイクルごとに1つのインスタンスのみが存在するようになります。

別のスレッドからへの参照を取得しようとするとFacesContext、スレッドローカル変数として格納され、新しいスレッドがまだ初期化していないため、null参照を取得します。

別の新しいスレッドでfacesコンテキストが必要な場合、可能な唯一の方法は、を使用して新しいコンテキストインスタンスを作成することFacesContextFactoryです。HttpServletRequestただし、インスタンス化するには、、、HttpServletResponseおよびaへの参照が必要にServletContextなります(別のスレッドからこれらのオブジェクトへの有効な参照を取得することはできないと思います)。

于 2012-09-04T12:57:27.167 に答える