私はPostgresqlとSpringJdbcTemplateでBoneCPを使用しています。JdbcTemplateがクエリを実行してから接続を閉じようとすると、次の例外が発生します。
org.postgresql.util.PSQLException:トランザクションの途中でトランザクションの読み取り専用プロパティを変更できません。org.postgresql.jdbc2.AbstractJdbc2Connection.setReadOnly(AbstractJdbc2Connection.java:725)at com.jolbox.bonecp.ConnectionHandle.setReadOnly(ConnectionHandle.java:1279)at com.jolbox.bonecp.ConnectionHandle。(ConnectionHandle.java:254) com.jolbox.bonecp.ConnectionHandle.recreateConnectionHandle(ConnectionHandle.java:273)at com.jolbox.bonecp.ConnectionHandle.close(ConnectionHandle.java:476)at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java :341)org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:328)at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:294)atorg。
接続を閉じることができないため、開いている接続が最大接続数に達し、アプリが応答しなくなります。
トランザクション関連のプロパティを設定していません。したがって、トランザクション設定はデフォルトである必要があります。どうすればこれを修正できますか?
依存関係と構成:
bonecp 0.8.0-rc1 postgresql 9.2-1002.jdbc4 spring-jdbc3.2.1.RELEASE
<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close"> <property name="driverClass" value="org.postgresql.Driver" /> <property name="jdbcUrl" value="jdbc:postgresql://127.0.0.1/mkayman" /> <property name="username" value="mkayman" /> <property name="password" value="" /> <property name="idleConnectionTestPeriodInMinutes" value="5" /> <property name="idleMaxAgeInMinutes" value="30" /> <property name="maxConnectionsPerPartition" value="5" /> <property name="minConnectionsPerPartition" value="2" /> <property name="partitionCount" value="2" /> <property name="acquireIncrement" value="1" /> <property name="statementsCacheSize" value="100" /> </bean>