1

Jetty と Wildfly の間でフィルターの初期化の実装に違いがあることを発見したと思います。

Tapestry、Spring、および Hibernate を使用した Web アプリケーションを作成しました。Jetty から Wildfly に移行しようとしています。

私の web.xml には 2 つのフィルターがあります。

まず、OpenSessionInViewFilter (doInternalFilter の実行時に WebApplicationContext が存在する必要があります)。ハイバネート セッションがバックエンド データベースに対するすべての Tapestry アクティビティを包含するように、このフィルターは Tapestry の前にある必要があります。

次に、タペストリー フレームワーク (Spring 統合付き) Filter です。これは、initメソッドで Spring の WebApplicationContext をロードします。

Jetty (Tomcat でも) で問題なくこのシナリオを実行していましたが、Wildfly に移動すると、OpenSessionInViewFilter が IllegalStateException をスローし、WebApplicationContext が見つからないことを通知しました。

これをデバッグしようとしたところ、Wildfly がinit Filter メソッドを呼び出していないことがわかりました。その Filter は、処理する最初のリクエストを受け取るまでです。これは特定のシナリオではパフォーマンスが向上する可能性があることに同意しますが、現在のシナリオでは問題です。

アプリケーションの起動時にフィルターを初期化するように Wildfly に指示する方法はありますか?

ありがとうございました。

4

1 に答える 1

4

undertow サブシステムの構成オプションを介してこの機能を公開するプル リクエストを送信しました。

追加できるようになりました

<servlet-container name="default" eager-filter-initialization="true">

これを有効にします。

于 2014-03-07T23:07:59.023 に答える