首页 文章

Spring批量应用程序与spring batch admin集成

提问于
浏览
3

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

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

谢谢

2 回答

  • 1

    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

  • 2

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

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

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

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

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

相关问题