Я отредактировал свой ответ, подумав еще об этом .
У вас довольно сложная архитектура, и если ваш клиент запрашивает информацию с сервера, чтобы выполнить запрос, тоЯ думаю, что вам нужно опубликовать один или несколько «вспомогательных» методов.
Например, вы можете опубликовать (без всей аннотации веб-службы):
MyData validateMyData(MyData data);
boolean processMyData(MyData data);
Затем клиент будет вызывать validateMyData()
столько раз, сколько ему хотелось, пока он не узнал, что располагает полной информацией.Сервер может изменять (с помощью вычислений, поиска в базе данных или чего-либо еще) переменные в MyData
, чтобы помочь заполнить информацию и передать ее клиенту (для обновления пользовательского интерфейса, если таковой имеется).
Как только информация завершена, клиент может затем вызвать processMyData()
для обработки полного запроса.
Это имеет то преимущество, что серверные методы могут быть реализованы без необходимости фоновых потоков, как они должны быть.в состоянии выполнить свою задачу, используя поток запросов, предоставленный серверной средой.
Единственное предостережение для этого, если MyData
может стать очень большим, и вы не хотите продолжать передавать его назад и вперед междуклиент и сервер.В этом случае вам потребуется создать меньший класс, который просто содержит изменения, которые сервер хочет внести в MyData
, и исключить данные, которые не нуждаются в исправлении.