복붙노트

[SPRING] Servlet 3.0 검사 및 구성 요소의 자동로드를 비활성화하는 방법

SPRING

Servlet 3.0 검사 및 구성 요소의 자동로드를 비활성화하는 방법

우리는 서드 파티 라이브러리에서 ServletContainerInitializer의 인스턴스를로드하는 응용 프로그램을 보유하고 있습니다.

한 인스턴스는 JerseyServletContainerInitializer이고 다른 인스턴스는 SpringServletContainerInitializer입니다. Jersey와 Spring의 클래스는 우리의 매핑과 필터 등으로 엉망이 된 서블릿 컨텍스트를 "인수"하는 것처럼 보입니다.

우리는 서블릿 컨테이너의 web.xml을 명시 적으로 구성해야하며이 자동 검색이 우리를 미치게 만듭니다. 우리의 pom.xml에서 의존성을 끌어 들이기 만하면 서블릿 컨테이너가 클래스 경로에서 이러한 라이브러리를 찾기 때문에 Servlet / Filters / ContextListeners와 같은 런타임 ServletContext 구성이 변경됩니다.

Servlet 3을 사용하지만 성가신 자동 클래스 경로 스캐닝 "기능"을 비활성화하는 방법이 있습니까?

해결법

  1. ==============================

    1.https://wiki.apache.org/tomcat/HowTo/FasterStartUp에서

    https://wiki.apache.org/tomcat/HowTo/FasterStartUp에서

  2. ==============================

    2.Servlet 3.1 사양에 따른 절대 주문과 관련된 사양서는 8.2.2 "web.xml 및 web-fragment.xml 주문"에서 볼 수 있습니다.

    Servlet 3.1 사양에 따른 절대 주문과 관련된 사양서는 8.2.2 "web.xml 및 web-fragment.xml 주문"에서 볼 수 있습니다.

    핵심 요소는 비어있는 절대 정렬 요소를 사용하는 것이 서블릿 컨테이너 초기화 프로그램의 검색을 끄지 않는 것입니다. @WebServlet과 같은 주석을 정의하는 모든 구성 요소에 대한 검색이 꺼져 있습니다. 비어있는 절대 주문 요소의 사용은 웹 애플리케이션 내에서 JAR 파일을 처리하는 모든 주석을 실제로 끄려는 경우에만 권장됩니다.

    스캐닝을 좀더 세밀하게 조정할 수 있습니다. 절대 순서 요소를 사용하고 이름 요소를 사용하여 스캔 할 JAR 이름을 포함하고 건너 뛴 JAR을 생략하십시오. other 요소를 사용하지 마십시오. 명시 적으로 나열되지 않은 모든 JAR을 순서 지정하여 다시 해당 JAR에 대한 검색을 시작합니다.

    일반적으로 주석 처리에 사용할 수있는 웹 응용 프로그램은 스캔해야하는 클래스가 있으므로 모든 주석 처리를 끄는 것은 위험하다는 것을 알았습니다. 즉, 검색을 완전히 해제하면 웹 응용 프로그램이 손상 될 수 있습니다.

  3. ==============================

    3.주어진 답 중 어느 것도 작동하지 않는다는 것을 알았습니다.

    주어진 답 중 어느 것도 작동하지 않는다는 것을 알았습니다.

    클래스 경로에서 타사 SCI를 실제로 필터링하는 유일한 방법은 context.xml (context.xml)의 containerSciFilter 특성으로 밝혀졌습니다.이 컨테이너는 다음과 같이 정의됩니다.

    제 경우에는 org.eclipse.jetty.apache.jsp.JettyJasperInitializer와 같은 것들을 걸러 내고 싶었 기 때문에

  4. from https://stackoverflow.com/questions/36946487/how-to-disable-servlet-3-0-scanning-and-auto-loading-of-components by cc-by-sa and MIT license