Spring Boot - Beste start in einen hintergrund-thread auf Bereitstellung

Ich habe eine Spring-Boot-Anwendung bereitgestellt, die in Tomcat-8. Wenn die Anwendung startet, möchte ich erst ein worker-Thread im hintergrund, der Frühling Autowires mit ein paar Abhängigkeiten. Derzeit habe ich dieses :

@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();
    }

In meinem Andockfenster test environment das funktioniert gut - aber wenn ich Sie stellen diese auf meinem Linux (Debian Jessie, Java 8), die Gastgeber in Tomcat 8, die ich nie finden Sie in der "Start-Abonnenten Thread" Nachricht (und den thread nicht gestartet).

  • So kann es laufen als standalone-server auch ohne Tomcat.
  • und was ist, ruft diese main im tomcat Umfeld?
  • Mit einer Methode annotiert @Bean in MyServer Klasse?
  • Sie sind sich der Tatsache bewusst, dass ein thread in einer EE Umgebung ist grundsätzlich eine schlechte Sache zu tun? Erstellen Sie einfach ein service im Frühjahr mit Anmerkungen versehen Sie es mit @Scheduled und laufen lassen, auf bestimmte Intervalle. Oder noch besser, warum brauchst du diesen thread? In der Regel gibt es bessere (und mehr Frühling integrierten) Lösungen.
InformationsquelleAutor Gandalf | 2016-09-28
Schreibe einen Kommentar