大体情况是这样的:
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>    下面是异常:

解决方案 »

  1.   

    2011-10-20 22:17:55 org.apache.catalina.core.StandardContext listenerStart
    严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
    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
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
    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.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:562)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:272)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:196)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4323)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4771)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:785)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:763)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:558)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1124)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1047)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:542)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1390)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:355)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89)
    at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:312)
    at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:292)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:998)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:772)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:990)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:275)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:424)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:648)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:576)
    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:415)
    Caused by: 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
    at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:462)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1354)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1313)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1067)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511)
    ... 43 more
    Caused by: 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
    at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:289)
    at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:154)
    at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:452)
    ... 47 more
    2011-10-20 22:17:55 org.apache.catalina.core.StandardContext startInternal
    严重: Error listenerStart
    2011-10-20 22:17:55 org.apache.catalina.core.StandardContext startInternal
    严重: Context [/DRP1.0] startup failed due to previous errors
    2011-10-20 22:17:55 org.apache.catalina.core.ApplicationContext log
    信息: Closing Spring root WebApplicationContext
    2011-10-20 22:17:55 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
    严重: The web application [/DRP1.0] registered the JBDC driver [oracle.jdbc.driver.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
      

  2.   

    上面的异常太长了  下面是简短的:
    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
      

  3.   

    你的 UserAction 和BIZ 关联不了
      

  4.   

    你报错信息表明的是你的类型转换有问题
    Caused by: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value 
    也就是你注入的属性类型不相匹配
      

  5.   

    你得IUserBiz类实现的两个接口,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised是又什么用的?
    应该是实现的这两个接口的问题,经过事物处理的biz对象传过去报出类型转换错误。
    你再好好看看吧、
      

  6.   

    .TUserBiz] for property 'tUserBiz' 后面这个是id的名字么。 看不全你的错误 不过应该是 转换不被支持。你是在执行啥操作 ?添加?
      

  7.   

    <!-- 前面的 dataSource等配置略 ........ --> 
    <!-- 事务管理器 --> 
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
    <property name="dataSource"> 
    <ref local="dataSource" /> 
    </property> 
    </bean> 
    <!-- 事务模板 --> 
    <bean id="baseTransactionProxy" 
    class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" 
    abstract="true"> 
    <property name="transactionManager" ref="transactionManager" /> 
    <property name="transactionAttributes"> 
    <props> 
    <prop key="*">PROPAGATION_REQUIRED</prop>   <!-- 本文仅简单用一种方式说明。所有方法起事务,可以修改以精细和区别性控制事务 --> 
    </props> 
    </property> 
    </bean> 
    <!-- 业务对象 --> 
    <bean id="authService" parent="baseTransactionProxy"> 
    <property name="target"> 
    <bean class="com.xxxx.cms.service.AuthorityService"> 
    <property name="authDao" ref="authDao" /> 
    </bean> 
    </property> 
    </bean> 
    <bean id="departmentService" parent="baseTransactionProxy"> 
    <property name="target"> 
    <bean class="com.xxxx.cms.service.pojo.DepartmentService"> 
    <property name="departmentDao" ref="departmentDao" /> 
    </bean> 
    </property> 
    </bean> 
    <!-- 数据访问对象 --> 
    <bean id="authDao" class="com.xxxx.cms.dao.jdbc.AuthorityDao"> 
    <property name="dataSource" ref="dataSource" /> 
    </bean> 
    <bean id="departmentDao" class="com.xxxx.cms.dao.jdbc.DepartmentDao"> 
    <property name="dataSource" ref="dataSource" /> 
    </bean> 对比一下这个正确的配置。楼主配的好像有点问题
      

  8.   

       <!-- 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>终于被我找到一个问题:
    首先看你的错误提醒:
    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
        at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:462)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1354)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1313)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1067)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511)
        ... 43 more
    Caused by: 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
     
    这个错误是指:你的tUserBiz在上面配置的是一个BIZ层【即我们平时习惯说的service层】的bean名称,而看看你下面 
     <!-- Action层 -->
        <bean id="UserAction" class="com.jeelon.drp.view.UserAction">
            <property name="tUserBiz" ref="moduleProxy"></property>
        </bean>这里为action配置biz层注入时,的属性名称又是tUserBiz,两处同名。
    导致spring报错无法将com.jeelon.drp.biz.impl.TUserBiz这种类型转换为下面的属性所指的类型。。导致出错。。
    把下面<property name="tUserBiz" ref="moduleProxy"></property>这个名称改一下,应该能正确
      

  9.   

    应该是action的属性注入错误,你action中的tUserBiz属性是“moduleProxy”这个bean的对象或者子对象吗?
      

  10.   


    这里注入moduleProxy代理事务没有问题。是他的属性名和bean名称同名问题。如我上面说的。
      

  11.   


    非常感谢17楼的朋友细心回答  但是我改名称问题还是仍旧  
    <property name="tUserBiz" ref="moduleProxy"></property>这里边儿的tUserBiz是我在UserAction里面的setter:private TUserBiz tUserBiz;
    public void settUserBiz(TUserBiz tUserBiz) {
    this.tUserBiz = tUserBiz;
    }
      

  12.   

    其实,你是Spring先安装的吗?安装顺序也会有问题
      

  13.   

    看看你商品ring的jar添加全没 相关的aop的jar要加上啊
      

  14.   

    我来瞎摸下:
    首先 看怎么实例化bean的 如果在web.xml中要有监听器啊
    第二个 异常原因地方:Caused by: org.springframework.beans.ConversionNotSupportedException: Failed 
    ConversionNotSupportedException这个是不是说什么什么源..异常啊!
    java.lang.IllegalStateException: Cannot convert value of type [$Proxy4 
    $Proxy4好像是代理什么的瞎猜的!
    换jar试试!期待高人 解答 学习了! 
      

  15.   

    一群废物。action里的Biz声明是必须是接口类,配置文件里指向实现类因为你用的动态代理方法,只能这么配。
      

  16.   

    动态代理两种    如果该类有实现接口那么就自动用jdk的动态代理   如果没有实现的话  spring会自动去用cglib来进行实现的    
      

  17.   


    没见过这么智能的Spring,如果直接实现类,他写的这种配置方法必须声明abstract="false"
      

  18.   

    好像是你action中的tUserBiz是实现类而不是接口啊。 然后注入时代理类不能转换成目标。
    action中应该用接口吧。 要不然用cglib代理。
      

  19.   

        <!-- 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-->
    这里有问题