Spring接続プール構成


実際のアプリケーション開発において、特にWEBアプリケーションシステムにおいて、JSP、サーブレットまたはEJBがJDBCを使用してデータベース内のデータに直接アクセスする場合、データアクセス要求のたびにデータベース接続の確立、データベースのオープン、データのアクセス、データベース接続のクローズなどのステップを経なければならないが、データベースに接続して開くことはリソースを消費し、時間がかかる仕事である.このようなデータベース・オペレーションが頻繁に発生すると、システムのパフォーマンスが急激に低下し、システムがクラッシュすることもあります.データベース接続プール・テクノロジーは、この問題を解決するために最も一般的な方法であり、多くのアプリケーション・サーバ(例えば、Weblogic、WebSphere、JBoss)では、基本的にこのテクノロジーを提供しており、自分でプログラミングする必要はありませんが、このテクノロジーを深く理解する必要があります.
データベース接続プール技術の考え方は非常に簡単で、データベース接続をオブジェクトとして1つのVectorオブジェクトに格納し、データベース接続が確立されると、異なるデータベースアクセス要求がこれらの接続を共有することができ、これにより、これらの確立されたデータベース接続を多重化することで、上記の欠点を克服し、システムリソースと時間を極めて節約することができる.
データベース接続プールの主な操作は次のとおりです.
(1)作成
データベース接続プールオブジェクト(サーバ起動).
(2)事前に指定したパラメータに従って、初期数のデータベース接続(すなわち、空き接続数)を作成する.
(3)1つのデータベースアクセス要求に対して,直接接続プールから1つの接続を得る.場合
データベース接続プール・オブジェクトに空き接続がなく、接続数が最大(すなわち、最大アクティブ接続数)に達していないため、新しいデータベース接続が作成されます.
(4)データベースへのアクセス.
(5)データベースをシャットダウンし、すべてのデータベース接続を解放する(このときのデータベース接続をシャットダウンするのは、実際にシャットダウンするのではなく、アイドルキューに入れます.実際のアイドル接続数が最初のアイドル接続数より大きい場合は、接続を解放します).
(6)解放
≪データベース接続プール・オブジェクト|Database Connection Pool Objects|Emdb≫:サーバーの停止、メンテナンス中に、データベース接続プール・オブジェクトを解放し、すべての接続を解放します.
Spring
サードパーティ依存パケットには、2つのデータソースの実装クラスパケットが含まれています.
Apache

DBCP
二つ目は
C3P0
.可以在
Spring
コンフィギュレーション・ファイルでは、両方のコンフィギュレーション・データ・ソースを使用します.
<!-- DBCP-->
    <!-- 
    <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
     -->
<!-- C3P0-->
<bean id="dataSource" destroy-method="close"  class="com.mchange.v2.c3p0.ComboPooledDataSource">
  <property name="driverClass" value="${jdbc.driverClassName}" />
  <property name="jdbcUrl" value="${jdbc.url}" />
  <property name="user" value="${jdbc.username}" />
  <property name="password" value="${jdbc.password}" />
                            
   <property name="minPoolSize"><value>1</value></property>
          <property name="maxPoolSize"><value>20</value></property>
          <property name="maxIdleTime"><value>1800</value></property>
          <property name="acquireIncrement"><value>2</value></property>
          <property name="maxStatements"><value>0</value></property>
          <property name="initialPoolSize"><value>2</value></property>
          <property name="idleConnectionTestPeriod"><value>1800</value></property>
          <property name="acquireRetryAttempts"><value>30</value></property>
          <property name="breakAfterAcquireFailure"><value>true</value></property>
          <property name="testConnectionOnCheckout"><value>false</value></property>
                            
                            
 </bean>

Spring接続プールの別の構成
BoneCP BoneCPは、高速でオープンソースのデータベース接続プールです.データ接続を管理して、アプリケーションがデータベースに迅速にアクセスできるようにします.C 3 P 0/DBCP接続プールより速い.
<!--     boneCP-->
    <bean id="dataSource" destroy-method="close" class="com.jolbox.bonecp.BoneCPDataSource">
        <property name="driverClass" value="${jdbc.driverClassName}" />
        <property name="jdbcUrl" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
                         
        <!--                    -->
        <property name="idleConnectionTestPeriod" value="60" />
        <!--                   -->
        <property name="idleMaxAge" value="240" />
         <!--            --> 
        <property name="maxConnectionsPerPartition" value="30" />
        <!--            --> 
        <property name="minConnectionsPerPartition" value="10" />
          <!--     ,   2,  1,  3-4,     --> 
        <property name="partitionCount" value="3" />
         <!--                    ,   :2 --> 
        <property name="acquireIncrement" value="5" />
        <!--          -->
        <property name="poolAvailabilityThreshold" value="10"></property>
        <!--      -->
        <property name="connectionTimeout" value="3000"></property>
    </bean>
                    
<!-- Proxool -->
<bean id="dataSource"    class="org.logicalcobwebs.proxool.ProxoolDataSource">
            <property name="driver" value="${jdbc.driverClassName}"/>
            <property name="driverUrl" value="${jdbc.url}"/>
            <property name="user" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
                          
                <!--    housekeeper                   .         .              .         .   5  . -->
                <property name="maximumActiveTime" value="60000"/>
                <!--             .                  .        (           ).  .   3     2     ,    prototype-count 4,               2   .   minimum-connection-count  . minimum-connection-count           .prototype-count  spare connections    . -->
                <property name="prototypeCount" value="0"/>
                <!--          . -->
                <property name="maximumConnectionCount" value="50"/> 
                <!--           -->
                <property name="minimumConnectionCount" value="2"/>
                <!--  -->
                <property name="simultaneousBuildThrottle" value="50"/> 
                <!--  -->
                <property name="houseKeepingTestSql" value="select CURRENT_DATE"/> 
    </bean>