Истекло время ожидания GWT-RPC - PullRequest
1 голос
/ 02 февраля 2012

Сценарий: пользователи записывают данные в мое веб-приложение / БД, иногда используя мобильные устройства с плохой comm.link (GPRS)

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

Через RpcRequestBuilder я могу добавить тайм-аут в запрос RPC, но если он истекает, есть ли способ узнать, были ли данные сохранены иэто был ответ, который был потерян, если даже запрос не достиг сервера?

Если это не единственный способ добиться этого, то через уникальные ограничения в моей базе данных.

Ты заранее

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Если запрос не выполнен с тайм-аутом, единственный 100% способ узнать, удалось ли сохранить данные полезной нагрузки, - это отправить другой запрос и посмотреть, правильно ли были сохранены данные.

0 голосов
/ 19 февраля 2013

Это состояние должно называться НЕИЗВЕСТНЫМ состоянием. Вы всегда будете сталкиваться с этими проблемами при разработке клиент-серверных и многоуровневых приложений, не только с тайм-аутом, но и с плохой обработкой ошибок на стороне сервера. Вы должны классифицировать ваши звонки на сервер, мне нравится это, Транзакция, Запрос и Важно. Транзакция - это то, что происходит в вашем случае (что-то будет изменено или обновлено на сервере) в случае сбоев этого типа для вызовов такого типа, Я информирую пользователя , что мы потеряли соединение при обработке его / ее запрос, и я также информирую его / ее о том, что ему / ей необходимо дважды проверить транзакции, прежде чем пытаться повторно выполнить их (если у вас есть первичный ключ или ссылка, вы можете выполнить эту проверку в поведении пользователя). Для вызовов Inquiries я просто игнорирую и снова вызываю, для последнего типа это обычно Inquiry, но важно, чтобы приложение работало, поэтому я отношусь к нему по-другому.

Вот почему важно иметь концепцию категоризации ваших звонков.

Аля

...