ERROR - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageDao' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'hibernateTemplate' of bean class [com.cstp.guestbook.dao.MessageHome]: Bean property 'hibernateTemplate' 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.NotWritablePropertyException: Invalid property 'hibernateTemplate' of bean class [com.cstp.guestbook.dao.MessageHome]: Bean property 'hibernateTemplate' is not writable or has an invalid setter method: Does the parameter type of the setter match the return type of the getter?
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:567)
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:469)
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:626)
at org.springframework.beans.BeanWrapperImpl.setPropertyValues(BeanWrapperImpl.java:653)
at org.springframework.beans.BeanWrapperImpl.setPropertyValues(BeanWrapperImpl.java:642)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1023)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:824)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:345)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:226)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:147)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:275)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:320)
at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:134)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:448)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
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:295)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
ERROR - 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 'messageDao' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'hibernateTemplate' of bean class [com.cstp.guestbook.dao.MessageHome]: Bean property 'hibernateTemplate' 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.NotWritablePropertyException: Invalid property 'hibernateTemplate' of bean class [com.cstp.guestbook.dao.MessageHome]: Bean property 'hibernateTemplate' is not writable or has an invalid setter method: Does the parameter type of the setter match the return type of the getter?
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:567)
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:469)
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:626)
at org.springframework.beans.BeanWrapperImpl.setPropertyValues(BeanWrapperImpl.java:653)
at org.springframework.beans.BeanWrapperImpl.setPropertyValues(BeanWrapperImpl.java:642)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1023)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:824)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:345)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:226)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:147)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:275)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:320)
at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:134)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:448)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
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:295)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)

解决方案 »

  1.   

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
    "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans> <!-- ============ Start of PERSISTENCE DEFINITIONS =========== -->  

    <!-- DataSource Definition -->
    <bean id="dataSource"
           class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName">
    <value>oracle.jdbc.OracleDriver</value>
    </property>
    <property name="url">
    <value>jdbc:oracle:thin:@smashchl:1521:orcl</value>
    </property>
    <property name="username">
    <value>hibernate</value>
    </property>
    <property name="password">
    <value>hibernate</value>
    </property>
    </bean>
        <!-- Hibernate SessionFactory Definition -->
    <bean id="sessionFactory" 
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="mappingResources">
    <list>
    <value>com/cstp/guestbook/dao/Message.hbm.xml</value>
    <value>com/cstp/guestbook/dao/TUser.hbm.xml</value>
    </list>
    </property>

    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">
    org.hibernate.dialect.OracleDialect
    </prop>
    <prop key="hibernate.show_sql">true</prop>
    <prop key="current_session_context_class">thread</prop>
    <prop key="hibernate.hbm2ddl.auto">update</prop>
    </props>
    </property>

    <property name="dataSource">
    <ref bean="dataSource"/>
    </property>
    </bean>
        <!-- Spring Data Access Exception Translator Defintion -->
    <bean id="jdbcExceptionTranslator" 
    class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator"> 
    <property name="dataSource"><ref bean="dataSource"/></property> 
    </bean>

    <!-- Hibernate Template Defintion -->
    <bean id="hibernateTemplate" 
    class="org.springframework.orm.hibernate3.HibernateTemplate"> 
    <property name="sessionFactory"><ref bean="sessionFactory"/></property> 
    <property name="jdbcExceptionTranslator">
    <ref bean="jdbcExceptionTranslator"/>
    </property> 
    </bean> 
        
        <!-- UserinfoHome DAO Definition: Hibernate implementation -->
    <bean id="messageDao" 
    class="com.cstp.guestbook.dao.MessageHome">
    <property name="hibernateTemplate">
    <ref bean="hibernateTemplate"/>
    </property> 
    </bean>
    <bean id="userDao" 
    class="com.cstp.guestbook.dao.UserDao">
    <property name="hibernateTemplate">
    <ref bean="hibernateTemplate"/>
    </property> 
    </bean>

    <bean id="transactionManager" 
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory">
    <ref local="sessionFactory"/>
    </property>

    </bean>
         <!-- Cached userService Definition -->
    <bean id="userServiceTarget"  class="com.cstp.guestbook.bs.user.impl.UserImpl">
        <property name="userDao">
    <ref local="userDao"/>
    </property>
    </bean>


    <!-- Transactional proxy for the Category Service -->
    <bean id="userService" 
    class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    <property name="transactionManager">
    <ref local="transactionManager"/>
    </property>

    <property name="target"><ref local="userServiceTarget"/></property>
    <property name="transactionAttributes">
    <props>
    <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="save*">PROPAGATION_REQUIRED</prop>
    <prop key="update*">PROPAGATION_REQUIRED</prop>
    <prop key="delete*">PROPAGATION_REQUIRED</prop>
    </props>
    </property>
    </bean>


    <!-- 定义Struts配置 -->
    <bean name="login" class="com.cstp.guestbook.action.Login">
    <property name="userService">
    <ref local="userService" />
    </property>
    </bean>

    <bean name="register" class="com.cstp.guestbook.action.Register">
    <property name="userService">
    <ref local="userService" />
    </property>
    </bean>

    <!-- 配置拦截器 -->
    <bean name="logger" class="com.cstp.bs.log.LoggingInterceptor" /> <!-- 配置拦截器代理 -->
    <bean name="loggingAutoProxy"
    class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
    <property name="beanNames">
    <list>
    <value>/login</value>
    <value>/register</value>
    </list>
    </property>
    <property name="interceptorNames">
    <list>
    <value>logger</value>
    </list>
    </property>
    </bean>
           <action name="Register" class="register">
                  <result name="register">/guestbook/register.jsp</result>
                  <result name="success">/guestbook/login.jsp</result>
               </action>
               <action name="Login" class="login">             
                  <result name="success">/guestbook/write.jsp</result>
                  <result name="failure">/guestbook/error.jsp</result>
           </action>         
    </beans>

      

  2.   

    com.cstp.guestbook.dao.MessageHome]: hibernateTemplate 的getter setter 返回值类型是否正确
      

  3.   

    com.cstp.guestbook.dao.MessageHome里是否有HibernateTemplate getHibernateTemplate()和void setHibernateTemplate()两个方法?
      

  4.   

    MessageHome是否继承了HibernateDaoSupport 
    /**
     * Set the HibernateTemplate for this DAO explicitly,
     * as an alternative to specifying a SessionFactory.
     * @see #setSessionFactory
     */
    public final void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
    this.hibernateTemplate = hibernateTemplate;
    }主要check,MessageHome这个类中有没有
    a95665964 说的两个方法
      

  5.   

    1 你的配置很冗余,既然你用的是SQLErrorCodeSQLExceptionTranslator,并没有进行异常转换
      那么这个代码完全可以省略,因为spring默认的异常转换器就是SQLErrorCodeSQLExceptionTranslator
      除非你自己定义了一个新的异常转换器,这样就可以通过这中配置把相应的异常转化成Spring异常2 如果你的类继承了HibernateDaoSupport 的话,那么hibernateTemplate也无需配置,这也是spring的默认实现;也就是说凡是带有hibernateTemplate的配置信息都可以被删除。
    楼主还是看看spring的中文参考手册吧,网上的东西有的也是有问题的