浏览 1777 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2007-12-20
原文链接:http://www.ibm.com/developerworks/cn/java/j-genericdao.html
这里的源文件里有个类FinderIntroductionInterceptor是implements org.springframework.aop.IntroductionInterceptor接口的,如果在applicationContext.xml配置了该bean的定义:<bean id="finderIntroductionAdvisor" class="genericdao.finder.impl.FinderIntroductionAdvisor" />,用<aop-config>声明方式配置事务就会报错。如果去掉该BEAN的定义就可以或着去掉<aop-config>也可以通过。不清楚到底是什么问题,有知道的大侠麻烦解答下,谢谢! 附件里是原文(另存为的网页)+源码(j-genericdao.zip),jar包太多不能一并上传。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2007-12-20
这是我的配置文件 就是在源码基础上修改添加了事务控制就报错了
去掉 <aop:config> <aop:pointcut id="serviceOperation" expression="execution(* com.kxdsoft.pms.persistence.department.IDepartmentDAO.*(..))" /> <aop:advisor pointcut-ref="serviceOperation" advice-ref="txAdvice" /> </aop:config> 就可以了. 或者去掉: <bean id="finderIntroductionAdvisor" class="genericdao.finder.impl.FinderIntroductionAdvisor" /> finderIntroductionAdvisor是实现了org.springframework.aop.IntroductionInterceptor接口的 也可以 是不是它们之间有冲突? <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" 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="namingStrategy" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"> <property name="staticField"> <value> org.hibernate.cfg.ImprovedNamingStrategy.INSTANCE </value> </property> </bean> <bean id="extendedFinderNamingStrategy" class="genericdao.finder.impl.ExtendedFinderNamingStrategy" /> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"> </property> <property name="url" value="jdbc:oracle:thin:@192.168.0.3:1521:powernet"> </property> <property name="username" value="powernet"></property> <property name="password" value="powernet"></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="namingStrategy"> <ref bean="namingStrategy" /> </property> <property name="dataSource"> <ref bean="dataSource"></ref> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.Oracle9iDialect </prop> <prop key="show_sql">true</prop> </props> </property> <property name="mappingResources"> <list> <value> com/persistence/department/SysDepartment.hbm.xml </value> </list> </property> </bean> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="get*" read-only="true" /> <tx:method name="list*" read-only="true" /> <tx:method name="find*" read-only="true" /> <tx:method name="*" /> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut id="serviceOperation" expression="execution(* com.persistence.department.IDepartmentDAO.*(..))" /> <aop:advisor pointcut-ref="serviceOperation" advice-ref="txAdvice" /> </aop:config> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <!-- Dao Layer generic config--> <bean id="finderIntroductionAdvisor" class="genericdao.finder.impl.FinderIntroductionAdvisor" /> <bean id="abstractDaoTarget" class="genericdao.impl.GenericDaoHibernateImpl" abstract="true"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> <property name="namingStrategy"> <ref bean="extendedFinderNamingStrategy" /> </property> </bean> <bean id="abstractDao" class="org.springframework.aop.framework.ProxyFactoryBean" abstract="true"> <property name="interceptorNames"> <list> <value>finderIntroductionAdvisor</value> </list> </property> </bean> </beans> |
|
| 返回顶楼 | |
|
时间:2007-12-20
看不懂你的配置。
我直接贴核心。
<aop:config>
<aop:advisor
pointcut="execution(* com.orizone.hbmobile.hbcm.services.*..*ServImpl.*(..))"
advice-ref="transactionAdvice" order="1"/>
</aop:config>
<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" read-only="true"/>
<tx:method name="save*"/>
<tx:method name="merge"/>
<tx:method name="remove*"/>
</tx:attributes>
</tx:advice>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<!--genericDao-->
<bean id="genericDao"
class="com.orizone.hbmobile.hbcm.dao.generic.impl.GenericDaoImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!--baseDao-->
<bean id="baseDao" class="com.orizone.hbmobile.hbcm.dao.impl.BaseDaoImpl"
parent="genericDao"/>
<!-- genericServ -->
<bean id="genericServ"
class="com.orizone.hbmobile.hbcm.services.generic.impl.GenericServImpl"
abstract="true"/>
<!-- baseServ -->
<bean id="baseServ"
class="com.orizone.hbmobile.hbcm.services.impl.BaseServImpl"
abstract="true" parent="genericServ"/>
<!-- demoServ -->
<bean id="demoServ"
class="com.orizone.hbmobile.hbcm.services.impl.DemoServImpl"
parent="baseServ"/>
|
|
| 返回顶楼 | |
|
时间:2007-12-20
不知道楼主加上事务控制以后,报的是什么样的错误啊?从配置上来看,目前看不出什么问题.把异常贴上来看一下吧.
|
|
| 返回顶楼 | |
|
时间:2007-12-21
ecsun 写道 不知道楼主加上事务控制以后,报的是什么样的错误啊?从配置上来看,目前看不出什么问题.把异常贴上来看一下吧.
2007-12-21 16:45:33 信息 [con.out] INFO - DefaultSingletonBeanRegistry.destroySingletons(282) | Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1563e06: defining beans [namingStrategy,extendedFinderNamingStrategy,dataSource,sessionFactory,txAdvice,org.springframework.aop.config.internalAutoProxyCreator,serviceOperation,org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor,transactionManager,finderIntroductionAdvisor,abstractDaoTarget,abstractDao]; root of factory hierarchy 2007-12-21 16:45:33 信息 [con.out] ERROR - ContextLoader.initWebApplicationContext(204) | Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.ClassCastException: org.springframework.beans.factory.config.FieldRetrievingFactoryBean Caused by: java.lang.ClassCastException: org.springframework.beans.factory.config.FieldRetrievingFactoryBean at genericdao.finder.impl.FinderIntroductionInterceptor.invoke(FinderIntroductionInterceptor.java:17) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy7.isSingleton(Unknown Source) at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1213) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:206) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:267) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:110) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1095) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:857) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:423) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:285) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:245) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:188) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49) |
|
| 返回顶楼 | |
|
时间:2007-12-21
ecsun 写道 不知道楼主加上事务控制以后,报的是什么样的错误啊?从配置上来看,目前看不出什么问题.把异常贴上来看一下吧.
反正不加<aop-config>就通过。什么错也不会报。 留下<aop-config> 去掉 <bean id="finderIntroductionAdvisor" class="genericdao.finder.impl.FinderIntroductionAdvisor" /> 也可以通过,什么错也不会报!麻烦能帮忙看一下吗?源码都在附件里。谢谢! |
|
| 返回顶楼 | |
|
时间:2007-12-24
晕,附件只是IBM的文章啊,很早以前看过一次.没有源码.
|
|
| 返回顶楼 | |





![ecsun的博客: [海鹏Blog]--{FaceYe开源} 用户头像](http://www.javaeye.com/upload/logo/user/36668/bcfaff38-8200-4288-88e6-f588c3138e36.gif?1196653519)