Tomcat 7 Jasperは、アプリケーションを起動するとき、またはantを介してJSPをコンパイルするときに、余分なJARファイルまたは置き忘れたJARファイルについて文句を言います。私はメッセージの下に行きました
**compile-jsp:**
[jasper] Jul 31, 2012 7:15:15 PM org.Apache.jasper.compiler.TldLocationsCache tldScanJar
[jasper] INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
スキャン中に不要なJARをスキップする方法は、Tomcatの起動時間とJSPコンパイル時間を改善できますか?
より良い出力を可能にする方法は?
Tomcat 8の場合、ログに表示するためにTomcatによってスキャンされたjarのTomcat/conf/logging.properties
に次の行を追加する必要がありました。
org.Apache.jasper.servlet.TldScanner.level = FINE
Tomcat 8.5。/confディレクトリセットにあるcatalina.properties内:
Tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\*.jar
または、Tomcatの/ confディレクトリにあるcontext.xmlに移動して、次を追加します。
<JarScanner scanClassPath="false"/>
上記の解決策は私にはうまくいきませんでした。代わりに、logging.propertiesファイルの最後の行からハッシュ(#)を削除して、機能するようにしました。
# To see debug messages in TldLocationsCache, uncomment the following line:
org.Apache.jasper.compiler.TldLocationsCache.level = FINE
次のステップは、次の行の直後に、catalina.propertiesファイルでTomcat 7が探しているjarを追加することです。
org.Apache.catalina.startup.TldConfig.jarsToSkip=
それが誰かを助けるなら、私は既存のorg.Apache.catalina.startup.TldConfig.jarsToSkip=
エントリに以下の出力ファイルの内容を追加しました。
/var/log/Tomcat7/catalina.out
はTomcatログの場所です。
egrep "No TLD files were found in \[file:[^\]+\]" /var/log/Tomcat7/catalina.out -o | egrep "[^]/]+.jar" -o | sort | uniq | sed -e 's/.jar/.jar,\\/g' > skips.txt
お役に立てば幸いです。
TomcatはすべてのJarでTLD(ライブラリ定義のタグ付け)をスキャンするため、警告が表示されます。
Step1:どのJARがこの警告をスローしているかを確認するには、Tomcat/conf/logging.propertiesに次の行を挿入します
org.Apache.jasper.servlet.TldScanner.level = FINE
これで、どのJARが初期警告を引き起こしているかの詳細を示す警告を見ることができるはずです。
Step2スキャン中に不要なJARをスキップすると、起動時間とJSPコンパイル時間が改善されるため、catalina.properties
ファイル内の不要なJARをスキップします。ここには2つのオプションがあります-
Tomcat.util.scan.StandardJarScanFilter.jarsToSkip
の下にすべてのJARをリストします。しかし、多くのjarがある場合や、jarが変化し続ける場合、これは面倒になります。Tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*
を挿入して、すべてのjarをスキップしますこれで上記の警告は表示されなくなり、かなり大きなアプリケーションがある場合は、アプリケーションの展開にかかる時間を大幅に節約できます。
注:Tomcat8でテスト済み
この行のコメントを外します(/conf/logging.properties
内)
org.Apache.jasper.compiler.TldLocationsCache.level = FINE
作業はTomcat 7.0.5!
Tomcat 8の場合、Tomcatによってスキャンされるjarファイルを防ぐために、catalina.propertiesに次の行を追加する必要がありました。
Tomcat.util.scan.StandardJarScanFilter.jarsToSkip=jsp-api.jar,servlet-api.jar
上記のいずれも機能しませんでした(Tomcat 7.0.62)... Sensei_Shohが指摘しているように、メッセージの上にクラスが表示され、これをlogging.propertiesに追加します。私のログは:
Jan 18, 2016 8:44:21 PM org.Apache.catalina.startup.TldConfig execute
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
だから私は追加しました
org.Apache.catalina.startup.TldConfig.level = FINE
conf/logging.propertiesに
その後、非常に多くの「問題のある」ファイルを取得したので、それらをスキップする必要はありませんでした(また、通常のロギングに戻りました...)
エラーメッセージには、使用しているロガーが示されているため、そのロガー.level
を設定します。
[jasper] Jul 31, 2012 7:15:15 PM org.Apache.jasper.compiler.TldLocationsCache tldScanJar
したがって、ロガーはorg.Apache.jasper.compiler.TldLocationsCache
です。 logging.properties
ファイルに、次の行を追加します。
org.Apache.jasper.compiler.TldLocationsCache.level = FINE
ログの余分なエントリが気になるが、起動時間が1秒長くならない場合は、これをlogging.properties
に追加して忘れてください。
org.Apache.jasper.servlet.TldScanner.level = WARNING