1

Apache dbcp の例のパターンに従おうとしましたが、データベース プロパティがどこからどのように取得され、どの Bean にアプリケーション コンテキストに配置する必要があるかを除いて、すべてを理解しています。

代わりに Spring Data Source を使用しましたが、思い出すと急いで構成したため、Apache dbcp 自体によって提供される元の dataSource の構成に苦労したことを覚えています。そのため、たまたま問題に直面し、PoolingDataSource を使用するという本来の目的を果たす時間ができました。

Spring 実装を使用した理由は、データベースに接続するためのパラメーターを設定する手段を提供するためです。

http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/jdbc/datasource/DriverManagerDataSource.html

http://commons.apache.org/dbcp/apidocs/org/apache/commons/dbcp/PoolingDataSource.htmlによると

URL やロード ドライバなどの構成を設定する方法はありません。

オブジェクトプールなどで追跡しようとしましたが、本当に迷子になりました。

前もって返信: はい、Apache basicDataSource を使用したくありません。

だから今私は問題に戻ってきて、パラメータを取得する場所を本当に理解できませんか? 運転者?URL? url、pw、ユーザー名は接続ファクトリーに設定されているようです。しかし、postgresql ドライバーをどこで取得してロードするのでしょうか?

設定を完了するのを手伝ってください。

(構成にはスプリングを使用)

<!-- the one I want to use now -->
  <bean id="dataSource" class="org.apache.commons.dbcp.PoolingDataSource">
     <constructor-arg><ref bean="pool"/></constructor-arg>
  </bean>

<!-- the one I used before as a workaround

<bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
   <property name="driverClassName" value="org.postgresql.Driver"/>
   <property name="url" value="jdbc:postgresql:postgres"/>
   <property name="username" value="magicUserName"/>
   <property name="password" value="magicPassword"/>
</bean>  -->

<bean id="pool" class="org.apache.commons.pool.impl.GenericObjectPool">
   <property name="minEvictableIdleTimeMillis"><value>300000</value </property>
   <property name="timeBetweenEvictionRunsMillis"><value>60000</value </property>
</bean>

<bean id="dsConnectionFactory" class="org.apache.commons.dbcp.DataSourceConnectionFactory">
   <constructor-arg><ref bean="dataSource"/></constructor-arg>
</bean>

<bean id="poolableConnectionFactory" class="org.apache.commons.dbcp.PoolableConnectionFactory">
    <constructor-arg index="0"><ref bean="dsConnectionFactory"/ </constructor-arg>
    <constructor-arg index="1"><ref bean="pool"/></constructor-arg>
    <constructor-arg index="2"><null/></constructor-arg>
    <constructor-arg index="3"><null/></constructor-arg>
    <constructor-arg index="4"><value>false</value></constructor-arg>
    <constructor-arg index="5"><value>true</value></constructor-arg>
</bean>



 <bean id="txManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

 <tx:annotation-driven transaction-manager="txManager" />

</beans>

関心があるのは最初の 2 つだけだと思いますが、念のためすべてを含めました。

回避策を使用している人が多いようです: http://forum.springsource.org/showthread.php?10772-How-do-I-create-a-org-apache-commons-dbcp-PoolableConnection

4

1 に答える 1