У меня есть приложение Spring Boot, развернутое в Tomcat 8. Когда приложение запускается, я хочу запустить рабочий поток в фоновом режиме, который Spring Autowires с некоторыми зависимостями. В настоящее время у меня есть это:Spring Boot - лучший способ начать фоновый поток при развертывании
@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan
public class MyServer extends SpringBootServletInitializer {
public static void main(String[] args) {
log.info("Starting application");
ApplicationContext ctx = SpringApplication.run(MyServer.class, args);
Thread subscriber = new Thread(ctx.getBean(EventSubscriber.class));
log.info("Starting Subscriber Thread");
subscriber.start();
}
В моей тестовой Docker среде это работает просто отлично - но когда я раскрываю это мой Linux хост (Debian Jessie, Java 8) в Tomcat 8 Я никогда не видел «Запуск подписчика тему» сообщение (и поток не запущен).
Читали ли вы Javadocs для http://docs.spring.io/spring-boot/docs/current/api /org/springframework/boot/context/web/SpringBootServletInitializer.html - Я не понимаю, почему у вас будет метод 'main'. –
Таким образом, он может работать как автономный сервер, без Tomcat. – Gandalf
и что вызывает этот 'main' в среде' tomcat'? –