2013-08-08 2 views
0

Я использую пул соединений, предоставляемый JBoss 7, и я выполняю connection.close() после каждого действия.Временные столы и пул соединений

Но когда я создаю временную таблицу, она не остается для текущего пользователя, потому что он использует новый сеанс из базы данных (из-за connection.close() и объединения).

Например, я создаю временную таблицу в действии. Пользователь меняет страницу. Новое действие должно выполнять запросы в таблице temp, но этого больше не существует.

Итак, я действительно не знаю, как предоставить временные таблицы с такой архитектурой.

ответ

1

Временные таблицы в сочетании с средствами объединения пулов область запроса для временных таблиц. Вы хотели бы иметь сфера сеанса временных таблиц.

Я не знаю о готовом решении. Так варианты

  1. Создать нормальные таблицы с префиксом/суффиксом ассоциированных эти с пользователем
  2. Используйте же соединение для пользователя на протяжении всего сеанса
  3. Перепишите заявление: Вместо временных таблиц прочитайте данные полностью и сохраните их в HTTP-сеансе . Возможно, база данных может постраничной так что нет необходимости кэшировать промежуточные результаты и т.д.

Варианты 1 и 2 требуют очистки, особенно если сессия не закрыта должным образом. Вариант 2, возможно, требует много ресурсов. Поэтому я бы исследовал третий вариант, даже если он, кажется, самый громоздкий.

+0

Я только что изменил свой код, чтобы использовать вариант 2, и он работает как шарм. Спасибо! Более того, я создал SessionListener для удаления временных таблиц и закрытия соединения. – Florent06