Hibernate - Tomcat - SQL Server - Проблема с закрытым подключением - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть веб-приложение, работающее на TOMCAT 7.0.5 - JDK 1.7 - и подключающееся к SQL Server 2012.

Спящий вариант - 4.3.5. Используется браузер IE 11.0.

Проблема в том, что у меня есть веб-страница: обычная форма отправки (submit.jsp). Он показывает страницу только для чтения (submitConfirm.jsp) и имеет две кнопки.

  1. Отправить - сохраняет приложение и перенаправляет страницу на домашнюю страницу, чтобы снова начать подписку
  2. Печать - с помощью javascript открывается новая вкладка для печати PDF-формы, которая, вероятно, занимает от 2 до 5 секунд для рендеринга на «новой» вкладке.
  3. Кнопка отправки отключена по умолчанию и доступна только тогда, когда пользователь нажимает кнопку ПЕЧАТЬ. Когда элемент все еще отображается, если кто-то нажимает на кнопку «Продолжить», все действия выполняются хорошо, и при этом я сохраняю как печать, так и подписку.
  4. Следующие введенные подписки приведут к ошибке http 500, указывающей «Соединение уже закрыто».
  5. Я использую стандартную парадигму HibernateUtil для начала / завершения / фиксации / отката транзакций.
  6. Все модели основаны на XML (не на основе декоратора сущностей).

Для нормальных рабочих процессов, где, если пользователь ждет, пока PDF будет отрендерен, все в порядке. Но если пользователь нажимает кнопку продолжения - кажется, есть проблема.

Прикреплен скриншот ошибки, когда кто-то считает полезным предоставить несколько советов. enter image description here

На основе отзывов пользователей (соответствующий метод):

 public String reportSessionId(String userId) throws InfrastructureException {
    String sid = null;
    try {
        sid = (String) HibernateUtil.getSession()
                .getNamedQuery("com.ttsme.ims.model.IMSUser.reportSessionId")
                .setString("userId", userId).uniqueResult();
    }
    catch (HibernateException ex) {
        throw new InfrastructureException(ex);
    }
    catch (Exception exp)
    {
        exp.printStackTrace();
    }
    return sid;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...