我看到有很多关于人们解决此问题的问题的帖子: 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)
答案 0 :(得分:2)
如果您为包DEBUG
和org.springframework
将日志记录级别设置为org.codehaus.groovy
,那么您将能够获得更多详细信息。
但是有时grails有助于停止tomcat,删除work
和temp
目录并再次启动tomcat。
答案 1 :(得分:1)
我已经在grails 1.3.4中得到了这个,删除tomcat工作和临时目录($ CATALINA_BASE / temp,$ CATALINA_BASE / work)似乎确实解决了这个问题。