Apache dbcp の例のパターンに従おうとしましたが、データベース プロパティがどこからどのように取得され、どの Bean にアプリケーション コンテキストに配置する必要があるかを除いて、すべてを理解しています。
代わりに Spring Data Source を使用しましたが、思い出すと急いで構成したため、Apache dbcp 自体によって提供される元の dataSource の構成に苦労したことを覚えています。そのため、たまたま問題に直面し、PoolingDataSource を使用するという本来の目的を果たす時間ができました。
Spring 実装を使用した理由は、データベースに接続するためのパラメーターを設定する手段を提供するためです。
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