3

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

现在,最近我读到了有关 Spring Batch Admin 应用程序发布的信息。根据他们的文档,他们说您必须指向 job-context.xml,这将允许管理 Spring Batch 应用程序从管理应用程序启动、重新启动和停止。现在我的问题是我是否必须将我的 job-context.xml 保存在 jar 之外,或者确切的步骤是什么,我对这个配置感到困惑。对此的任何见解都非常有用,顺便说一句,我使用的是 spring batch 2.1。

谢谢

4

2 回答 2

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

于 2012-12-18T04:22:43.657 回答
1

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

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

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

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

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

于 2012-10-25T02:07:26.057 回答