Spring:有一个简单的非网络教程吗?

时间:2009-08-27 16:15:59

标签: java spring jboss

我正在尝试创建一个Spring应用程序(不是Web应用程序)来执行一些简单的任务。最终他们将与网络上的其他一些Spring应用程序挂钩,但是现在我保持简单。我有一个CheckForNewItems类(扩展Timer),它被配置为每10秒运行一次。

我可以通过编程方式调用它来确认它运行:

public class Tester {

  public static ApplicationContext context;

  private void loadContext() {
    String filename = "beans.xml";
    context = new FileSystemXmlApplicationContext(filename);
  }

  public static void main(String[] args) {
    Tester test = new Tester();
    test.loadContext();
    CheckNewItemsTask task = (CheckNewItemsTask)context.getBean("checkNewItemsTask");
  }
}

运行此按预期工作,task.run()每10秒调用一次。现在我需要弄清楚如何将它部署到JBoss或Tomcat服务器,以便自动开始运行任务。

我发现的大多数教程只描述了如何运行Spring MVC和servlet,而不是一个独立的应用程序。有谁知道更好吗?

干杯,罗布。

2 个答案:

答案 0 :(得分:6)

您不需要JBoss或Tomcat来做到这一点。如果该应用程序无头且您无意添加用户界面,请在Windows上考虑使用jsvc进行unix或procrun。如果您需要能够监视和控制应用程序并且不需要适当的UI来执行此操作,您可能需要查看JMX。这将在没有Java EE堆栈其余部分的守护进程上运行。

如果你有一个maven项目并想要一个简单的方法将它变成一个可部署的守护进程应用程序,你可以使用maven appassembler自动创建一个可部署的守护进程,设置应用程序的目录结构,脚本启动和停止,库和配置文件。

答案 1 :(得分:1)

您需要在部署时设置为自动启动的servlet。然后,servlet可以调用“Tester”类来触发“独立”初始化过程。

如果您没有servlet(或可能是其他服务器相关的进程)引用您的代码,那么您的初始化过程将永远不会运行。