Spring批处理应用程序与spring批处理管理器集成

时间:2011-07-30 00:53:58

标签: spring-batch spring-batch-admin

我开发了一个Spring批处理应用程序,它使用批处理/ shell脚本部署为可执行jar。它工作正常。

最近我读到了关于Spring批量管理应用程序发布的内容。根据他们的文档,他们说你必须指向job-context.xml,这将允许管理从管理员应用程序启动,重新启动和停止的spring批量应用程序。现在我的问题是我必须将我的job-context.xml保存在jar之外或者确切的步骤是什么,我对这个配置感到困惑。 任何有关这方面的见解都是非常有用的,就像我使用spring batch 2.1。

由于

2 个答案:

答案 0 :(得分:2)

Spring Batch管理应用程序是一个很好的参考实现,并且可以高度自定义。可以使用您自己的类通过Spring DI替换所有接口实现。 UI也是模板驱动的(我认为是FreeMarker)因此可以定制以显示相关信息,改变皮肤等。

我有类似于你的需求 - 需要管理员功能包含在内置为jar的应用程序中。我不太喜欢我必须将我的工作打包为.war文件的事实。相反,我从Spring Batch Admin源中提取了相关配置,并创建了一个可以在文件系统上运行并在嵌入式Jetty服务器上运行的部署。

请参见此处的屏幕截图:https://github.com/regunathb/Trooper/wiki/Trooper-Batch-Web-Console

此处提供了来源,配置等:https://github.com/regunathb/Trooper/tree/master/batch-core。这个项目实际上创建了一个.jar而不是.war

答案 1 :(得分:1)

如果您的应用程序具有自定义类并且部署为可运行的jar并且未包含在spring批处理管理器中,则无法启动作业。您只能查看作业的状态并“杀死”它们在数据库中的状态。

如果您查看“配置上传”部分末尾的http://static.springsource.org/spring-batch-admin/reference/reference.xhtml,则说明

  

您可以在作业注册表中找到一个新条目(“test-job”)   可以在进程中启动因为应用程序有引用   工作。 (不可启动的作业是在进程外执行的,但是   为其JobRepository使用了相同的数据库,因此它们显示出来   他们在UI中执行。

如果您的作业是严格可配置的作业,因为您只使用XML来定义它们,并且不需要执行任何自定义项目读取器/处理器/编写器或其他自定义类,那么您可以上载作业XML,它将可以在管理站点内运行。如果你有自定义类,那么根据我的经验,你必须在你的web应用程序中部署spring批处理应用程序,然后上传包含你想要单独运行的作业的XML。

我个人刚刚使用管理工具查看作业状态,并通过一些自定义页面向我提供统计信息。我离开调度程序来运行作业,我不希望有权访问管理站点的人在他们对此一无所知的情况下开始工作。基本上,用它来给用户一个温暖的模糊,而不让它们搞砸。 (留给用户查找您未考虑的边缘案例)