【问题标题】:Spring Batch - No bean named 'job-configurations' is definedSpring Batch - 没有定义名为“job-configurations”的bean
【发布时间】:2012-06-04 14:32:30
【问题描述】:

我正在使用一个自定义 MVC 应用程序,该应用程序依赖于他们的文档中描述的 SPring Batch,并得到了这个 SO 问题 Integrating Spring Batch Admin into an existing application 的帮助。

现在的问题是,当网络应用开始将各种 URL 映射到适当的控制器时,作业配置步骤会爆炸。

2012-06-04 10:17:54,966 INFO [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] - <Mapped URL path [/resources/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0'>
2012-06-04 10:17:55,512 INFO [org.springframework.ui.freemarker.SpringTemplateLoader] - <SpringTemplateLoader for FreeMarker: using resource loader [WebApplicationContext for namespace 'admin-servlet': startup date [Mon Jun 04 10:17:54 EDT 2012]; parent: Root WebApplicationContext] and template loader path [/WEB-INF/web/]>
2012-06-04 10:17:55,512 INFO [org.springframework.ui.freemarker.SpringTemplateLoader] - <SpringTemplateLoader for FreeMarker: using resource loader [WebApplicationContext for namespace 'admin-servlet': startup date [Mon Jun 04 10:17:54 EDT 2012]; parent: Root WebApplicationContext] and template loader path [classpath:/org/springframework/batch/admin/web/]>
2012-06-04 10:17:55,512 INFO [org.springframework.batch.admin.web.freemarker.HippyFreeMarkerConfigurer] - <ClassTemplateLoader for Spring macros added to FreeMarker configuration>
2012-06-04 10:17:55,528 INFO [org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping] - <Mapped URL path [/configuration] onto handler 'configurationHandler'>
2012-06-04 10:17:56,230 INFO [org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping] - <Mapped URL path [/job-configuration] onto handler '/job-configuration'>
...
2012-06-04 10:17:56,230 ERROR [org.springframework.web.servlet.DispatcherServlet] - <Context initialization failed>
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '/job-configuration.json': Cannot resolve reference to bean 'job-configurations' while setting bean property 'requestChannel'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'job-configurations' is defined

有人遇到过吗?该应用程序依赖于一个完全独立工作的简单 spring-batch jar,我希望它能够从该工件中提取任何需要的作业 bean。

【问题讨论】:

  • 您是否定义了“作业配置”bean?这就是 Spring 在这里出错的原因。
  • 根据已在提供的工件中定义的 spring 管理文档: org.springframework.batchspring-batch-admin-resources artifactId> ${spring.batch.resources.version}org.springframework.batchspring-batch-admin-manager artifactId> ${spring.batch.resources.version}
  • 到那时我也没有定义配置处理程序,它只是使用spring批处理管理代码库已经定义的配置处理程序

标签: spring spring-mvc spring-batch spring-batch-admin


【解决方案1】:

我向我的一些同事提出了这个问题,这似乎是我认为 Spring Batch Admin 设计中的一个缺陷,它违背了许多典型的 Spring 设计模式。

依赖的 spring 批处理管理 jar 对包括数据源在内的解决方案的上下文“了解太多”。这样做的问题是,在一个像样的 web 应用程序中,数据源可能会在运行时根据数字或环境变量(环境、数据中心、应用程序服务器)动态确定,而不像 Dave Syer's(Mysql 或 HSQL)那么简单) 方法。我已经阅读了posts in spring 论坛,但他支持这一点,几乎是对被问者的侮辱..

如果您的批处理作业使用多个数据源(即源数据库和目标数据库),情况会变得越来越复杂。而且并不像在 webapp 中加载数据源那么简单,因为所有相关的 bean 都已经与 Dave 的 HSQL 驱动程序 DS 以及相关的 .sql 文件和 init 脚本连接。

这导致我从批处理管理 jar 中覆盖了几乎所有与数据源相关的 bean,包括 jobrepository(预期)、jobExplorer、jobService 以及其他一些在 META-INF/spring/batch/override 中具有不同文件的其他 bean目录。每个文件都利用 spring 3.1 的 Profile 命名空间来加载正确的数据源,并注入到所有需要的 bean。

【讨论】:

  • 您能否在答案中发布您的覆盖文件的上下文?
  • 你能用一些代码解释一下你的答案吗?我也面临同样的问题。
【解决方案2】:

确保您的 web.xml 指定 contextConfigLocation 如下。

<servlet>
<servlet-name>Batch Servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value> 
classpath*:/org/springframework/batch/admin/web/resources/servlet-config.xml,
classpath*:/org/springframework/batch/admin/web/resources/webapp-config.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 2017-01-10
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多