您好我正在使用一个webservice,它在代码执行完成后返回一个输出。 Web服务是否可能以自定义字符串的形式返回状态:测试已启动,正在测试,测试已完成等。
我需要做些什么才能实现这一目标。这是我当前的代码,我希望json字符串作为输入,提供的json被解析并正在执行进一步的处理。
//Class
public class WebserviceClient
{
/** calling constructor to initialize logger */
Utils c = new Utils();
Logger logger = Logger.getLogger(WebserviceClient.class.getName());
@Path("/test")
@POST
@Consumes(MediaType.APPLICATION_JSON)
//@Produces(MediaType.APPLICATION_JSON)
public String processRequest(final String inputData)
{
String executionID = "NOT_FOUND" ;
String result = "";
try
{
/** creating a pool of threads to submit a task to a callable thread */
ExecutorService ex = Executors.newFixedThreadPool(5);
Future<String> futureObject = ex.submit(new Callable<String>() {
@Override
public String call() throws Exception
{
logger.info("Parsing Received Request: "+inputData);
String rID = new JSONObject(inputData).getString("id");
logger.info("Received Id: "+rID + " From Request: "+inputData);
if(new RunTest().isTestCompleted(rID))
{
return rID;
}
else
{
return "777";
}
}
});
result = futureObject.get();
if(futureObject.get()!=null)
{
ex.shutdown();
}
else{
logger.debug("call id: "+executionID +" result is not generated yet. ");
}
logger.info("call id && Result: "+result);
}
catch(Exception e)
{
logger.error("call id: "+executionID, e);
}
return result;
}
}
答案 0 :(得分:0)
您需要以高频率连续轮询服务器以获得当前状态。
如需更多信息,请查看:
Continuous polling of output using spring ,rest and angular js
这包括使用WebSockets等的设计考虑,但我没有直接的解决方案。