Tomcat:アプリのデプロイ中にjarを除外することは可能ですか?


8

デフォルトでは、TomcatはwebappsがTomcatディストリビューションの一部であるいくつかの.jarをロードしないようにします(サーブレットやJSP APIなど)-他も除外されるように構成することは可能ですか?

構成だけではそれができない場合、Tomcatはリソース検証用の拡張ポイントを提供しますか?

共有ロギングライブラリを使用したいのですが、誤ったアプリが構成を破壊しないようにする必要があります。

これは私が言及しているものです(Tomcat起動ログから):

Oct 1, 2011 5:53:40 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(D:\tomcat\myapp\WEB-INF\lib\servlet-api.jar) - jar not loaded.
See Servlet Spec 2.3, section 9.7.2.
Offending class: javax/servlet/Servlet.class

私はtomcatを考えていません。クラスパスで最初にjarが来るクラスロードシーケンスの問題だけです。あなたはこの後かもしれません。stackoverflow.com/questions/267953/managing-libraries-in-tomcat

@Shahzeb:例を追加しました。これは実際には、さまざまなクラスローダーがどのように相互作用するかということではありません。Webアプリケーションがロードしようとするリソースを検証できるようにしたいのです。
Dmitri

回答:


6

Tomcatのドキュメントにorg.apache.catalina.loader.WebappClassLoader記載されているように、拡張するカスタムローダーを使用して、ロードするウェブアプリを確認/フィルタリングします

フィルタリングを実装する標準のTomcatの実装(7.0.19)をWebAppClassLoader確認してください。おそらく、そのクラスをオーバーライドして、フィールドとにエントリをいくつか追加するだけで十分です。javax.servlet.Servletprotected String[]triggerspackageTriggers


1
もちろん、カスタムWebappClassLoaderTOMCAT_HOME/lib、明白なことを述べるためだけに、Webアプリから離れた独自のJARに入れる必要があります:)
Philipp Reichart
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.