我采用的的是SPRING管理SESSION的办法,但是我这个好象是用JDBC连接数据库的把,配置虽然可以用,但是在局域网通过IP访问性能有点问题,
试了网上的办法,配置C3P0连接池,可是这样连接次数被定死了,定义几次就只能连接几次,
高手们教教如何用SPRING来管理连接池,关闭不必要的连接SESSION,谢谢了
<?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="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"><value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value></property>
<property name="url"><value>jdbc:sqlserver://localhost:1433;DatabaseName=shilikaifa</value></property>
<property name="username"><value>sa</value></property>
<property name="password"><value>test</value></property>   
</bean>
<!--配置事务管理器--> 
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">    <property name="sessionFactory"><ref local="sessionFactory"/></property> </bean> 
<bean id="transactionProxyFactory" abstract="true" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">     <property name="transactionManager">          <ref local="transactionManager"/>     </property>     <property name="transactionAttributes">          <props>           <prop key="save*">PROPAGATION_REQUIRED</prop>            <prop key="insert*">PROPAGATION_REQUIRED</prop>            <prop key="del*">PROPAGATION_REQUIRED</prop>            <prop key="add*">PROPAGATION_REQUIRED</prop>            <prop key="update*">PROPAGATION_REQUIRED</prop>            <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>            <prop key="search*">PROPAGATION_REQUIRED,readOnly</prop>            <prop key="remove*">PROPAGATION_REQUIRED,readOnly</prop>            <prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>            <prop key="list*">PROPAGATION_REQUIRED,readOnly</prop>            <prop key="count*">PROPAGATION_REQUIRED,readOnly</prop>            <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>     </props>    </property>     </bean> 
<bean id="hibernateInterceptor"
class="org.springframework.orm.hibernate3.HibernateInterceptor">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect  
</prop>
<!-- 表示允许自动提交 -->
<prop key="hibernate.connection.autocommit">true</prop>
<!-- 显示sql语句 -->
<prop key="hibernate.show_sql">true</prop>
</props>

解决方案 »

  1.   

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" />这样就可以了。然后写个 c3p0.properties 的文件放到 src 下,ComboPooledDataSource 会自动加载的。大致的内容如下:c3p0.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
    c3p0.jdbcUrl=jdbc:sqlserver://localhost:1433;DatabaseName=shilikaifa
    c3p0.user=sa
    c3p0.password=test## 初始化时,创建多少个连接
    c3p0.initialPoolSize=5## 池中保证的最小连接数
    c3p0.minPoolSize=5## 池中最大的连接数
    c3p0.maxPoolSize=100## 池中连接最大的空闲时间,如果在这段时间内没有被使用过,那就被回收(单位:秒)
    c3p0.maxIdleTime=600上面这些是运行起来最主要的参数,c3p0 的配置共有 33 个,具体的参考 c3p0 的文档:http://www.mchange.com/projects/c3p0/index.html#configuration_properties上文中的属性写到 c3p0.properties 中去的话,前面加上“c3p0.”前缀就可以了。 
      

  2.   

    如果用户不多的话,基本上这样就够用了:## 初始化时,创建多少个连接
    c3p0.initialPoolSize=2## 池中保证的最小连接数
    c3p0.minPoolSize=2## 池中最大的连接数
    c3p0.maxPoolSize=10
      

  3.   

    恩```谢谢1楼``但这个连接池好象没有用SPRING管理,也就是说打开连接后能关闭不???
      

  4.   

    我执行了ACTION只能执行5次,因为我连接池只配置了5次,这说明我无法通过SPRING来关闭SESSION
      

  5.   

    这个连接池需要在TOMCAT里面部署配置吗??
      

  6.   


    不需要啊。这具体的要看你的 spring 配置和代码了。