2012-03-23 5 views
1

Tomcat, WebLogic, WebSphere 및 JBoss에 애플리케이션을 배치하고자합니다. 애플리케이션의 web.xml에는 기본 서블릿에 대한 매핑이 있어야합니다. (즉, 웹 로직은 "FileServlet과"입니다)다른 전개 환경에 대한 기본 서블릿 맵핑

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>/js/calendar/flexcal.html</url-pattern> 
</servlet-mapping> 

그러나이 변경 다른 플랫폼에서이 서블릿은 "기본"라는 톰캣의 경우

, 그래서 우리의 매핑으로 나타납니다.

사용할 수있는 항목에 따라 변경되는 조건부 매핑을 정의하는 방법이 있습니까? 우리가이 문제에 어떻게 접근해야 하는가?

감사합니다.

답변

5

방법이 없습니다.

어떤 식 으로든 컨테이너의 기본 서블릿에 명시 적으로 매핑하지 않는 것이 좋습니다. Webapp을 특정 컨테이너에 단단히 묶을뿐만 아니라 약 1 년 전까지 Tomcat 및 복제본 (JBoss, WebSphere 등)에서이를 수행 할 때 엄청난 보안 허점이있었습니다. 기본 서블릿이 /과 다른 URL 패턴으로 매핑 될 때마다 공격자는 /WEB-INF/META-INF에 파일 (민감한 정보가 포함될 수 있음)을 요청할 수 있습니다. 당신이 정말로보고 한 issue 50026을보십시오.

대신 프런트 컨트롤러 서블릿을 /* 대신보다 구체적인 URL 패턴으로 매핑하고 /*에 전역 필터를 만들고 매핑하여 현재 요청 URI에 따라 프런트 컨트롤러로 전달하거나 기본 서블릿으로 계속 전달합니다. 구체적인 예제는 How to access static resources when mapping a global front controller servlet on /*을 참조하십시오.

+0

많은 감사와 조언을드립니다. – James

+0

당신을 진심으로 환영합니다. – BalusC

관련 문제