2010-02-19 5 views
0

Je rencontre un problème frustrant avec mon application Grails. Je suis capable d'exécuter l'application en utilisant à la fois run-app et run-war sans aucun problème, mais quand j'essaie de déployer un conteneur, je reçois une exception que je ne suis pas sûr de savoir comment interpréter. J'ai essayé de déployer sur Glassfish, Tomcat et Jetty, et j'ai le même problème dans les trois conteneurs.Grails 1.2.0 Problèmes de déploiement: org.hibernate.MappingException

Toute aide pour comprendre ce qui pourrait causer cela, et quels problèmes sous-jacents je devrais rechercher, serait extrêmement appréciée.

journal Stack suit:

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 org.hibernate.MappingException: Type [null] is not a basic type or a domain class and cannot be mapped. Either specify a type within the [mapping] block or use a basic type (String, Integer etc.) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
     at org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory.doCreateBean(ReloadAwareAutowireCapableBeanFactory.java:124) 
     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) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
     at org.springframework.context.support.AbstractApplicationContext.initMessageSource(AbstractApplicationContext.java:714) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:404) 
     at org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext.refresh(GrailsWebApplicationContext.java:153) 
     at org.codehaus.groovy.grails.commons.spring.DefaultRuntimeSpringConfiguration.getApplicationContext(DefaultRuntimeSpringConfiguration.java:154) 
     at org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator.configure(GrailsRuntimeConfigurator.java:170) 
     at org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator.configure(GrailsRuntimeConfigurator.java:131) 
     at org.codehaus.groovy.grails.web.context.GrailsConfigUtils.configureWebApplicationContext(GrailsConfigUtils.java:102) 
     at org.codehaus.groovy.grails.web.context.GrailsContextLoader.createWebApplicationContext(GrailsContextLoader.java:68) 
     at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:192) 
     at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
     at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548) 
     at org.mortbay.jetty.servlet.Context.startContext(Context.java:136) 
     at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250) 
     at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) 
     at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467) 
     at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
     at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152) 
     at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156) 
     at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
     at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152) 
     at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
     at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
     at org.mortbay.jetty.Server.doStart(Server.java:224) 
     at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
     at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:985) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
     at java.lang.reflect.Method.invoke(Unknown Source) 
     at org.mortbay.start.Main.invokeMain(Main.java:194) 
     at org.mortbay.start.Main.start(Main.java:534) 
     at org.mortbay.start.Main.start(Main.java:441) 
     at org.mortbay.start.Main.main(Main.java:119) 
2010-02-19 09:30:18.316:WARN::Nested in 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 org.hibernate.MappingException: Type [null] is not a basic type or a domain class and cannot be mapped. Either specify a type within the [mapping] block or use a basic type (String, Integer etc.): 
org.hibernate.MappingException: Type [null] is not a basic type or a domain class and cannot be mapped. Either specify a type within the [mapping] block or use a basic type (String, Integer etc.) 
     at org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder.bindCollectionWithJoinTable(GrailsDomainBinder.java:568) 
     at org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder.bindCollectionSecondPass(GrailsDomainBinder.java:502) 
     at org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder.access$100(GrailsDomainBinder.java:66) 
     at org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder$GrailsCollectionSecondPass.doSecondPass(GrailsDomainBinder.java:207) 
     at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1163) 
     at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:329) 
     at org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsAnnotationConfiguration.secondPassCompile(GrailsAnnotationConfiguration.java:143) 
     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) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:512) 
     at org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory.doCreateBean(ReloadAwareAutowireCapableBeanFactory.java:124) 
     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) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189) 
     at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322) 
     at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1305) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1067) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511) 
     at org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory.doCreateBean(ReloadAwareAutowireCapableBeanFactory.java:124) 
     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) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189) 
     at org.codehaus.groovy.grails.orm.support.TransactionManagerPostProcessor.postProcessAfterInstantiation(TransactionManagerPostProcessor.java:81) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1017) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511) 
     at org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory.doCreateBean(ReloadAwareAutowireCapableBeanFactory.java:124) 
     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) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
     at org.springframework.context.support.AbstractApplicationContext.initMessageSource(AbstractApplicationContext.java:714) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:404) 
     at org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext.refresh(GrailsWebApplicationContext.java:153) 
     at org.codehaus.groovy.grails.commons.spring.DefaultRuntimeSpringConfiguration.getApplicationContext(DefaultRuntimeSpringConfiguration.java:154) 
     at org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator.configure(GrailsRuntimeConfigurator.java:170) 
     at org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator.configure(GrailsRuntimeConfigurator.java:131) 
     at org.codehaus.groovy.grails.web.context.GrailsConfigUtils.configureWebApplicationContext(GrailsConfigUtils.java:102) 
     at org.codehaus.groovy.grails.web.context.GrailsContextLoader.createWebApplicationContext(GrailsContextLoader.java:68) 
     at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:192) 
     at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
     at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548) 
     at org.mortbay.jetty.servlet.Context.startContext(Context.java:136) 
     at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250) 
     at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) 
     at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467) 
     at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
     at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152) 
     at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156) 
     at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
     at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152) 
     at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
     at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
     at org.mortbay.jetty.Server.doStart(Server.java:224) 
     at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
     at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:985) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
     at java.lang.reflect.Method.invoke(Unknown Source) 
     at org.mortbay.start.Main.invokeMain(Main.java:194) 
     at org.mortbay.start.Main.start(Main.java:534) 
     at org.mortbay.start.Main.start(Main.java:441) 
     at org.mortbay.start.Main.main(Main.java:119) 

Répondre

0

Je l'ai trouvé. Un bloc de mappage statique a provoqué l'erreur.

static mapping { contents type 'text' } 
1

J'ai eu une erreur semblable. J'ai nettoyé mon application (grails propres) avant de générer la guerre et le problème est parti. Peut-être qu'il y avait des références à d'anciennes classes de domaine, je ne sais pas.

1

Je pleure dans le même problème, pour moi c'est arrivé une fois que je suis passé à Grails 1.2. La solution n'était pas si évidente, le stacktrace ne l'a certainement pas éclairé.

Vous ne pouvez pas avoir d'objets de domaine avec des relations telles que hasMany déclarées dans le même fichier. Chaque objet de domaine doit être déclaré dans un fichier séparé.

Voir http://www.manning-sandbox.com/message.jspa?messageID=80964

0

Le problème semble soulever dans un ensemble de conditions très différentes.

Il m'est arrivé de mettre à jour une application de grails 1.1 vers grails 1.2: dans ce cas le trigger était une définition enum dans le même fichier que la classe de domaine utilisant l'enum: cela n'a pas causé de problème sous 1.1, à 1.2 Je suis le tristement célèbre:

Error creating bean with name 'sessionFactory': Invocation of init method failed; 
nested exception is org.hibernate.MappingException: Type [null] is not a basic type or a domain class and cannot be mapped. 
Either specify a type within the [mapping] block or use a basic type (String, Integer etc.) 

mettre l'ENUM dans un fichier séparé résolu le problème.

Il semble donc que Grails 1.2 est un peu plus pointilleux sur ce qui se passe dans un fichier source de la classe de domaine, le respect de 1.1 ....

Questions connexes