SSH2添加事务代理出错折腾我多时啊!

Jeelon 2011-10-20 10:32:02
大体情况是这样的:
SSH2 添加事务代理后就出错,去掉事务代理后就不报错了 (启动服务器的时候)测试阶段,只有一个Action
希望各位不要觉得代码有点多并不吝指教 解决了 分数绝对不是问题 我另外加分?

下面是配置信息:
Spring配置:

<?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:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- 数据源层 -->
<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:@Jeelon:1521:fx"></property>
<property name="username" value="drp"></property>
<property name="password" value="drp"></property>
</bean>
<!-- SessionFactory层-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean>
<!-- 事务管理层Biz-->
<bean id="tm" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 事务代理层 定义父类(为了使得多个Biz时不全部写以增加冗余 写出这个父类 下面的只需要几层次代理父类即可 把不同的目标类taret写出即可) -->
<bean id="BizProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true" lazy-init="true">
<property name="transactionManager" ref="tm"></property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>

<!-- DAO层-->
<bean id="tUserDAO" class="com.jeelon.drp.dao.impl.TUserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<!-- BIZ层 -->
<bean id="tUserBiz" class="com.jeelon.drp.biz.impl.TUserBiz">
<property name="tUserDAO" ref="tUserDAO"></property>
</bean>
<!-- 继承上面的代理事务 -->
<bean id="moduleProxy" parent="BizProxy">
<property name="target" ref="tUserBiz"></property>
</bean>


<!-- Action层 -->
<bean id="UserAction" class="com.jeelon.drp.view.UserAction">
<property name="tUserBiz" ref="moduleProxy"></property>
</bean>

</beans>

struts配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<!-- 将struts交给spring管理 -->
<constant name="struts.objectFactory" value="spring"></constant>

<package name="user" extends="struts-default">
<action name="login" class="UserAction">
<result name="success">main.jsp</result>
<result name="error">login.jsp</result>
</action>
</package>
</struts>



下面是异常:

...全文
523 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
woozyangel 2012-02-20
  • 打赏
  • 举报
回复
自己也犯错了
愿意来接受26楼的骂的
qq454951240 2011-10-29
  • 打赏
  • 举报
回复
额 答个问题还要骂人的???
forgetsam 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 handsome_huxiulei 的回复:]
动态代理两种 如果该类有实现接口那么就自动用jdk的动态代理 如果没有实现的话 spring会自动去用cglib来进行实现的
[/Quote]

没见过这么智能的Spring,如果直接实现类,他写的这种配置方法必须声明abstract="false"
Jeelon 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 forgetsam 的回复:]
一群废物。

action里的Biz声明是必须是接口类,配置文件里指向实现类

因为你用的动态代理方法,只能这么配。
[/Quote]

这位朋友 !谢谢你 问题解决了。是我糊涂。
烈空小Y 2011-10-24
  • 打赏
  • 举报
回复
<!-- SessionFactory层-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean>
<!-- 事务管理层Biz-->
这里有问题
k0yang 2011-10-24
  • 打赏
  • 举报
回复
把你的类贴出来
lijing0511 2011-10-24
  • 打赏
  • 举报
回复
好像是你action中的tUserBiz是实现类而不是接口啊。 然后注入时代理类不能转换成目标。
action中应该用接口吧。 要不然用cglib代理。
forgetsam 2011-10-23
  • 打赏
  • 举报
回复
一群废物。

action里的Biz声明是必须是接口类,配置文件里指向实现类

因为你用的动态代理方法,只能这么配。
Jeelon 2011-10-23
  • 打赏
  • 举报
回复
这帖子就这样沉了? 问题还没解决呢
handsome_huxiulei 2011-10-23
  • 打赏
  • 举报
回复
动态代理两种 如果该类有实现接口那么就自动用jdk的动态代理 如果没有实现的话 spring会自动去用cglib来进行实现的
阿诺 2011-10-22
  • 打赏
  • 举报
回复
我来瞎摸下:
首先 看怎么实例化bean的 如果在web.xml中要有监听器啊
第二个 异常原因地方:Caused by: org.springframework.beans.ConversionNotSupportedException: Failed
ConversionNotSupportedException这个是不是说什么什么源..异常啊!
java.lang.IllegalStateException: Cannot convert value of type [$Proxy4
$Proxy4好像是代理什么的。。。瞎猜的!
换jar试试!

期待高人 解答 学习了!

飓风zj 2011-10-22
  • 打赏
  • 举报
回复
看看你商品ring的jar添加全没 相关的aop的jar要加上啊
river204123 2011-10-22
  • 打赏
  • 举报
回复
其实,你是Spring先安装的吗?安装顺序也会有问题
愚公移码 2011-10-21
  • 打赏
  • 举报
回复
帮你顶。
  • 打赏
  • 举报
回复
小五来顶过。。。
Jeelon 2011-10-21
  • 打赏
  • 举报
回复
我无语了!自己顶了这么多
Jeelon 2011-10-21
  • 打赏
  • 举报
回复
上面的异常太长了 下面是简短的:


org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'UserAction' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type '$Proxy4 implementing com.jeelon.drp.biz.ITUserBiz,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised' to required type 'com.jeelon.drp.biz.impl.TUserBiz' for property 'tUserBiz'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [$Proxy4 implementing com.jeelon.drp.biz.ITUserBiz,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised] to required type [com.jeelon.drp.biz.impl.TUserBiz] for property 'tUserBiz': no matching editors or conversion strategy found



yuanqinghong1989 2011-10-21
  • 打赏
  • 举报
回复
只能帮你顶了!
Jeelon 2011-10-21
  • 打赏
  • 举报
回复
没人看 自己顶下了!
ylovep 2011-10-21
  • 打赏
  • 举报
回复
路过 帮顶
加载更多回复(14)

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧