页面跳转时报错exception javax.servlet.ServletException: Servlet.init() for servlet springapp threw exception
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
java.lang.Thread.run(Thread.java:619)
root cause org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springappController' defined in ServletContext resource [/WEB-INF/classes/config/springapp-servlet.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'accountsDAO' of bean class [org.disk.view.SpringappController]: Bean property 'accountsDAO' is not writable or has an invalid setter method: Does the parameter type of the setter match the return type of the getter?
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues...
springapp-servlet.xml<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> <servlet>
<servlet-name>springapp</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>springapp</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping> <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/config/applicationContext.xml</param-value>
</context-param> <servlet>
<servlet-name>context</servlet-name>
<servlet-class>
org.springframework.web.context.ContextLoaderServlet
</servlet-class>
<load-on-startup>1</load-on-startup>

</servlet>
</web-app>applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass"
value="oracle.jdbc.driver.OracleDriver">
</property>
<property name="jdbcUrl"
value="jdbc:oracle:thin:@localhost:1521:orcl">
</property>
<property name="user" value="disk"></property>
<property name="password" value="disk"></property>
</bean> <bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!--<property name="configLocation" value="classpath:config/hibernate.cfg.xml"/>
--><property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
<prop key="hibernate.generate_statistics">true</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.use_second_level_cache">
true
</prop>
<!--<prop key="hibernate.cache.provider_class">
net.sf.ehcache.hibernate.EhCacheProvider
</prop>

--><prop key="hibernate.connection.provider_class">
org.hibernate.connection.C3P0ConnectionProvider
</prop>
<prop key="hibernate.query.substitutions">
true 1, false 0, yes 'Y', no 'N'
</prop>
<prop
key="hibernate.bytecode.use_reflection_optimizer">
true
</prop>
<prop key="hibernate.use_outer_join">true</prop>
<prop key="hibernate.prepare_sql">true</prop>
<prop key="hibernate.query.factory_class">
org.hibernate.hql.ast.ASTQueryTranslatorFactory
</prop> </props>
</property>
<property name="lobHandler" ref="oracle9iLobHandle"></property>
<property name="mappingResources">
<list>
<value>org/disk/po/AccountRoles.hbm.xml</value>
<value>org/disk/po/Accounts.hbm.xml</value>
<value>org/disk/po/AdminLogs.hbm.xml</value>
<value>org/disk/po/Categorys.hbm.xml</value>
<value>org/disk/po/Grants.hbm.xml</value>
<value>org/disk/po/Items.hbm.xml</value>
<value>org/disk/po/OrderItems.hbm.xml</value>
<value>org/disk/po/OrderLogs.hbm.xml</value>
<value>org/disk/po/Orders.hbm.xml</value>
<value>org/disk/po/RoleGrants.hbm.xml</value>
<value>org/disk/po/Roles.hbm.xml</value>
<value>org/disk/po/Types.hbm.xml</value>
</list>
</property>
</bean>
<bean id="oracle9iLobHandle"
class="org.springframework.jdbc.support.lob.OracleLobHandler">
<property name="nativeJdbcExtractor"
ref="nativeJdbcExtractor">
</property>
</bean>
<bean id="nativeJdbcExtractor"
class="org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor">
</bean>



<import resource="hibernate3Transaction.xml"/>
<bean id="accountsDAO" class="org.disk.daoimpl.hibernate.AccountsHibernateDAO" autowire="byName"></bean>
</beans>hibernate3Transaction.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>

        <!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->     
    <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="transactionAttributes">   
                <props>   
                    <prop key="save*">PROPAGATION_REQUIRED</prop>   
    <prop key="add*">PROPAGATION_REQUIRED</prop>   
    <prop key="set*">PROPAGATION_REQUIRED</prop>   
    <prop key="update*">PROPAGATION_REQUIRED</prop>   
    <prop key="delete*">PROPAGATION_REQUIRED</prop>   
    <prop key="register">PROPAGATION_REQUIRED</prop>           
    <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>   
    <prop key="valid*">PROPAGATION_REQUIRED,readOnly</prop>   
    <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>   
                </props>   
            </property>   
        </bean>     
            
        <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">     
                <property name="beanNames">   
                    <value>*DAO</value>   
                </property>   
                <property name="interceptorNames">     
                        <list>     
                                <value>transactionInterceptor</value>     
                                <!--    
                                此处增加新的Interceptor   
                                -->     
                        </list>     
                </property>     
        </bean>     
   
        <bean class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">     
          <property name="transactionInterceptor" ref="transactionInterceptor"/>     
        </bean>     
 
</beans>
请大家指点下

解决方案 »

  1.   

    不好意思,上面的springapp-servlet.xml 是web.xml
    springapp-servlet.xml如下
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
    <bean id="viewJspResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/" />
    <property name="suffix" value=".jsp" />
    </bean>
         <bean id="springappController" class="org.disk.view.SpringappController">
    <property name="accountsDAO" ref="accountsDAO"></property>
         </bean> 
     
         <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
             <property name="mappings"> 
                 <props> 
                     <prop key="/login.do">springappController</prop> 
                 </props> 
             </property> 
         </bean> 
    </beans>springappController.java
    package org.disk.view;
    import java.io.IOException;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import org.disk.dao.AccountsDAO;
    import org.disk.dao.GenericDAO;
    import org.disk.dao.GenericHibernateDAO;
    import org.disk.daoimpl.hibernate.AccountsHibernateDAO;
    import org.disk.po.Accounts;
    import org.disk.util.ApplicationContextGetter;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller; public   class  SpringappController  implements  Controller   {
     
     private AccountsHibernateDAO accountsDAO;
     
          public  ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
                 throws  ServletException, IOException   {

    Accounts accounts = new Accounts();
    accounts.setStates("sdf");
    accountsDAO.save(accounts);
             return   new  ModelAndView("hello");
        } public AccountsHibernateDAO getAccountsDAO() {
    return accountsDAO;
    } public void setAccountsDao(AccountsHibernateDAO accountsDAO) {
    this.accountsDAO = accountsDAO;




    麻烦大家看看
      

  2.   

    ServletContext resource [/WEB-INF/classes/config/springapp-servlet.xml]: Error setting property values; 
    nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'accountsDAO' of bean class [org.disk.view.SpringappController]: Bean property 'accountsDAO' is not writable or has an invalid setter method: Does the parameter type of the setter match the return type of the getter?
    /////////////////
      

  3.   

    public AccountsHibernateDAO getAccountsDAO() { 
    return accountsDAO; 

    public void setAccountsDao(AccountsHibernateDAO accountsDAO) { 
    this.accountsDAO = accountsDAO; 

    _____________________________________public void setAccountsDAO(AccountsHibernateDAO accountsDAO) { 
    this.accountsDAO = accountsDAO; 
    } setAccountsDAO方法大小写问题
      

  4.   

    真粗心,改过以后报错
    exception javax.servlet.ServletException: Servlet.init() for servlet springapp threw exception
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
    org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
    org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
    java.lang.Thread.run(Thread.java:619)
    root cause org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springappController' defined in ServletContext resource [/WEB-INF/classes/config/springapp-servlet.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyAccessExceptionsException: PropertyAccessExceptionsException (1 errors); nested propertyAccessExceptions are: [org.springframework.beans.TypeMismatchException: Failed to convert property value of type [$Proxy1] to required type [org.disk.daoimpl.hibernate.AccountsHibernateDAO] for property 'accountsDAO']
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1066)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:857)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:378)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:233)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:145)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:283)
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:313)
    org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:139)
    org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
    org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)
    org.springframework.web.context.ContextLoaderServlet.init(ContextLoaderServlet.java:83)
    javax.servlet.GenericServlet.init(GenericServlet.java:211)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:216)
    org.apache.commons.digester.SetNextRule.end(SetNextRule.java:256)
    org.apache.commons.digester.Rule.end(Rule.java:276)
    org.apache.commons.digester.Digester.endElement(Digester.java:1058)
    org.apache.catalina.util.CatalinaDigester.endElement(CatalinaDigester.java:76)
    org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
    org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
    org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    org.apache.commons.digester.Digester.parse(Digester.java:1567)
    org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:483)
    org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:427)
    org.apache.catalina.startup.HostConfig.start(HostConfig.java:983)
    org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:349)
    org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    org.apache.catalina.startup.Catalina.start(Catalina.java:556)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
    org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)好象是说代理类型转换错误了,请大家再指点下,我实在看不出来错误拉
      

  5.   

    Error setting property values;应该还是说这有问题
    public void setAccountsDao(AccountsHibernateDAO accountsDAO) { 
    this.accountsDAO = accountsDAO; 

      

  6.   

    不是,是代理的问题
    Failed to convert property value of type [$Proxy1] to required type [org.disk.daoimpl.hibernate.AccountsHibernateDAO] for property 'accountsDAO'] 
      

  7.   

    首先要楼主注意一下,非强类型的代理这个东东在你这代码并不适合。
    可以将下面的代理创建器删除。
    <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">    
                    <property name="beanNames">  
                        <value>*DAO </value>  
                    </property>  
                    <property name="interceptorNames">    
                            <list>    
                                    <value>transactionInterceptor </value>    
                                    <!--    
                                    此处增加新的Interceptor  
                                    -->    
                            </list>    
                    </property>    
            </bean>    
    ------------------------
    可以采用其他的AOP实现,这个特点是每个DAO都必须指定parent为abstractDAOProxyFactoryBean。代码如下:
    -------------------------
        <bean id="abstractDAOProxyFactoryBean" class="org.springframework.aop.framework.ProxyFactoryBean" abstract="true">
            <property name="interceptorNames">
                <value>transactionInterceptor</value>
            </property>
        </bean>
        <bean id="accountsDAO" parent="abstractDAOProxyFactoryBean">
            <property name="target">
                <bean class="org.disk.daoimpl.hibernate.AccountsHibernateDAO"/>
            </property>
        </bean>