1

У меня есть проблема, что мой веб-приложение работает на кот часто падает следующее исключение:складочное подключение + проверка запроса + SQL_CALC_FOUND_ROWS

java.sql.SQLException: Connection already closed 

Так что я хочу, чтобы проверить подключение прежде, чем получить его из бассейна следующих конфигурации:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />   
    <property name="url" value="jdbc:mysql://localhost/database" /> 
    <property name="username" value="user" /> 
    <property name="password" value="pass" /> 
    <property name="validationQuery" value="SELECT 1"/> 
    <property name="testOnReturn" value="false"/> 
    <property name="testOnBorrow" value="true"/> 
    <property name="testWhileIdle" value="false"/> 
    <property name="maxActive" value="30" /> 
    <property name="maxIdle" value="15" /> 
    <property name="minIdle" value="5"/> 
    <property name="poolPreparedStatements" value="true"/> 
    <property name="connectionProperties" 
     value="useUnicode=true;characterEncoding=UTF-8;profileSQL=true;logger=custom.MysqlLogger;" /> 
</bean> 

при отправке следующих 2 запросов с пружинным JdbcTemplate:

SELECT SQL_CALC_FOUND_ROWS col1, col2, col3 AS foo FROM table HAVING foo = 'bar' LIMIT 0, 10; 
SELECT FOUND_ROWS(); 

Запрос SELECT FOUND_ROWS() всегда возвращает 1, потому что запрос проверки выполняется между («SELECT 1»).

Кто-нибудь знает, как решить эту проблему, не используя COUNT во втором запросе ???

ответ

2

Есть ли ваши запросы в одной транзакции?

+0

Вышеуказанная конфигурация в сочетании с использованием весенних транзакций решила мою проблему! P.S .: извините за поздний прием;) – TekTimmy