Spring batch Spring batch应用程序与Spring batch admin的集成

Spring batch Spring batch应用程序与Spring batch admin的集成,spring-batch,spring-batch-admin,Spring Batch,Spring Batch Admin,我开发了一个spring批处理应用程序,它使用批处理/shell脚本作为可执行jar部署。它很好用 最近我读到了关于SpringBatch管理应用程序发布的文章。根据他们的文档,他们说您必须指向job-context.xml,这将允许管理SpringBatch应用程序从admin应用程序启动、重新启动和停止。现在我的问题是,我是否必须将job-context.xml放在jar之外,或者确切的步骤是什么,我对这种配置感到困惑。 关于这方面的任何见解都非常有用,顺便说一下,我正在使用SpringBa

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

最近我读到了关于SpringBatch管理应用程序发布的文章。根据他们的文档,他们说您必须指向job-context.xml,这将允许管理SpringBatch应用程序从admin应用程序启动、重新启动和停止。现在我的问题是,我是否必须将job-context.xml放在jar之外,或者确切的步骤是什么,我对这种配置感到困惑。 关于这方面的任何见解都非常有用,顺便说一下,我正在使用SpringBatch 2.1


谢谢

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

如果您查看配置上载部分的末尾,它会指出

您可以在作业注册表中看到一个新条目(“测试作业”),它是 可在进程内启动,因为应用程序引用了 工作。(不可启动的作业在进程外执行,但 将同一数据库用于其JobRepository,因此它们显示为 它们在UI中执行。)

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


我个人只是使用管理工具来查看工作状态,并通过一些自定义页面向我提供统计信息。我让调度程序运行作业,我不想让那些有权访问管理站点的人在对作业一无所知的情况下启动作业。基本上,使用它给用户一个温暖的模糊,而不允许他们弄脏它。(让用户自行查找您没有考虑的边缘案例)

Spring Batch admin应用程序是一个很好的参考实现,具有高度的可定制性。所有接口实现都可以使用您自己的类通过SpringDI替换。UI也是模板驱动的(我认为是FreeMarker),因此可以定制以显示相关信息、更改外观等

我有一个类似的需求,就像你的一样——需要在一个构建为jar的应用程序中包含管理功能。我不太喜欢我不得不将我的工作打包成一个.war文件。相反,我从SpringBatch管理源中提取了相关配置,并创建了一个在嵌入式Jetty服务器上运行的非文件系统部署

请参见此处的屏幕截图:

此处提供了源、配置等:。这个项目实际上创建了一个.jar而不是.war