4

カスタム Tomcat バルブを作成しました。(Tomcat 6.0.24 と Java 1.6 を使用しています) バルブを宣言する XML 要素は次のとおりです。

<Valve className="mypkg.MyValve"  foo="bar"/>

この宣言を server.xml の Host 要素内に配置すると。Tomcat は、バルブの setFoo() メソッドを値「bar」で呼び出します。それが私がしたいことです。

ただし、この同じ宣言を Web アプリケーションの META-INF/context.xml の Context 要素内に配置すると、Tomcat がバルブをロードし、バルブが正常に動作します。しかし、Tomcat は setFoo() メソッドを呼び出して、バルブが必要とする「バー」値を提供することはありません。

Tomcat が server.xml で宣言されているが context.xml では宣言されていないバルブを適切に構成する理由がわかりません。

webappのMETA-INF/context.xmlで宣言されているときにTomcatにバルブを適切に構成させる方法を知っている人はいますか?

ありがとう、ダン

これにより、バルブがロードされ、Tomcat によって適切に構成されます。

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true"
   xmlValidation="false" xmlNamespaceAware="false">

    <Valve className="mypkg.MyValve"  foo="bar"/>
</Host>

これにより、バルブがロードされますが、Tomcat は構成パラメーター「bar」を与えません。

<Context privileged="true" >
    <Valve className="mypkg.MyValve"  foo="bar"/>
</Context>
4

2 に答える 2

3

これは私の調べた推測です。あなたがコンテナにValveバインドされている可能性がありますか?Host

カスタムバルブは直接サブクラス化していorg.apache.catalina.valves.ValveBase ますか? もしそうなら、それはうまくいったはずです。

getContainer()両方の設定から Valveの を試して印刷し、毎回設定されているCatalina コンテナー (エンジン、ホスト、コンテキスト)を正しく識別しているかどうかを確認できます。

SingleSignOnのような特定のバルブは、コンテナにバインドされているため、他のバルブでは機能しませんHost。これは、サブクラス化されたバルブにも適用されます。

于 2010-09-16T06:50:35.333 に答える
0

SetPropertiesRule は、スタートアップの一部として、カスタム プロパティのゲッターを見つけようとします。

于 2014-11-21T11:47:38.890 に答える