GWT:客户端过程和 rpc 请求总是被多次调用,具有多个线程 id

Posted

技术标签:

【中文标题】GWT:客户端过程和 rpc 请求总是被多次调用,具有多个线程 id【英文标题】:GWT: Client procedure and rpc request are always called several times with multiple thread id 【发布时间】:2020-12-16 09:59:26 【问题描述】:

对于一些客户端程序,我实现了远程日志记录来记录程序的调用。日志会以不同的线程 id 打印多次,即使该过程只被调用一次。一些 rpc 请求被发送到服务器几次,这会导致一些数据库会话问题。正常吗?有没有办法避免呢?

谢谢

【问题讨论】:

【参考方案1】:

这是不正常的,表明您的客户端存在错误,导致它多次发送同一个呼叫。尝试在调用 RPC 调用的客户端上添加日志记录,并可能添加断点以确认它被调用两次的原因。

在没有其他信息的情况下,我的最佳猜测是您有多个事件处理程序连接到同一个按钮或类似的东西。

--

更具体地说,您的 servlet 容器启动多个线程来处理传入的请求 - 如果两个请求紧接而来,它们可能由不同的线程处理。

正如您所指出的,这可能会导致数据库出现问题,其中可能会同时进行两次调用来更改相同的数据,尤其是在您进行一些检查以确保 servlet 调用不会意外覆盖某些较新的数据时。这几乎可以肯定是您的客户端代码中的一个错误,应该从那里开始调试它。

【讨论】:

以上是关于GWT:客户端过程和 rpc 请求总是被多次调用,具有多个线程 id的主要内容,如果未能解决你的问题,请参考以下文章

GWT RPC 调用在编译模式下不起作用

GWT RPC 调用失败

GWT 和 XSRF 保护

GWT 客户端 RPC 请求序列化

什么反序列化 GWT RPC 调用客户端

GWT:在另一个模块中调用 RPC 服务