문제

스타트 업시 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"속성 "에 새로운 값을 추가 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top