Tomcat에서 Taglib 스캔을 끄는 것이 가능합니까?
문제
스타트 업시 Tomcat은 TLD (TAG 라이브러리 디스크립터) 파일의 웹 인트 디렉토리를 재귀 적으로 스캔합니다. 결과적으로 WebApp에 해당 디렉토리 아래에 많은 파일이있는 경우 시작 프로세스가 느려집니다. 그 상황에 스캔을 완전히 끄는 방법이 있는지 또는 최소한 검색을 좁힐 수있는 필터를 제공하는지 아는 사람이 있습니까?
해결책
컨텍스트에서 ProcessTlds 속성을 추가 할 수 있습니다.
<Context processTlds="false" ... />
그러나 JAR 파일에 정의 된 TLD는 항아리를 스캔하지 않으면 작동하지 않습니다. Web-INF에서 모든 TLD를 정의해야합니다.
다른 팁
나는 같은 문제에 당황했다. Tomcat 7.0.40의 소스 코드를 살펴보면 'processtlds = false'를 설정하여 항아리 스캔을 피할 수는 없지만 웹 조각에 대해서는 여전히 스캔됩니다 (ContextConfig.processJarsforWebFragments ()).
남은 두 가지 옵션이 있습니다.
tomcat_home/conf/catalina.properties에서 속성을 설정합니다
org.apache.catalina.startup.ContextConfig.jarsToSkip=*.jar
표준 Jarscanner를 자신의 구현으로 교체하고, 예를 들어 비어있는 것과 같이, my.war/meta-inf/context.xml에서 참조하십시오.
<Context processTlds="false">
<JarScanner className="org.my.tomcat.NullJarScanner"/>
</Context>
후자의 경우 Nulljarscanner 클래스가 .war가 아닌 Tomcat의 Lib 디렉토리에서 사용할 수 있는지 확인해야합니다.
Tomcat 8에서는 추가하여 해결할 수 있습니다. META-INF\context.xml
아래 구성이 전쟁 파일에 표시됩니다. 글로벌 Tomcat 구성을 변경할 필요가 없습니다.
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<JarScanner>
<JarScanFilter tldSkip="*.*"/>
</JarScanner>
</Context>
관련 문서는 다음과 같습니다. http://tomcat.apache.org/tomcat-8.0-doc/config/jar-scan-filter.html
대안으로 (일부 항아리를 스캔하는 경우) "{tomcat_home} /conf/catalina.properties"의 "tomcat.util.scan.defaultjarscanner.jarstoskip"속성 "에 새로운 값을 추가 할 수 있습니다.