web-dev-qa-db-ja.com

Springxmlデータソースを介したpostgresqlドライバーの構成

XmlSpring構成ファイルで宣言されたpostgresqlデータソースを使用して確立された接続を構成しようとしています。

<bean id="myDataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.postgresql.Driver" />
        <property name="url" value="jdbc:postgresql://localhost:5432/dbname" />
        <property name="username" value="postgres" />
        <property name="password" value="" />
        <property name="socketTimeout" value="10"/>
    </bean>

春からDriverManagerDataSourceクラスを使用するべきではないことを知っています(まもなくC3p0またはDBCPに移行します)。これは実際のプーリングではないためです。 postgresql接続のsocketTimeout値を設定しようとしています(ここで説明します https://jdbc.postgresql.org/documentation/head/connect.html )が、もちろん、「socketTimeout」はそうではありませんデータソースのプロパティであるため、機能しません。

データソースxmlの構成を介してこれを行うことは可能ですか?それともどこかでやるべきですか?データソースが接続を管理しているので、私はできるとは思わない

props.setProperty("timeout",30);
Connection conn = DriverManager.getConnection(url, props);

DriverManagerDataSourceでこれを行うこともできますか?検索してみましたが、実際に使っている人が少ないので、何も役に立ちませんでした。

5
Asoub

M. Deinumに感謝します、私は方法を見つけることができました。実際、プロパティの名前が「connectionProperties」であることを知っていても、多くの回答は見つかりませんでした(おそらく、この方法で使用することはめったにありませんか?)。だから私はそれを投稿しています:

<bean id="myDataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.postgresql.Driver" />
        <property name="url" value="jdbc:postgresql://localhost:5432/dbname" />
        <property name="username" value="postgres" />
        <property name="password" value="" />
        <!--<property name="socketTimeout" value="10"/>-->

        <property name="connectionProperties">
            <props>
                <prop key="socketTimeout">10</prop>
            </props>
        </property>
   </bean>

誰かがより良い/より完全な答えを持っているなら、私はそれをチェックします;)

9
Asoub