표준 API를 통해 런타임 중에 서블릿을 활성화 할 수 없습니다. 대부분 빌드 시간 동안 web.xml
또는 배포 중에 ServletContext#addServlet()
으로 만 사용할 수 있습니다. 최선의 방법은 항상 요청을 기반으로 사용하도록 설정하고 제어하는 것입니다. 이 경우 servlet filter을 사용할 수 있습니다.
먼저 서블릿에 이름을 지정하십시오.
@WebServlet(urlPatterns="/hello", name="yourServlet")
public class YourServlet extends HttpServlet {
// ...
}
서블릿의 URL 패턴에 대한 걱정없이 필터를 직접 매핑 할 수 있습니다.
@WebFilter(servletNames="yourServlet")
public class YourFilter implements Filter {
// ...
}
필터에서 체인을 계속할지 또는 구성 파일 설정에 따라 404를 반환할지 결정하십시오.
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if (isYourConfigurationFileSettingSet()) {
chain.doFilter(request, response);
} else {
((HttpServletResponse) response).sendError(HttpServletResponse.SC_NOT_FOUND);
}
}
isYourConfigurationFileSettingSet()
부분
지금까지 제공된 정보에 기초하여 상세하게 응답 할 수 없다. 실제로 그걸 알아낼 수없는 경우에는
Where to place and how to read configuration resource files in servlet based application?
으로 머리를 맞 춥니 다. 제가 생각한 것은 틀림 없습니다 만, 패키징 할 때 여러 개의 'web.xml'파일 중 하나를 선택하기가 쉬우므로 기각 될 가능성이 있습니다. WAR 파일이지만 런타임에 선택할 수 있는지 또는 방법을 선택할 수 있는지 여부는 알 수 없습니다. –
@Someprogrammerdude 제 편집을 참조하십시오. – Andres