Я использую 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 9.2-1002.jdbc4 PostgreSQL весна-3.2.1.RELEASE
JDBC<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>
Я столкнулся с той же проблемой, и добавление зависимостей не помогло решить эту проблему. В любом случае, из-за ошибки проблема не похожа на то, что она не находит класс, на который она хочет ссылаться, но что-то о конфигурации пула соединений. – Salil