2009-10-15 3 views
10

Ich verwende Spring und Hibernate für die Konfiguration mit mysql db.org.springframework.beans.factory.BeanCurrentlyInCreationException: Fehler beim Erstellen Bean mit dem Namen 'SessionFactory'

Meine we.xml Datei hat folgenden Code:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>WEB-INF/classes/applicationcontext.xml</param-value> 
    </context-param> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

Meine applicationContext.xml Datei hat folgende Importe:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
"http://www.springframework.org/dtd/spring-beans.dtd"> 
<beans default-autowire="autodetect"> 
    <import resource="spring-config/spring-common-applicationContext.xml"/> 
    <import resource="spring-config/spring-db-applicationContext.xml"/> 
    <import resource="spring-config/spring-dao-applicationContext.xml"/> 
    <import resource="spring-config/spring-processor-applicationContext.xml"/> 
    <import resource="spring-config/spring-security-processor-applicationContext.xml"/> 
    <import resource="spring-config/spring-service-applicationContext.xml"/> 
    <import resource="spring-config/spring-security-service-applicationContext.xml"/> 
</beans> 

Meine Feder-db-applicationContext.xml folgenden Code:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
"http://www.springframework.org/dtd/spring-beans.dtd"> 
<beans default-autowire="autodetect"> 

<!-- Hibernate session factory --> 
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <constructor-arg index="0"> 
      <value>${driverClassName}</value> 
     </constructor-arg> 
     <constructor-arg index="1"> 
      <value>${url}</value> 
     </constructor-arg> 
     <constructor-arg index="2"> 
      <value>${username}</value> 
     </constructor-arg> 
     <constructor-arg index="3"> 
      <value>${password}</value> 
     </constructor-arg> 

    </bean> 

    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> 
     <property name="sessionFactory"> 
      <ref bean="sessionFactory"/> 
     </property> 
    </bean> 

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
     <property name="dataSource"> 
      <ref bean="dataSource"/> 
     </property> 
     <property name="configLocation"> 
      <value>WEB-INF/classes/hibernate.cfg.xml</value> 
     </property> 
     <property name="configurationClass"> 
      <value>org.hibernate.cfg.AnnotationConfiguration</value> 
     </property> 

     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">${dialect}</prop> 
       <prop key="hibernate.show_sql">true</prop> 
       <!--<prop key="hibernate.hbm2ddl.auto">create</prop>--> 
      </props> 
     </property> 
    </bean> 

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
     <property name="sessionFactory"> 
      <ref bean="sessionFactory"/> 
     </property> 
    </bean> 

    <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> 
     <property name="transactionManager" ref="transactionManager"/> 
     <property name="transactionAttributeSource"> 
      <value> com.sufalam.mailserver.business.service.IUserProcessor.*=PROPAGATION_REQUIRED,-java.lang.Exception 
      </value> 
     </property> 
    </bean> 
</beans> 

Ich habe entsprechende lib enthalten. Nun zu der Zeit das Projekt laufen, ich bin immer folgende Fehlermeldung:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sessionFactory' defined in URL [jndi:/localhost/MailServerV2/WEB-INF/classes/spring-config/spring-db-applicationContext.xml]: Unsatisfied dependency expressed through bean property 'eventListeners': : Error creating bean with name 'transactionManager' defined in URL [jndi:/localhost/MailServerV2/WEB-INF/classes/spring-config/spring-db-applicationContext.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'sessionFactory': FactoryBean which is currently in creation returned null from getObject; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in URL [jndi:/localhost/MailServerV2/WEB-INF/classes/spring-config/spring-db-applicationContext.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'sessionFactory': FactoryBean which is currently in creation returned null from getObject 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:1141) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1034) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:289) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:286) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:188) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:526) 
     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:730) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:387) 
     at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:270) 
     at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) 
     at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
     at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934) 
     at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429) 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526) 
     at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:630) 
     at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:556) 
     at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:491) 
     at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1206) 
     at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:314) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
     at org.apache.catalina.core.StandardHost.start(StandardHost.java:722) 
     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
     at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
     at org.apache.catalina.core.StandardService.start(StandardService.java:516) 
     at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
     at org.apache.catalina.startup.Catalina.start(Catalina.java:583) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 
     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in URL [jndi:/localhost/MailServerV2/WEB-INF/classes/spring-config/spring-db-applicationContext.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'sessionFactory': FactoryBean which is currently in creation returned null from getObject 
     at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328) 
     at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1299) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1061) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:289) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:286) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:188) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:807) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:735) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:666) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:1126) 
     ... 37 more 
Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'sessionFactory': FactoryBean which is currently in creation returned null from getObject 
     at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:157) 
     at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:109) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1397) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:243) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:188) 
     at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322) 
     ... 50 more 

Kann jemand irgendwelche Lösungen haben, warum meine session Bean geben Fehler?

Vielen Dank im Voraus ...

Antwort

12

Frühling Ihnen genau sagen, was das Problem ist, man muss nur das Protokoll und verschachtelte Fehlermeldung lesen:

Kann nicht Bezug auf Bohne lösen ‚session‘ beim Setzen der Bean-Eigenschaft 'sessionFactory'; verschachtelte Ausnahme ist org.springframework.beans.factory.BeanCurrentlyInCreationException: Fehler beim Erstellen der Bohne mit dem Namen ‚session‘: FactoryBean, die derzeit in der Schöpfung zurückgegeben null von getObject

Ein bisschen Google Suche läßt vermuten, dass dieser Fehler Nachricht ist in der Regel das Ergebnis von a circular dependency, und führte auch zu a mailing list post that recommends Entfernen default-autowire="detect" von Ihrem <beans> Element.

+1

Hallo, Danke für die Antwort .. Eigentlich habe ich schon Google suchen und ich habe die Lösung auch .. Aber ich war etwas falsch bei der Bereitstellung meines Projekts in Tomcat .. Also, ich wusste nicht die Änderungen wendet an oder nicht ... Jetzt habe ich dieses Problem mit Ihren gegebenen Lösungen nur gelöst ... Vielen Dank. – Nirmal

Verwandte Themen