java - 使用 gwt-rpc 时检测服务器上取消的请求

标签 java gwt rpc

在 gwt 客户端中,我可以通过让 Async 接口(interface)中的方法返回一个 Request 对象来取消请求,该对象包含我可以调用的 cancel() 方法。

到目前为止一切顺利,但是有没有办法在服务器上运行的 java 代码中检测到这一点?

我的用例是,我有一个 rpc 调用,需要很长时间才能在服务器上完成,并且用户可以使用“取消”按钮来停止请求。

并且如果用户取消请求,服务器应该停止处理,但似乎没有办法检测客户端是否关闭了连接。

最佳答案

使用服务器的请求线程来执行长时间运行的任务通常不是一个好主意。您需要重新设计它们以异步执行(如果您还没有这样做)。您可以利用 FutureTask 和 Executors 等 java.util.concurent 工具来实现此目的。您还需要使用线程池来确保控制并发任务的最大数量。

当您从客户端提交长任务请求时,您需要在安排执行后立即向 FutureTask 返回一个引用键(例如 UUID 或某个唯一字符串)。然后要取消任务,您需要从客户端传递 key 并查找您的任务并取消它:

有关更多详细信息,请参阅 javadoc:

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/FutureTask.html

关于java - 使用 gwt-rpc 时检测服务器上取消的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27932494/

相关文章:

java - 是否可以默认使对象的所有字段都@Transient

java - Apache POI 公式未评估

java - JAR 不存在或不是普通文件

java - 单击按钮后删除 GWT 中生成的面板

c - 在不使用 XDr 的情况下在同一主机上使用 RPC

java - 是否有模拟 C 的 crypt 函数的 java 函数?

gwt - 如何预加载我的 RunAsync 代码拆分

javascript - 在 GWT (JSNI) 中将字符串转换为 JSON 对象

c++ - RPC:端口映射运行时出现超时错误

php - Websockets 通知/聊天系统