2011-02-08 18 views

答えて

7

注釈付きフィルタでは不可能なようです。 Servlet 3.0 Specificationは言う:

上述したように、リスナー、サーブレットとフィルタを定義するために 注釈を使用する場合、それらは 呼び出される順序が指定されていません。

+3

さて、石の時代に戻って。 – rapadura

+1

フィルタの連鎖にリンクを指定した順序で入れるための規定がないと思われますか?これを指定した人々は現実世界を理解していませんでしたか? –

+0

信じられない... – rapadura

2

@axtavtはメモとしては使用できません。ここに彼らがそれをそのように設計した理由があります。

順序を指定するには、(何らかの形で)チェーン内の位置を指定する余分な引数が必要です。例えばオーダー'。これで問題があります。

  1. サーブレットが、その後プログラマ/デプロイヤは何かを動作するようにフィルタクラスのすべての注釈を検討する必要があり、そのための注釈パラメータで指定されたフィルタの数を持っている場合実際の注文はです。

  2. 理論的には、複数のサーブレット、複数のWebアプリケーションでも、特定のフィルタクラスを使用できます。各サーブレットまたはWebアプリケーションは、フィルタの順序を異ならせたい場合があります。フィルタクラスのアノテーションを使用するだけでは、これを達成することはできません。

  3. フィルタの順序を変更する必要があるWebアプリケーションを配備するユーザーは、ソースコードを変更して、WARファイルを再コンパイルして再構築する必要があります。

私は、設計者がこれらの問題を見て、フィルタの順序を指定する最高場所はweb.xmlファイルであると判断した想像してみてください。

+0

基本的に、理論上誰かが複数のWebアプリケーションでフィルタを使用する可能性があるので...そして他の理由は "面倒ですが"のようです。それでも私はあなたが理由を理由づけようとするのが好きです。 – rapadura

関連する問題