Сервлет управления несколькими запросами - PullRequest
2 голосов
/ 05 августа 2009

Когда я нажимаю на ссылку, я вызываю сервлет. Когда я нажимаю эту ссылку несколько раз, сервлет выдает ошибку (детали ошибки не важны) Хотя есть и другие способы обойти это исправление (например, отключить ссылку после нажатия и т. Д.) Мне любопытно, есть ли способ контролировать этот объект запроса / ответа.

Ответы [ 4 ]

3 голосов
/ 05 августа 2009

ошибка актуальна, если несколько обращений к сервлету ведут себя не так, как один, это означает, что у вас есть проблемы с безопасностью потока, возможно, из-за того, как вы реализовали сервлет

1 голос
/ 03 сентября 2009

Ошибка действительно очень важна.

У вас могут быть проблемы с безопасностью потоков, но у вас также может быть «условие гонки», то есть результат процесса зависит от порядка выполнения, один из них может выдать ошибку.

(условие гонки: http://en.wikipedia.org/wiki/Race_condition)

1 голос
/ 05 августа 2009

Подробности ошибки сервлета потенциально интересны. API сервлетов вообще не должны выдавать ошибки, я думаю, что это какая-то ошибка приложения.

Общий принцип, который я пытаюсь применить:

1). Мы создаем пользовательский интерфейс, чтобы пользователю было трудно непреднамеренно отправить один и тот же запрос дважды (например, снять с моего счета 100 фунтов стерлингов, на самом деле не хочу отправлять два таких запроса. Именно в этом может помочь некоторый JavaScript-код nift.

2). Мы создаем приложение для защиты от неосторожных двойных запросов, например, путем включения какого-либо идентификатора в запросы, который позволяет обнаруживать дубликаты.

Мы не предполагаем, что пользовательский интерфейс совершенен, наш уровень бизнес-приложений несет конечную ответственность за предотвращение двойных действий.

0 голосов
/ 05 августа 2009

Установите флаг в области сеанса сервлета при входе в сервлет и сбросьте его при выходе. Если флаг установлен при входе, то молча игнорировать.

Вам потребуется обработка ошибок в вашем сервлете, чтобы исключение ServletException не оставляло флаг установленным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...