2011-07-30 172 views
3

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

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

感谢

回答

1

如果您的应用程序自定义类和部署为一个可运行的jar和弹簧批次管理范围内不包含,则无法启动作业。您只能查看作业的状态并“杀死”其在数据库中的状态。

如果你看一下http://static.springsource.org/spring-batch-admin/reference/reference.xhtml在配置上载节结束它规定

你可以看到在工作注册表中的新条目(“测试工作”),这是 启动的进程,因为该应用程序可以参考 作业。 (乔布斯不属于可发射出的过程被执行,但 用于其JobRepository同一个数据库,所以他们表现出了 他们执行的UI。

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

我个人只是使​​用管理工具查看工作状态,并通过一些自定义页面向我提供统计信息。我离开了调度程序来运行这些工作,并且我不希望那些有权访问管理站点的人在他们什么都不知道的情况下开始工作。基本上,用它来给用户一个温暖的模糊,而不会让他们把它弄糊涂。 (留给用户找到你没有考虑到的边缘情况)

2

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

我也有类似需要像你这样的 - 包括在建的广口瓶中的应用程序需要管理的功能。我不太喜欢这样的事实,即我必须将我的作业打包为.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