请在下面找到我的要求。java实现:轮询web服务
要求:轮询Web服务。属性文件中配置了两个关键的轮询参数max_timeout,polling_interval。总体目标是花费整体时间获得回应。如果我们在max_timeout中获得响应,我们可以将响应返回给客户端。否则,我们会抛出一个错误,指出操作不成功。
下面是我写的代码片段。
int maxTimeOut = 10;
int interval = 2;
int iterations = maxTimeOut/interval;
boolean success = false;
for (int i = 0; i < iterations; i++)
{
System.out.println("Number of iteration = " + i);
try
{
Thread.sleep(interval * 1000);
System.out.println("Waited for " + interval + " seconds");
success = getWSResponse(i);
System.out.println("CALL" + ((success) ? "SUCCESSFUL" : "FAIL"));
if(success) break;
}catch (InterruptedException ie)
{
System.out.println(ie.getMessage());
}
}
//Send the success flag to client
如果这是轮询的正确实施,你能纠正我吗?我有点担心这段代码假设web服务调用很快返回。如果这需要2-3秒(通常是这样),那么我们将单独花费超过max_timeout。我们如何解决这个问题。有没有比这更好的方法。
'catch(InterruptedException ie){System.out.println(ie.getMessage()); }'不要那样做。只需重新抛出它{{抛出新的RuntimeException(ie)}' – artbristol
感谢artbristol为您的建议。我将使此代码更改为抛出RTE而不是SOP。 –