我正在使用BoneCP与Postgresql和Spring JdbcTemplate。当JdbcTemplate执行查询然后尝试关闭连接时,它会得到此异常:
org.postgresql.util.PSQLException: 无法在事务中更改只读属性。在 org.postgresql.jdbc2.AbstractJdbc2Connection.setReadOnly(AbstractJdbc2Connection.java:725) 下, 在com.jolbox.bonecp.ConnectionHandle.setReadOnly(ConnectionHandle.java:1279) 在com.jolbox.bonecp.ConnectionHandle.(ConnectionHandle.java:254) 下,在com.jolbox.bonecp.ConnectionHandle.recreateConnectionHandle(ConnectionHandle.java:273)下,在com.jolbox.bonecp.ConnectionHandle.close(ConnectionHandle.java:476)下,在org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:341) 下,在org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:328)下, 在org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:294)下,在org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:411)下,在org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:456)下,在org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:464)下,在org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:472)下,在org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:477)
由于无法关闭连接,打开的连接数量达到最大连接数,导致应用程序无响应。
我没有设置任何与事务相关的属性。因此,事务设置应为默认设置。我该如何解决这个问题?
依赖项和配置:
bonecp 0.8.0-rc1 postgresql 9.2-1002.jdbc4 spring-jdbc 3.2.1.RELEASE
org.postgresql.util.PSQLException: 无法在事务中更改只读属性。在 org.postgresql.jdbc2.AbstractJdbc2Connection.setReadOnly(AbstractJdbc2Connection.java:725) 下, 在com.jolbox.bonecp.ConnectionHandle.setReadOnly(ConnectionHandle.java:1279) 在com.jolbox.bonecp.ConnectionHandle.(ConnectionHandle.java:254) 下,在com.jolbox.bonecp.ConnectionHandle.recreateConnectionHandle(ConnectionHandle.java:273)下,在com.jolbox.bonecp.ConnectionHandle.close(ConnectionHandle.java:476)下,在org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:341) 下,在org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:328)下, 在org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:294)下,在org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:411)下,在org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:456)下,在org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:464)下,在org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:472)下,在org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:477)
由于无法关闭连接,打开的连接数量达到最大连接数,导致应用程序无响应。
我没有设置任何与事务相关的属性。因此,事务设置应为默认设置。我该如何解决这个问题?
依赖项和配置:
bonecp 0.8.0-rc1 postgresql 9.2-1002.jdbc4 spring-jdbc 3.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>