OpenLiberty 18.0.0.3 поддерживает автоматическое отключение встроенного контейнера Tomcat.Однако это не работает, когда приложение SpringBoot содержит EmbeddedServletContainerFactory @Bean в классе приложения SpringBoot.
Как отключить этот EmbeddedServletContainerFactory @Bean с помощью внешнего файла конфигурации / xml или другого, так что Liberty можетпереопределить встроенный контейнер?
package com.mw.springboot.jaxws;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class SpringCxfApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCxfApplication.class, args);
}
// Register Servlet
@Bean
public ServletRegistrationBean servletRegistrationBean() {
ServletRegistrationBean bean = new ServletRegistrationBean(new MyServlet(), "/myServlet");
return bean;
}
// how can this be disabled through external configuration?
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory factory =
new TomcatEmbeddedServletContainerFactory();
return factory;
}
}
Сообщается о следующих ошибках:
88856 --- [cat-startStop-1] org.apache.catalina.core.ContainerBase
: дочерний контейнер не был запущен во время запуска
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: не удалось запустить компонент [StandardEngine [Tomcat] .StandardHost [localhost] .TomcatEmbeddedContext [/ path]] на java.util.concurrent.FutureTask.report (FutureTask.java:122) [na: 1.8.0_144]