我想创建一个Java deamon进程(MQ处理器),它既可以从命令行运行(java -jar ...),也可以作为Tomcat内的JEE容器中的WAR运行。它应该在WebApp启动后自动启动。这个应用程序不会有WebGUI。
似乎我可以使用 SpringBoot 。 SpringBoot可以创建WAR和JAR文件。
我的问题是:我应该将SpringBoot ApplicationRunner
用于便携式守护程序吗?
使用SpringBoot创建可移植(CLI / WebApp)守护进程的最佳实践/方法是什么?
这是如何在幕后工作的?如果我使用ApplicationRunner并创建一个WAR,SpringBoot是否会创建一个 Servlet ?
的Tx
答案 0 :(得分:0)
ApplicationRunner
是Spring Boot 1.4中的新功能。它类似于Spring Boot 1.3的CommandLineRunner
。它不涉及Application上下文的连接,因为接口不负责在WAR部署中创建任何Servlet。以下是将您的应用部署为WAR的详细信息:
http://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
SpringBootServletInitializer
将创建servlet。
现在我不确定你是如何设置MQ处理器的,但是如果它连接成一个bean并且有一些侦听线程用于队列中的消息,那么你真的不需要ApplicationRunner
。您只需要将处理器连接为bean并在其上添加@PostConstruct
注释,以便您可以启动侦听器线程。如果您无法控制bean上的注释,那么您可以使用ApplicationRunner
并将Autowired
与处理器bean一起使用。然后跑步者将启动监听器线程。