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

我看到有很多关于人们解决这个问题的问题的post: 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”。

堆栈跟踪片段:

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

<<<<<<<>>>>>>>>>>>>>>>>>>>>>>

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) 

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

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

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