严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'serverdataSource': Bean with name 'serverdataSource' has been injected into other beans [serversessionFactory] in its raw version as part of a circular reference, but has eventually been wrapped. This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching - consider using 'getBeanNamesOfType' with the 'allowEagerInit' flag turned off, for example.
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:498)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
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:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:926)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:889)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
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:578)
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)
2009-10-15 16:50:26 org.apache.catalina.core.StandardContext start
严重: Error listenerStart
2009-10-15 16:50:26 org.apache.catalina.core.StandardContext start
严重: Context [/glcollege] startup failed due to previous errors
2009-10-15 16:50:26 org.apache.catalina.core.ApplicationContext log
我的设置如下:
<!-- the transactional semantics... -->
<tx:attributes>
<!-- all methods starting with 'get' are read-only -->
<tx:method name="get*" read-only="true"/>
<tx:method name="list*" read-only="true"/>
<!-- other methods use the default transaction settings (see below) -->
<tx:method name="*" propagation="REQUIRED"/>
</tx:attributes>
[b]问题补充:[/b]
请明示,我比较初级,很想你能再说得明白一点,
[b]问题补充:[/b]
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver">
</property>
<property name="url"
value="jdbc:oracle:thin:202.118.121.112:1521:orcl">
</property>
<property name="username" value="scott"></property>
<property name="password" value="gl"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>com/gl/model/Score.hbm.xml</value>
<value>com/gl/model/Userpassword.hbm.xml</value>
<value>com/gl/model/Xuanke.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
<prop key="show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.jdbc.batch_size">20</prop>
</props>
</property>
</bean>
<!--
-->
<!-- the transactional semantics... -->
<tx:attributes>
<tx:method name="insert*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
<!--<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
事务拦截器bean需要依赖注入一个事务管理器
<property name="transactionManager" ref="transactionManager"/>
<property name="transactionAttributes">
下面定义事务传播属性
<props>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
定义BeanNameAutoProxyCreator
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
指定对满足哪些bean name的bean自动生成业务代理
<property name="beanNames">
下面是所有需要自动创建事务代理的bean
<list>
<value>mgr</value>
<value>cmgr</value>
<value>xmgr</value>
</list>
此处可增加其他需要自动创建事务代理的bean
</property>
下面定义BeanNameAutoProxyCreator所需的事务拦截器
<property name="interceptorNames">
<list>
此处可增加其他新的Interceptor
<value>transactionInterceptor</value>
</list>
</property>
</bean>
--><bean id="userpasswordDao"
class="com.gl.dao.hibernate.UserpasswordDaoHibernate" abstract="false"
lazy-init="default" autowire="default" dependency-check="default">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="mgr" class="com.gl.service.impl.UserpasswordManagerimpl"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
<property name="userpasswordDao">
<ref bean="userpasswordDao" />
</property>
</bean>
<bean id="LoginAction" class="com.gl.action.LoginAction"
abstract="false" scope="prototype" lazy-init="default"
autowire="default" dependency-check="default">
<property name="mgr">
<ref bean="mgr" />
</property>
</bean>
<bean id="scoreDao" class="com.gl.dao.hibernate.ScoreDaoHibernate"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="cmgr" class="com.gl.service.impl.ScoreManagerimpl"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
<property name="scoreDao">
<ref bean="scoreDao" />
</property>
</bean>
<bean id="ShowAction" class="com.gl.action.ShowActon"
abstract="false" lazy-init="default"
autowire="default" dependency-check="default" scope="prototype">
<property name="cmgr">
<ref bean="cmgr" />
</property>
</bean>
<bean id="xuankeDao" class="com.gl.dao.hibernate.XuankeDaoHibernate"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
<property name="pageSize" value="5" />
</bean>
<bean id="xuankemanager"
class="com.gl.service.impl.XuankeManagerimpl" abstract="false"
lazy-init="default" autowire="default" dependency-check="default">
<property name="xuankeDao">
<ref bean="xuankeDao" />
</property>
</bean>
<bean id="XuankeAction" class="com.gl.action.XuankeAction"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default" scope="prototype">
<property name="xuankemanager">
<ref bean="xuankemanager" />
</property>
</bean>
<bean id="courseaction" class="com.gl.action.courseaction"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default" scope="prototype">
<property name="xuankemanager">
<ref bean="xuankemanager" />
</property>
</bean>
</beans>
[b]问题补充:[/b]
是啊,我前一段时间做的这个项目,今天突然想加上事务可是就不行,也不知道到哪里的问题,
[b]问题补充:[/b]
在配置文件中,
这种方式我是注释掉的,应该不会冲突啊!
[b]问题补充:[/b]
我删掉了多余的注释东西,可是,还是报那个错,伤脑筋啊!!!
[b]问题补充:[/b]
请指点!!
[b]问题补充:[/b]
改了,可是,还是报那个错误!
[b]问题补充:[/b]
我找到问题的地方了,是因为我有两个applicationcontext.xml配置文件,而在两个配置文件中我都写了事务的设置,所以才报这个错误。如果有多个applicationcontext.xml文件的话,只需要在其中一个设置事务即可。希望不要犯我这样的错误了!
同时在这里谢谢[size=medium]lovewhzlq[/size]的分析,你的分析是正确的,希望以后可以和你继续交流,能留下你的QQ吗,在此结贴给分!
这导致了循环引用的注入
'serverdataSource'这个bean已经注入到了serversessionFactory这个bean中了,
你配置文件全粘出来分析
Error creating bean with name 'serverdataSource': Bean with name 'serverdataSource' has been injected into other beans [serversessionFactory] in its raw version as part of a circular reference, but has eventually been wrapped. This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching - consider using 'getBeanNamesOfType' with the 'allowEagerInit' flag turned off, for example.
仔细看这个异常说明,很明了
反正就是SPRING循环依赖导致的问题
看不出你bean具体哪里有这个问题
发现了
<!-- the transactional semantics... -->
<tx:attributes>
<tx:method name="insert*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
这种aop方式 和 定义BeanNameAutoProxyCreator
这种有冲突,这样就代理两次了
[code="java"]
[/code]
改为