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

标签 java spring grails

我看到很多关于人们在解决此问题时遇到的各种问题的帖子: 错误 context.ContextLoader - 上下文初始化失败 org.springframework.beans.factory.BeanCreationException:

有没有办法打开调试来隔离问题?

它提示“没有这样的属性:类的 getOrg: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 ERROR context.ContextLoader - Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageSource': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is groovy.lang.MissingPropertyException: No such property: getOrg for class: groovy.lang.MetaClassImpl at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) at org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory.doCreateBean(ReloadAwareAutowireCapableBeanFactory.java:129) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450) at org.springframework.beans.factory.support.AbstractBeanFactory$1.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 就会有所帮助。

关于java - 如何调试 ContextLoader - 上下文初始化失败和 BeanCreationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3834733/

相关文章:

java - 避免 Hibernate LazyInitializationExceptions 的策略

java - Spring 中的嵌套传播

java - 使用for循环时字符串越界

Java "unchecked or unsafe operations"和Java自己的类

spring - 无法使用 Spring Boot thymeleaf 加载图像

java - 如何在 Spring 中运行 @PostConstruct 非阻塞?

grails - 如何从 config.groovy 中的 message.properties 读取消息

grails - 将搜索限制到特定域

grails - Maven无法构建Grails项目-AsyncException,RegexSupport?

java - 如何判断当前 session 是否脏?