スレッド初心者はこちら。WSコールを別々のスレッドで実行し、単一の結果変数をインクリメントするにはどうすればよいですか?
私はStrutsアクションで毎回異なるリクエストで何度もWebサービスを呼び出してデータを取得し、すべてのリクエストが完了するのを待って結果を表示できるようにする必要があります。
だから、基本的に私はこのようにそれをやっている:
// 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