Используя JBoss AS 7, я пытаюсь настроить свой контейнер Servlet 3.0, используя код Java вместо веб-сайта. .xml. Моя проблема в том, что когда я регистрирую сервлет, сопоставленный с корнем контекста ("/"), сервлет по умолчанию имеет приоритет и вместо этого обрабатывает запросы. Я безуспешно пробовал и ServletContextListener, и ServletContainerInitializer.
Попытка 1: ServletContextListener
@WebListener
public class AppInitializer implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent event) {
ServletContext context = event.getServletContext();
ServletRegistration.Dynamic homeServlet = context.addServlet("homeServlet", new HomeServlet());
homeServlet.addMapping("/");
homeServlet.setLoadOnStartup(1);
}
@Override
public void contextDestroyed(ServletContextEvent event) {
// Do nothing.
}
}
Попытка 2: ServletContainerInitializer
public class AppInitializer2 implements ServletContainerInitializer {
@Override
public void onStartup(Set<Class<?>> classes, ServletContext context) throws ServletException {
ServletRegistration.Dynamic homeServlet = context.addServlet("homeServlet", new HomeServlet());
homeServlet.addMapping("/");
homeServlet.setLoadOnStartup(1);
}
}
Дополнительная информация
/
на /example
, мой сервлет будет обрабатывать запросы к новый путь правильно./
через web.xml вместо кода Java, мой сервлет будет правильно обрабатывать запросы к корневому контексту.Итак… что я могу сделать, чтобы зарегистрировать сервлет в корне контекста через Java-код без переопределения сервлетом по умолчанию?
Спасибо!