2017-02-21 4 views
0

Клиент отправляет запрос и улавливает исключение таймаута. Однако сервер все еще обрабатывает запрос и сохраняет его в базе данных. До этого клиент уже отправил второй запрос, который удваивает запись в базе данных. Как я могу предотвратить это? Я использую сервлеты java и javascript.Обработка тайм-аута запроса на стороне клиента в java

+0

Err, увеличить таймаут? – EJP

ответ

0

Несколько предложений: -

1) Увеличьте время ожидания клиента.

2) Сделайте сервер более эффективным, чтобы он мог быстрее реагировать.

3) Попросите сервера ответить промежуточным ответом «Я работаю над ним», прежде чем вернуться с основным ответом.

4) Нужно ли серверу делать все работа перед тем, как он отвечает клиенту, или может быть выгружен в отдельный процесс для запуска позже?

0

Клиент отправляет запрос и улавливает исключение таймаута. Однако сервер все еще обрабатывает запрос

Сделать сервлет генерировать некоторый вывод (может быть просто пробелом) и промывать поток так часто (каждые 15 секунд, например).

Если соединение было закрыто на стороне клиента, запись завершится с отключением сокета.

Перед тем, что происходит, клиент уже направил второй запрос, который удваивает запись в базе данных

Используйте атомарность базы данных, например, уникальный ключ. Запустите процесс, создав уникальную запись (возможно, в некотором «незавершенном» статусе), она не сработает, если запись уже существует.

Смежные вопросы