2012-06-04 5 views
4

Я использую пользовательское приложение MVC, которое имеет зависимости от пакета SPring, как описано в их документации, и с помощью этого вопроса SO Integrating Spring Batch Admin into an existing application.Spring Batch - не определено bean с именем 'job-configuration'

Проблема заключается в том, что, когда веб-приложение начинает сопоставлять различные 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 

Любое сталкивается с этим? Приложение имеет зависимости от простой весенне-пакетной банки, которая работает полностью изолированно, и я ожидаю, что она вытащит из этого артефакта любые необходимые рабочие бобы.

+0

У вас есть определенная конфигурация 'jobs-configuration'? Вот что такое Весна здесь. –

+0

Согласно админ документации пружинных, который уже определен в пределах предоставленных артефактов: \t \t \t \t \t org.springframework.batch \t \t \t весна-Batch-администратора-ресурсы \t \t \t \t \t \t $ {spring.batch.resources.version} \t \t \t \t \t \t \t org.springframework.batch \t \t \t весна-партия-администратор-менеджер \t \t \t $ {spring.batch.resources.версия} \t \t Eddie

+0

В этот момент я не определю configurationHandler либо, он просто использует один уже определенный пружинные пакетного администратор базы коды – Eddie

ответ

1

Я поднял этот вопрос до некоторых из моих коллег, и, похоже, это то, что я считаю недостатком в дизайне весеннего администратора партии, который противоречит многим типичным шаблонам Spring.

Зависимый весенний банд администратора «знает слишком много» о контексте решения, включая источник данных. Проблема заключается в том, что в приличном веб-приложении источник данных может динамически определяться во время выполнения на основе числа или переменных окружения (среда, датацентр, сервер приложений) и не так прост, как подход Dave Syer's (Mysql или HSQL) , Я прочитал posts in spring форум, где он стоит на этом, однако, граничащие с оскорблениями допрашиваемого.

Все сложнее, если ваше пакетное задание использует несколько источников данных (то есть исходные и целевые БД). И было не так просто, как просто загрузить источник данных в webapp, потому что все связанные с ним компоненты уже были связаны с драйвером DSL от Dave и связанными с ним файлами .sql и скриптами инициализации.

И это привело к тому, что я заменил по существу каждый компонент, связанный с источником данных, из бакса администрирования партии, включая jobrepository (expected), jobExplorer, jobService и несколько других с отдельным файлом в META-INF/spring/batch/переопределить каталог. Каждый файл использует пространство имен профилей Spring 3.1 для загрузки соответствующего источника данных и ввода всех необходимых компонентов.

+1

Не могли бы вы опубликовать контекст файла переопределения в ответе, пожалуйста? – emeraldjava

+1

Не могли бы вы объяснить свой ответ немного больше кодом? Я столкнулся с той же проблемой. –