如何调试ContextLoader - 上下文初始化失败和BeanCreationException

时间:2010-09-30 20:49:19

标签: java spring grails

我看到有很多关于人们解决此问题的问题的帖子: ERROR context.ContextLoader - 上下文初始化失败 org.springframework.beans.factory.BeanCreationException:

有没有办法启用调试来隔离问题?

它抱怨“没有这样的属性:getOrg for class:groovy.lang.MetaClassImpl ”但是这不是我们类中的一个,是否有某种方法可以获得与我们的代码库相关的信息?

在我们的案例中,我们部署了一个Grails 1.2.1应用程序并在Tomcat中运行得很好。然后我们停止Tomcat进行数据库备份,然后重新启动应用程序。没有环境变化的相同WAR(即,没有配置文件更改等)现在抛出此错误。我们之前也间歇性地观察到了这种行为,但是重新启动用于解决问题。

在我们的开发环境中,使用“grails prod run-app”以及“grails prod run-war”运行相同的应用程序。

stacktrace片段:

  

2010-09-30 12:10:13,391错误   context.ContextLoader - Context   初始化失败   org.springframework.beans.factory.BeanCreationException:   使用名称创建bean时出错   'messageSource':初始化   豆子失败了;嵌套异常是   org.springframework.beans.factory.BeanCreationException:   使用名称创建bean时出错   'transactionManager':无法解决   bean'sessionFactory'的引用   设置bean属性时   '的sessionFactory';嵌套异常是   org.springframework.beans.factory.BeanCreationException:   使用名称创建bean时出错   'sessionFactory':调用init   方法失败;嵌套异常是   groovy.lang.MissingPropertyException:   没有这样的属性:getOrg for class:   groovy.lang.MetaClassImpl           在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)           在org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory.doCreateBean(ReloadAwareAutowireCapableBeanFactory.java:129)           在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)           在org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:290)           在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)

<<<<<<<< snip>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Caused by: groovy.lang.MissingPropertyException: No such property: getOrg for class: groovy.lang.MetaClassImpl
        at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:49)
        at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.setProperty(ScriptBytecodeAdapter.java:485)
        at org.codehaus.groovy.grails.plugins.orm.hibernate.HibernatePluginSupport.handleLazyProxy(HibernatePluginSupport.groovy:413)
        at org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder.bindProperty(GrailsDomainBinder.java:2108)
        at org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder.createProperty(GrailsDomainBinder.java:1829)
        at org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder.createClassProperties(GrailsDomainBinder.java:1565)
        at org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder.bindJoinedSubClass(GrailsDomainBinder.java:1272)
        at org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder.bindSubClass(GrailsDomainBinder.java:1219)
        at org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder.bindSubClasses(GrailsDomainBinder.java:1186)
        at org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder.bindRoot(GrailsDomainBinder.java:1160)
        at org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder.bindClass(GrailsDomainBinder.java:1040)
        at org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsAnnotationConfiguration.secondPassCompile(GrailsAnnotationConfiguration.java:145)
        at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1148)
        at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:717)
        at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1460)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1398)

2 个答案:

答案 0 :(得分:2)

如果您为包DEBUGorg.springframework将日志记录级别设置为org.codehaus.groovy,那么您将能够获得更多详细信息。

但是有时grails有助于停止tomcat,删除worktemp目录并再次启动tomcat。

答案 1 :(得分:1)

我已经在grails 1.3.4中得到了这个,删除tomcat工作和临时目录($ CATALINA_BASE / temp,$ CATALINA_BASE / work)似乎确实解决了这个问题。