S2JDBCからMySQLに接続する際にコネクションタイムアウトを設定する方法

今回は、S2JDBCからMySQLに接続する際に、コネクションタイムアウトを設定する方法を紹介する。

方法としては、「jdbc.dicon」のタグの値の末尾に「?connectTimeout=<タイムアウトの待ち時間>」を追加することである。

タイムアウトの待ち時間の単位は、MySQLの公式ページでは「ミリ秒」となっているが、筆者の環境で検証した時は、「100分の1秒」で動作した。
つまり、2秒に設定したい場合は、公式ページ通りであれば「2000」と設定するべきであるが、検証環境では「200」と設定することで、意図した動作となった。
この事がどの環境でも起こるかは、詳しく調査できていないが、値を設定する場合は、しっかり検証することをお勧めする。

コネクションタイムアウト設定前のjdbc.dicon抜粋

<component name="xaDataSource"
    class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
    <property name="driverClassName">
        "com.mysql.jdbc.Driver"
    </property>
    <property name="URL">
        "jdbc:mysql://192.168.0.3:3306/SAMPLE_DB"
    </property>
    <property name="user">"sample"</property>
    <property name="password">"samplepass"</property>
</component>

コネクションタイムアウト設定後のjdbc.dicon抜粋

<component name="xaDataSource"
    class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
    <property name="driverClassName">
        "com.mysql.jdbc.Driver"
    </property>
    <property name="URL">
        "jdbc:mysql://192.168.0.3:3306/SAMPLE_DB?connectTimeout=200"
    </property>                            <!-- ↑↑ ポイント ↑↑ -->
    <property name="user">"sample"</property>
    <property name="password">"samplepass"</property>
</component>