我想启动一个服务,该服务与服务器一起启动,并且在服务器被终止之前永远不会结束。 所以首先我使用了 ServletContextListner 类,在该类中我实现了我的逻辑部分以使用
运行该方法while(true){
try{ // do the jobs }
catch(Exception e){}
}
但是后来觉得在Listener类实现这个工作不太好。 然后我转移到一个 ServiceManager 类并做同样的工作,但在使用 Spring 注入(inject)属性方面给了我一个优势,这在 Listener 类中是不可能的。
但基本问题是如何更好地/从何处调用此类并调用无限运行的 startService 方法。
public void contextInitialized(ServletContextEvent event) {
logger.info(" *** START MyListener ****");
context = event.getServletContext();
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("spring/applicationContext.xml");
MyServiceManager serviceManager = (MyServiceManager) ctx.getBean("myServiceManager");
serviceManager.startService();
logger.info(" *** END MyListener ****");
}
或任何想法如何调用/实现此类服务以在没有任何抽象的情况下永远在服务器中运行[在任何情况下,除非服务器停止,否则不应终止]
最佳答案
这是一个重复的问题,请参阅: Background process in Servlet
因此您可以按照该答案中的解释进行操作,如果您需要使用 applicationContext.getBean("yourBean");
关于java - Java Server 启动时服务运行的设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13855826/