Tomcat サーブレットの context.xml 内のリソースのワイルドカード
質問
私は Tomcat についてはあまり詳しくありませんが、私のチームは、多くのサーバーにわたって Tomcat でホストされている Java サーブレットを中心に展開する複雑なプロジェクトを継承しています。カスタム構成管理ソフトウェアは、server.xml の書き出しに使用され、server.xml に書き込まれたさまざまなリソース (接続プール、Bean、サーバー変数など) によってサーブレットが構成されます。これは全く問題ありません。
ただし、一部のリソースの名前は事前に不明です。たとえば、サーブレットは、オペレータによって構成された任意の数の「アノニマイザ」にアクセスする必要がある場合があります。各アノニマイザーには一意の名前が関連付けられています。次のような Java Bean を使用して各アノニマイザーを作成および構成します。
<Resource
name="bean/Anonymizer_toon"
type="com.company.tomcatutil.AnonymizerBean"
factory="org.apache.naming.factory.BeanFactory"
className="teAnonymizer"
databaseId="50"
/>
<Resource
name="bean/Anonymizer_default"
type="com.company.tomcatutil.AnonymizerBean"
factory="org.apache.naming.factory.BeanFactory"
className="teAnonymizer"
databaseId="54"
/>
ただし、これには、サーブレットの context.xml ファイルに、考えられるすべてのリソース名ごとに事前に明示的なエントリを用意する必要があるようです。明示的な context.xml エントリをワイルドカードに置き換えるか、この種の問題に対するより良い解決策があるかどうか知りたいと考えています。
現在:
<ResourceLink name="bean/Anonymizer_default"
global="bean/Anonymizer_default"
type="com.company.tomcatutil.AnonymizerBean"/>
<ResourceLink name="bean/Anonymizer_toon"
global="bean/Anonymizer_toon"
type="com.company.tomcatutil.AnonymizerBean"/>
次のようなものに置き換えられます。
<ResourceLink name="bean/Anonymizer_*"
global="bean/Anonymizer_*"
type="com.company.tomcatutil.AnonymizerBean"/>
ただし、これが可能かどうか、または正しい構文が何であるかはわかりませんでした。これに対処するより良い方法について何か提案できる人はいますか?
解決
私はこれに遭遇したことはありませんが、必要なさまざまな AnonymizerBeans をすべて明らかにするリソースとして AnonymizerService のようなものを用意する方が簡単かもしれません。この方法では、ワイルドカードの問題は発生せず、Web アプリケーションにリソースを 1 つだけ公開するだけで済み、明確に定義され、よく理解されたパスに戻ることができます。
最初の質問から約 1 か月後に役立つことを願っています...
他のヒント
それがあなたが必要とするものであるかどうかはわかりませんが、Tomcat 用の独自のカスタム リソース ファクトリの作成を検討してみるとよいでしょう。Tomcat を介したすべてのリソースに関する一般的なドキュメントは次のとおりです。 Tomcatのリソース