Я создаю приложение Grails (1.3.4), настроенное с помощью плагина grails tomcat-1.3.4 и использующее Spring (3.0.3RELEASE), но использующее существующий файл Spring applicationContext.xml.Я скопировал соответствующие части старого файла в файл, сгенерированный Grails (чуть ниже bean-компонента characterEncodingFilter).Убедившись, что все необходимые файлы jar находятся на пути к классам, и что в именах компонентов нет конфликтов (я обнаружил, что dataSource уже использовался, если существует файл DataSource.groovy, поэтому я удалил его, чтобы разрешить это), ястолкнулся с IllegalStateException.Трассировка стека и часть журнала отладки приводят к следующему:
2010-09-30 15:29:36,131 [main] DEBUG xml.DefaultDocumentLoader - Using JAXP provider [com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl]
2010-09-30 15:29:36,143 [main] DEBUG support.DefaultListableBeanFactory - Returning cached instance of singleton bean 'grailsApplication'
2010-09-30 15:29:36,149 [main] ERROR context.GrailsContextLoader - Error executing bootstraps: postProcessBeanDefinitionRegistry already called for this post-processor
java.lang.IllegalStateException: postProcessBeanDefinitionRegistry already called for this post-processor
at org.grails.tomcat.TomcatServer.start(TomcatServer.groovy:164)
at grails.web.container.EmbeddableServer$start.call(Unknown Source)
at _GrailsRun_groovy$_run_closure5_closure12.doCall(_GrailsRun_groovy:158)
at _GrailsRun_groovy$_run_closure5_closure12.doCall(_GrailsRun_groovy)
at _GrailsSettings_groovy$_run_closure10.doCall(_GrailsSettings_groovy:280)
at _GrailsSettings_groovy$_run_closure10.call(_GrailsSettings_groovy)
at _GrailsRun_groovy$_run_closure5.doCall(_GrailsRun_groovy:149)
at _GrailsRun_groovy$_run_closure5.call(_GrailsRun_groovy)
at _GrailsRun_groovy.runInline(_GrailsRun_groovy:116)
at _GrailsRun_groovy.this$4$runInline(_GrailsRun_groovy)
at _GrailsRun_groovy$_run_closure1.doCall(_GrailsRun_groovy:59)
at RunApp$_run_closure1.doCall(RunApp.groovy:33)
at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:381)
at gant.Gant$_dispatch_closure7.doCall(Gant.groovy:415)
at gant.Gant$_dispatch_closure7.doCall(Gant.groovy)
at gant.Gant.withBuildListeners(Gant.groovy:427)
at gant.Gant.this$2$withBuildListeners(Gant.groovy)
at gant.Gant$this$2$withBuildListeners.callCurrent(Unknown Source)
at gant.Gant.dispatch(Gant.groovy:415)
at gant.Gant.this$2$dispatch(Gant.groovy)
at gant.Gant.invokeMethod(Gant.groovy)
at gant.Gant.executeTargets(Gant.groovy:590)
at gant.Gant.executeTargets(Gant.groovy:589)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:115)
Обновление: если я закомментирую следующие строки в верхней части моего applicationContext.xml, он перейдет в бесконечный цикл.
<context:annotation-config/>
<context:property-placeholder location="WEB-INF/config.properties"/>
Если я также закомментирую свои строки импорта, он будет работать как ожидалось.Строки импорта:
<import resource="conf/membershipData.xml"/>
<import resource="conf/membershipServices.xml"/>
/ Update
Прослеживая через отладчик, я заметил, что это происходит во время обновления applicationContext во время запуска (DefaultRuntimeSpringConfiguration: 154).
В случае необходимости я использую IntelliJ IDEA 9, который обрабатывает все вставки jar перед командой run-app.
Спасибо за вашу помощь.