日期:2014-05-18  浏览次数:20681 次

关于Spring控制事务的问题,谢谢帮忙!!
做了一个ssh的小项目,事务控制是通过spring在配置文件里统一控制的。但是发现运行一段时间后就出现“java.sql.SQLException: ORA-00018: 超出最大会话数”问题。
我怀疑是dao中的方法没有被事务控制,以至于session没有释放,导致问题。
  以下是我spring中关于数据库的配置,希望大家能提些意见。
  我先对配置进行一下说明。有一个BaseService所有的service包括(ServicesImpl等都继承这个类),BaseService的作用是get和set“DAO”,即取得DAO的bean。
  我对各个service的事务控制是起作用的,主要用来控制多个相关存操作的事务。 所以我会对dao也会起到事务控制。 
  我的代码中经常出现这样的代码service.getEmployeeDAO().save(name)。这样的操作是不是通过这个spring配置控制了事务。
  总之,我的程序运行一阶段就出现session不够的情况。大家对我的配置痛批一顿吧,谢谢了。初次使用spring,有喜悦也有痛苦。。
XML code

<?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-2.0.xsd"
    default-autowire="byName">
    <!-- 数据库的hibernate配置 -->
    <bean id="dataSource"
        class="com.mchange.v2.c3p0.ComboPooledDataSource"
        destroy-method="close">
        <property name="driverClass"
            value="oracle.jdbc.driver.OracleDriver">
        </property>
        <property name="jdbcUrl"
            value="jdbc:oracle:thin:@12.61.14.61:1521:KPI">
        </property>
        <property name="user" value="user"></property>
        <property name="password" value="pass"></property>
        <property name="maxPoolSize" value="40" />
        <!-- 指定连接数据库连接池的最小连接数 -->
        <property name="minPoolSize" value="1" />
        <!-- 指定连接数据库连接池的初始化连接数 -->
        <property name="initialPoolSize" value="1" />
        <!-- 指定连接数据库连接池的连接的最大空闲时间 -->
        <property name="maxIdleTime" value="20" />
    </bean>

    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource"></ref>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">
                    org.hibernate.dialect.Oracle9Dialect
                </prop>
                <prop key="hibernate.show_sql">false</prop>
                <prop key="format_sql">true</prop>
            </props>
        </property>
        <property name="mappingResources">
            <list>
                <value>
                    com/rdc/hibernate/bean/Processkpcontract.hbm.xml
                </value>
                                 ...........
            </list>
        </property>
    </bean>

    <!-- 声明services -->
    <bean id="service" class="com.rdc.struts.service.ServicesImpl"></bean>
    <bean id="serviceC" class="com.rdc.struts.service.ServicesImpl_C"></bean>
    <bean id="serviceL" class="com.rdc.struts.service.ServicesImpl_L"></bean>
    <bean id="serviceZ" class="com.rdc.struts.service.ServicesImpl_Z"></bean>
    <bean id="serviceF" class="com.rdc.struts.service.ServicesImpl_F"></bean>


    <bean id="tr