Как определить, когда клиент веб-службы не получил полезную нагрузку - PullRequest
0 голосов
/ 27 августа 2009

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

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

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

Это веб-сервис Java, использующий Axis2 и JBoss с SOAP. Я копаюсь в документации для некоторых настроек по этому поводу, так что, надеюсь, это можно настроить.

Ответы [ 2 ]

2 голосов
/ 27 августа 2009

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

Я видел, как это делалось несколькими разными способами.

  • Предоставьте клиенту элемент, который указывает, что он получает полезную нагрузку x of y, если клиент не получает определенную полезную нагрузку из-за проблем с сетью, он может запросить эту конкретную полезную нагрузку снова.
  • Если это сценарий "все или ничего", то пусть клиент запросит какой-либо токен из веб-службы в начале транзакции, а затем, после того как он соберет все свои "страницы", тогда клиент может сделать еще один вызов, который сообщит веб-службе о завершении транзакции.

Надеюсь, это поможет.

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

Вы должны получить код ответа от веб-службы. Не считайте звонок на веб-сервис успешным, пока не получите ответ «200 - ОК».

...