GWT中的每个RPC都受限于1分钟超时,这是不可配置的。
我正在使用调用WEBSERVICE的第三方提供商的SYNC METHOD。
有时这个METHOD(webservice)会挂起超过1分钟,并导致我的RPC崩溃。问题是我无法在服务器端捕获此异常,我需要回滚一些标志(这是一个更复杂的过程,这只是一个例子)
try {
...my code goes here...
MYTHIRDPARTYWS ws = new MYTHIRDPARTYWS()
String RESULT = ws.run;
...my code needs to take action depending of the result...
} catch (Exception e) {
...my code needs to take action depending of the exception...
}
我需要这样的东西:
try {
...my code goes here...
Process p = new Process() {
MYTHIRDPARTYWS ws = new MYTHIRDPARTYWS()
String RESULT = ws.run;
};
p.setTimeOut(40000);
p.run;
...my code needs to take action depending of the result...
} catch (Exception e) {
...my code needs to take action depending of the exception...
}
有什么想法吗?
答案 0 :(得分:0)
使用方法 ExecutorService.execute()在后台线程中生成一些任务。
要遵循的步骤:
web.xml
方法中从init()
读取一些init参数,例如timeout和threadpoolsize
AsyncContext
来获取request.startAsync()
onComplete()
,onTimeout()
,onError()
,onStartAsync()
ExecutorService.execute()
在后台线程中生成一些任务我已在此处发布了代码Asynchronous servlet not acting asynchronously
如果有任何混淆,请查看并告诉我。真的行。 您可以完全控制子流程的每个生命周期方法,以处理任何类型的异常。