0 0

S2SH 中的Spring sessionFactory注入配置问题5

环境是: Struts 2.1.8.1 + Spring 3.0 + Hibernate 3.3.2GA

在配置spring 时如果是一个dao的话,就不报错,但是如果有两个dao的话就报:
Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                          http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="employeeDao" class="com.liutan.dao.impl.EmployeeDaoImpl" scope="singleton">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <bean id="employeeService" class="com.liutan.service.impl.EmployeeServiceImpl">
        <property name="employeeDao" ref="employeeDao"/>
    </bean>
    <!-- 注释掉下面两个bean就不报错!-->
    <bean id="departmentDao" class="com.liutan.dao.impl.DepartmentDaoImpl" scope="singleton">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <bean id="departmentService" class="com.liutan.service.impl.DepartmentServiceImpl">
        <property name="departmentDao" ref="departmentDao"/>
    </bean>
</beans>


以下是dataSource和sessionFactory的代码

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                          http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/winmrp"/>
        <property name="user" value="root"/>
        <property name="password" value="root"/>
        <property name="minPoolSize" value="1"/>
        <property name="maxPoolSize" value="20"/>
        <property name="maxIdleTime" value="1800"/>
        <property name="acquireIncrement" value="2"/>
        <property name="maxStatements" value="0"/>
        <property name="initialPoolSize" value="2"/>
        <property name="idleConnectionTestPeriod" value="1800"/>
        <property name="acquireRetryAttempts" value="30"/>
        <property name="breakAfterAcquireFailure" value="true"/>
        <property name="testConnectionOnCheckout" value="false"/>
    </bean>

    <!-- Hibernate SessionFactory -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mappingDirectoryLocations">
            <list>
                <value>classpath:/com/liutan/bean</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.generate_statistics">true</prop>
                <prop key="hibernate.connection.release_mode">auto</prop>
                <prop key="hibernate.autoReconnect">true</prop>
                <prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
                <prop key="hibernate.connection.url">jdbc:mysql://localhost:3306/winmrp</prop>
                <prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop>
                <prop key="hibernate.connection.username">root</prop>
                <prop key="hibernate.connection.password">root</prop>
            </props>
        </property>
    </bean>

</beans>

问题补充:
dmewy 写道
你有个DAO没有继承HibernateDaoSupport吧..

所有的都是继承自HibernateDaoSupport的啊!

问题补充:
unika_ly12 写道
好像没看见事务管理器

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


我根本没有应用到事务啊,不用配置事务处理吧!
还有,我的错误在应用服务器启动的时候就报了错误了!
2010-2-3 15:39:10 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 'departmentService' defined in file [D:\IdeaProjects\winmrp\out\artifacts\winmrp\WEB-INF\classes\applicationContext-common.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required


问题补充:
unika_ly12 写道
先把 web.xml 贴出来瞧瞧


我的web.xml如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
		  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext-*.xml</param-value>
    </context-param>

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

</web-app>

问题补充:
unika_ly12 写道
web.xml 倒是没问题唉,感觉好像departmentDao没认出sessionFactory的样子,检查下文件名及路径都匹配classpath:applicationContext-*.xml吗,不行内容先复制在一起试试



复制到一起了,还是出错了!


问题补充:
unika_ly12 写道
能吧错误信息贴完整吗



2010-2-3 17:11:50 org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring root WebApplicationContext
2010-2-3 17:11:53 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 'departmentService' defined in file [D:\IdeaProjects\winmrp\out\artifacts\winmrp\WEB-INF\classes\applicationContext-sessionFactory.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1401)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:512)
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:557)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:842)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:416)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:261)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:192)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:630)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:556)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:491)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1206)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:314)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
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:413)
Caused by: java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
at org.springframework.orm.hibernate3.support.HibernateDaoSupport.checkDaoConfig(HibernateDaoSupport.java:118)
at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1460)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1398)
... 36 more
2010-2-3 17:11:53 org.apache.catalina.core.ApplicationContext log
信息: Closing Spring root WebApplicationContext
2010-2-3 17:11:54 org.apache.catalina.core.ApplicationContext log
信息: ContextListener: contextInitialized()
2010-2-3 17:11:54 org.apache.catalina.core.ApplicationContext log
信息: SessionListener: contextInitialized()


这是所有的Tomcat错误
2010年2月02日 16:26

6个答案 按时间排序 按投票排序

0 0

采纳的答案

引用

Error creating bean with name 'departmentService' defined

一直以为错误在dao,原来是service有问题,检查下departmentService吧,别告诉我说departmentService你也继承了HibernateDaoSupport

2010年2月03日 17:37
0 0

能吧错误信息贴完整吗

2010年2月03日 17:17
0 0

web.xml 倒是没问题唉,感觉好像departmentDao没认出sessionFactory的样子,检查下文件名及路径都匹配classpath:applicationContext-*.xml吗,不行内容先复制在一起试试

2010年2月03日 16:43
0 0

先把 web.xml 贴出来瞧瞧

2010年2月03日 15:43
0 0

好像没看见事务管理器

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

2010年2月03日 09:30
0 0

你有个DAO没有继承HibernateDaoSupport吧..

2010年2月02日 17:50

相关推荐

    spring配置sessionFactory(spring3.2.3+hibernate4.2.2)

    一个实例小工程,讲解的是将hibernate的sessionFactory交给spring管理的配置方法

    一个模拟Spring将SessionFactory注入到HibernateTemplate的小例子

    NULL 博文链接:https://tedtian.iteye.com/blog/1988917

    MySSH.rarSSH框架,spring管理sessionFactory

    spring管理sessionFactory,将sessionFactory注入基础类,将基础类设置为单例模式,下载后直接部署使用,根据实体类自行建表

    SSH整合中 hibernate托管给Spring得到SessionFactory

    Spring文件中的 SessionFactory中 加入为了能得到同一个Session

    hibernate中的SessionFactory

    hibernate中的SessionFactoryhibernate中的SessionFactoryhibernate中的SessionFactory

    spring五种事务配置demo

    Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。 DataSource、TransactionManager这两部分只是会...

    Hibernate中的sessionFactory

    Hibernate中的sessionFactory

    Spring事务配置的五种方式

    Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。 DataSource、TransactionManager这两部分只是会...

    Spring的学习笔记

    一、 Spring配置hibernate3的SessionFactory 30 (一) xml形式的SessionFactory 30 (二) annotation注解方式的SessionFactory 30 二、 引入hibernate所需要使用的jar 31 (一) 基本jar 31 (二) 加入annotation功能的...

    Spring-Reference_zh_CN(Spring中文参考手册)

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1. @Configurable object的单元测试 6.8.1.2. 多application context情况下的处理 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来...

    Spring4.0+Hibernate4.0+Struts2.3整合案例

    1、Spring 3.x 对 Hibernate 4.x 不提供 HibernateDaoSupport,所以在dao的实现层注入SessionFactory 2、报错:org.hibernate.HibernateException: No Session found for current thread 意思是必须在...

    第24次课-1 Spring与Hibernate的整合

    第24次课-1 Spring与Hibernate的整合 本节主要内容 24.1 概述 24.2 管理SessionFactory 24.3 Spring对Hibernate的简化 ...1. Spring中是怎么对Hibernate进行支持的? 2. 如何进行Spring与Hibernate的整合?

    Spring中文帮助文档

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

    spring框架多数据源切换问题的解决

    首先,这个方案完全是在spring的框架下解决的,数据源依然配置在spring的配置文件中,sessionFactory依然去配置它的dataSource属性,它甚至都不知道dataSource的改变。 其次,实现简单,易于维护。这个方案虽然我说...

    Spring事务配置的五种方法

    Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。 DataSource、TransactionManager这两部分只是会...

    springMVC + Hibernate 工程模板

    两种配置:oracle mysql,切换数据库只要把SessionFactory的配置文件改成对应就可以了 c3p0配置:mysql调试通过,oracle由于存在问题,未配置 spring配置式事务管理(jdk动态代理,每个service必须对应一个接口) ...

    Spring2.5和Hibernate3集成--学习spring aop ioc

    * 配置sessionFactory * 配置事务管理器 * 配置事务的传播特性 * 配置哪些类哪些方法使用事务 2.编写业务逻辑方法 * 继承HibernateDaoSupport类,使用this.HibernateTemplate这个类持久化数据 * ...

    Spring.3.x企业应用开发实战(完整版).part2

    14.4.3 如何在Spring中进行配置 14.4.4 Spring OXM 简单实例 14.5 小结 第15章 Spring MVC 15.1 Spring MVC概述 15.1.1 体系结构 15.1.2 配置DispatcherServlet 15.1.3 一个简单的实例 15.2 注解驱动的控制器 15.2.1...

    spring2.5 学习笔记

    一、 Spring配置hibernate3的SessionFactory 30 (一) xml形式的SessionFactory 30 (二) annotation注解方式的SessionFactory 30 二、 引入hibernate所需要使用的jar 31 (一) 基本jar 31 (二) 加入annotation功能的...

    HibernateSessionFactory.java

    HibernateSessionFactory.java

Global site tag (gtag.js) - Google Analytics