1

アプリケーションに jboss エンタープライズ アプリケーション サーバー 5.x を使用しています。また、接続プールを持つために
jboss データソースを使用しています。 以下はデータソースxmlファイルです*-ds.xml

<datasources>
        <local-tx-datasource>
                <jndi-name>myappDS</jndi-name>
                <connection-url>jdbc:oracle:thin:@ip:1521:sid</connection-url>
                <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
                <user-name>usr</user-name>
                <password>pass</password>
                <min-pool-size>5</min-pool-size>
                <max-pool-size>50</max-pool-size>
                <blocking-timeout-millis>5000</blocking-timeout-millis>
                <idle-timeout-minutes>15</idle-timeout-minutes>
                <autoReconnect>true</autoReconnect>
                <failOverReadOnly>false</failOverReadOnly>
                <maxReconnects>50</maxReconnects>
                <initialTimeout>15</initialTimeout> 
                <check-valid-connection-sql>select 1 from dual</check-valid-connection-sql>
                <background-validation-millis>150000</background-validation-millis>
                <validate-on-match>false</validate-on-match>
                <!--
                        corresponding type-mapping in the standardjbosscmp-jdbc.xml
                        (optional)
                -->
                <metadata>
                        <type-mapping>Oracle11g</type-mapping>
                </metadata>
        </local-tx-datasource>
</datasources>

ご覧のとおり、クエリを使用してバックグラウンド接続検証を使用しています。
私の理解では、jboss は、現在プール内にある各接続に対して検証クエリを実行して、接続を検証しようとします。

1.私の理解は正しいですか?
2.<background-validation-millis>はいの場合、最大プール サイズが 50 であり、データベースが週末にのみ再起動される場合、理想的な値は何になりますか。DB が再起動されるたびに Jboss サーバーを再起動する必要があったため、この検証を導入しました。そうしないと、データベースに自動的に接続できませんでした。

質問が明確でない場合はお知らせください。
前もって感謝します。

4

1 に答える 1

0

構成設定 check-valid-connection-sql で指定された sql は、ユーザーがプールから接続をチェックアウトしているときに、接続がユーザーに返される前に実行されます。background-validation-millis 句は、検証が別のスレッドで実行されることを確認し、チェックの間隔を指定します。

于 2013-11-09T02:36:26.403 に答える