java - Java Server 启动时服务运行的设计

标签 java design-patterns servlet-listeners

我想启动一个服务,该服务与服务器一起启动,并且在服务器被终止之前永远不会结束。 所以首先我使用了 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");

加载 Spring 配置的 bean

关于java - Java Server 启动时服务运行的设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13855826/

相关文章:

java - ServletContextListner 在从部署描述符和项目目录中删除时仍在执行

java - 保存父对象后自动保存子对象

java - 如何使用 MVC 在 CardLayout 中的 JPanel 之间切换?

java - 是否有一种设计模式可以帮助在通用显示器上配置命令?

java - 如何通过泛型使子类型元素需要特定的子类型访问者,从而使访问者模式更具可扩展性?

hibernate - Spring3中如何访问ServletContextListener中的DAO方法

java - ServletContextListener.contextDestroyed 中的 JNDI 查找

java - java.util.Date CompareTo 与之前/之后的性能优势?

java - 帮助 switch 语句

Java BounceBall 球移动