Удалите сервлет внешнего диспетчера и используйте встроенный в весеннюю загрузку

Недавно мы перешли на Spring Boot 1.5.4 из Spring MVC, мы переместили сервлет диспетчера из web.xml в bean-компонент, но теперь мы хотим удалить этот явный сервлет диспетчера и использовать встроенный. Когда мы удалили этот bean-компонент, развернули приложение на внешнем сервере tomcat и попытались получить доступ к API-интерфейсам, мы получили ошибку 404. У нас есть пользовательская конфигурация в нашем приложении, которое также является многомодульным, поэтому мы не можем включить @EnableAutoConfiguration. Пожалуйста, помогите мне удалить диспетчер сервлетов и включить встроенный диспетчер весенней загрузки. Примечание: у некоторых также есть несколько других сервлетов, таких как DwrServlet и CXFServlet.

Основной класс

@SpringBootConfiguration
@ComponentScan(lazyInit = true, basePackages = {"com.abc"})
@ImportResource({
        "classpath:spring/applicationContext-resources.xml",
        "classpath:common-applicationContext-dao.xml",
        "classpath:common-applicationContext-service.xml",
        "classpath:common-applicationContext.xml",
        "classpath:core-applicationContext.xml",
        "classpath:spring/applicationContext-validation.xml",
        "classpath:spring/security.xml",
        "classpath:custom-monitoring-spring.xml"})
@EnableAutoConfiguration
public class WebApplication extends SpringBootServletInitializer {

  public WebApplication() {
        setRegisterErrorPageFilter(false);
  }

  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(WebApplication.class);
  }

  @Override
  public void onStartup(ServletContext servletContext) throws ServletException {
    servletContext.setInitParameter("javax.servlet.jsp.jstl.fmt.localizationContext", "ApplicationResources");
    servletContext.setInitParameter("javax.servlet.jsp.jstl.fmt.fallbackLocale", "en");
    super.onStartup(servletContext);
  }

  public static void main(String[] args) throws Exception {
        SpringApplication.run(WebApplication.class, args);
    }
}

Бин Dispatcher Servlet, который я хочу удалить

@Bean
public ServletRegistrationBean dispatcherServlet() {
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean();
        servletRegistrationBean.setServlet(new DispatcherServlet());
        servletRegistrationBean.setName("dispatcher");
        servletRegistrationBean.setLoadOnStartup(1);
        servletRegistrationBean.addInitParameter("contextAttribute", "org.springframework.web.context.WebApplicationContext.ROOT");
        servletRegistrationBean.addUrlMappings("/app/*");
        return servletRegistrationBean;
}

0 ответов

Другие вопросы по тегам