我正在调用一个向我返回一些数据的Web服务(jsp页面)。我想暂停,因为有时需要很长时间才能做出回应。实现这一目标的正确方法是什么?如何设置请求超时和响应超时?可以使用session.setMaxInactiveInterval()
吗?
我的jsp页面看起来像这样 `public JSONObject performLogic(JSONObject state,Map additionalParams)抛出异常{
String callingSystem = state.getString("caller");
String cli = state.getString("cli");
String taxnumber = state.getString("taxnumber");
PosDataReaderService posService = new PosDataReaderService();
PosDataReader pos = posService.getPosDataReaderSoapPort();
OrderDataRequest orderDataRequest = new OrderDataRequest();
orderDataRequest.setTaxNumber(taxnumber);
Caller caller = new Caller();
caller.setCallingSystem(callingSystem);
OrderDataResponse orderDataResponse = pos.getOrderData(orderDataRequest, caller);
JSONObject result = new JSONObject();
result.put("var_ws_passportstatuscode", orderDataResponse.getPasportStatusCode());
return result;
};`
答案 0 :(得分:0)
您的问题的答案在这里How to timeout a thread您使用java.util.concurrent.ExecutorService
并创建一个实现java.util.concurrent.Callable
的Task类,并将您想要中断的代码放在那里等等。
我试图自己将该解决方案移植到JSP,但遇到了一个错误,我在https://stackoverflow.com/questions/22388069/error-porting-thread-timeout-solution-to-jsp上提出问题
但我想说你可能需要创建一个servlet并在servlet中使用该解决方案。似乎JSP不允许您在JSP中定义的类中覆盖超类方法。无论如何最好使用servlet。