2012-07-01 113 views
0

我想整合spring jsf hibernate。我使用maven和eclipse。但我有錯誤。 你能幫我嗎。 的applicationContext.xmljsp與hibernate及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:aop="http://www.springframework.org/schema/aop" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:lang="http://www.springframework.org/schema/lang" 
    xmlns:task="http://www.springframework.org/schema/task" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:util="http://www.springframework.org/schema/util" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd 
     http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-3.1.xsd 
     http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd 
     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd"> 

<!-- Beans Declaration --> 
<bean id="customer" class="model.Customer"/> 

<!-- CustomerBo Declaration --> 
<bean id="CustomerBoImpl" class="bo.CustomerBoImpl"> 
     <property name="customerDaoImpl" ref="CustomerDaoImpl" /> 
    </bean> 


<!-- Customer DAO Declaration --> 
<bean id="CustomerDaoImpl" class="dao.CustomerDaoImpl"> 
    <property name="sessionFactory" ref="SessionFactory" /> 
</bean> 

<!-- Data Source Declaration --> 
<bean id="DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> 
    <property name="driverClass" value="oracle.jdbc.driver.OracleDriver" /> 
    <property name="jdbcUrl" value="jdbc:oracle:thin:@Mohsen-PC:1521:mydb" /> 
    <property name="user" value="system" /> 
    <property name="password" value="123" /> 
    <property name="maxPoolSize" value="10" /> 
    <property name="maxStatements" value="0" /> 
    <property name="minPoolSize" value="5" /> 
</bean> 

<!-- Session Factory Declaration --> 
<bean id="SessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="DataSource" /> 
    <property name="annotatedClasses"> 
    <list> 
    <value>model.Customer</value> 
    </list> 
    </property> 
    <property name="hibernateProperties"> 
    <props> 
    <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop> 
    <prop key="hibernate.show_sql">true</prop> 
    </props> 
    </property> 
</bean> 

<!-- Enable the configuration of transactional behavior based on annotations --> 
    <tx:annotation-driven transaction-manager="txManager"/> 

<!-- Transaction Manager is defined --> 
    <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="SessionFactory"/> 
    </bean> 

</beans> 

Customermanagedbean

@ManagedBean(name="CustomerMB") 
@RequestScoped 
public class Customermanagedbean implements Serializable{ 
@ManagedProperty(value="#{CustomerBoImpl}") 
ICustomerBo customerBoImpl; 
List<Customer> CustomerList; 
public int customerId; 
public String name; 
public String address; 
public String createdDate; 



public ICustomerBo getCustomerBoImpl() { 
    return customerBoImpl; 
} 
public void setCustomerBoImpl(ICustomerBo customerBoImpl) { 
    this.customerBoImpl = customerBoImpl; 
} 

public List<Customer> getCustomerList() { 
    return CustomerList; 
} 
public void setCustomerList(List<Customer> customerList) { 
    CustomerList = customerList; 
} 
public int getCustomerId() { 
    return customerId; 
} 
public void setCustomerId(int customerId) { 
    this.customerId = customerId; 
} 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public String getAddress() { 
    return address; 
} 
public void setAddress(String address) { 
    this.address = address; 
} 
public String getCreatedDate() { 
    return createdDate; 
} 
public void setCreatedDate(String createdDate) { 
    this.createdDate = createdDate; 
} 


} 

CustomerBoImpl.java

public class CustomerBoImpl implements ICustomerBo{ 

    ICustomerDao customerDao; 

    public void setCustomerDao(ICustomerDao customerDao) { 
     this.customerDao = customerDao; 
    } 

    public ICustomerDao getCustomerDao() { 
     return customerDao; 
    } 

    public void addCustomer(Customer customer){ 

     getCustomerDao().addCustomer(customer); 

    } 

    public void updateCustomer(Customer customer){ 
     getCustomerDao().updateCustomer(customer); 
    } 

    public void deleteCustomer(Customer customer){ 
     getCustomerDao().deleteCustomer(customer); 
    } 
    public List<Customer> findAllCustomer(){ 

     return getCustomerDao().findAllCustomer(); 
    } 
} 

CustomerDaoImpl.java

public class CustomerDaoImpl implements ICustomerDao{ 
    private SessionFactory sessionFactory; 
    public SessionFactory getSessionFactory() { 
     return sessionFactory;} 
    public void setSessionFactory(SessionFactory sessionFactory) { 
     this.sessionFactory = sessionFactory; 
    } 

    public void addCustomer(Customer customer){ 
     getSessionFactory().getCurrentSession().save(customer); 

    } 

    public void updateCustomer(Customer customer){ 
     getSessionFactory().getCurrentSession().update(customer); 
    } 

    public void deleteCustomer(Customer customer){ 
     getSessionFactory().getCurrentSession().delete(customer); 
    } 


    public List<Customer> findAllCustomer(){ 

     List list = getSessionFactory().getCurrentSession 

().createQuery("from CUSTOMER").list(); 
     return list; 

    } 
} 

錯誤:

initWebApplicationContext 
    SEVERE: Context initialization failed 
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'CustomerBoImpl' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'customerDaoImpl' of bean class [bo.CustomerBoImpl]: Bean property 'customerDaoImpl' 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.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1396) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1118) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) 
     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 
     at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:384) 
     at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283) 
     at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) 
     at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779) 
     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566) 
     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556) 
     at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
     at java.util.concurrent.FutureTask.run(Unknown Source) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
     at java.lang.Thread.run(Unknown Source) 
    Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'customerDaoImpl' of bean class [bo.CustomerBoImpl]: Bean property 'customerDaoImpl' 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:1064) 
     at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:924) 
     at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:76) 
     at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:58) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1393) 
     ... 23 more 

    Jul 01, 2012 4:54:28 PM org.apache.catalina.core.StandardContext listenerStart 
    SEVERE: 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 'CustomerBoImpl' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'customerDaoImpl' of bean class [bo.CustomerBoImpl]: Bean property 'customerDaoImpl' 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.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1396) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1118) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) 
     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 
     at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:384) 
     at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283) 
     at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) 
     at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779) 
     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566) 
     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556) 
     at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
     at java.util.concurrent.FutureTask.run(Unknown Source) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
     at java.lang.Thread.run(Unknown Source) 
    Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'customerDaoImpl' of bean class [bo.CustomerBoImpl]: Bean property 'customerDaoImpl' 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:1064) 
     at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:924) 
     at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:76) 
     at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:58) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1393) 
     ... 23 more 

請幫幫我。

回答

1

在你的applicationContext.xml,你有

<!-- CustomerBo Declaration --> 
<bean id="CustomerBoImpl" class="bo.CustomerBoImpl"> 
     <property name="customerDaoImpl" ref="CustomerDaoImpl" /> 
    </bean> 

CustomerBoImpl類沒有使用該名稱的字段。它改爲customerDao