Я последовал this example настроить мой DispatcherServlet через Java с Спрингом WebApplicationInitializer
->javax.servlet.ServletContainerInitializer
:ServletRegistration отображение URL конфликт с весной DispatcherServlet
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext mvcContext = new AnnotationConfigWebApplicationContext();
mvcContext.register(MyConfiguration.class);
ServletRegistration.Dynamic appServlet = servletContext.addServlet("appServlet", new DispatcherServlet(mvcContext));
appServlet.setLoadOnStartup(1);
Set<String> mappingConflicts = appServlet.addMapping("/");
if (!mappingConflicts.isEmpty()) {
for (String s : mappingConflicts) {
LOGGER.error("Servlet URL mapping conflict: {}", s);
}
throw new IllegalStateException("'appServlet' cannot be mapped to '/'");
}
}
Когда я запуском Tomcat, я получаю выше IllegalStateException
, потому что apparently there is already a Servlet отображается в /
, и я могу только предположить, что это Servlet по умолчанию Tomcat. Если я игнорирую mappingConflicts, мой DispatcherServlet
не привязан к чему-либо.
Есть ли способ переопределить это сопоставление сервлетов по умолчанию с моим собственным или я застрял в сопоставлении с моим DispatcherServlet
до /*
?
This answer предлагает решение, изменяя место размещения приложения в папке webapps Catalina, но я надеялся на что-то менее навязчивое.