Новичок здесь.Как я могу сделать много вызовов WS в отдельных потоках и увеличивать единую переменную результата?
Мне нужно выполнить действие Struts для получения некоторых данных путем многократного вызова веб-сервиса с различным запросом и ждать завершения каждого запроса, чтобы я мог отображать результат.
Поэтому в основном я делаю это так:
// The list of the region codes used for the requests
List<String> codesRegions;
// Init of a variable containing the total amount of data
Integer totalAmount = 0;
// For every region
for(String codeRegion : codesRegions)
{
MyRegionStub stub = createRegionStub();
// Call of the WS with the code region
MyRegionRequest request = new MyRegionRequest();
request.setCodeRegion(codeRegion);
// Getting the number associated to the region and incrementing totalAmount
MyRegionResponse response = stub.getRegionStats(request);
totalAmount += response.getRegionStats();
}
// Once all the calls are done, I display the result
request.setAttribute("totalAmount", totalAmount);
mapping.findForward("success");
Моя проблема заключается в том, что я часто получаю тайм-аут ошибки, делая это, как я называю этот WS много раз. Поэтому я хочу знать, как я могу делать каждый вызов в отдельном потоке и увеличивать одну и ту же переменную результата без какой-либо ошибки.
Еще одна вещь, которую я хочу знать, мне нужно дождаться завершения всех вызовов, чтобы отобразить данные. Что мне нужно сделать, чтобы позвонить mapping.findForward("success");
, только когда это будет завершено?
Большое спасибо за ваш ответ. К сожалению, я работаю над старым проектом, используя более старую версию Java (Java 6), поэтому я не могу использовать это решение ... Я буду помнить это для последующих целей! – Someday