gpt4 book ai didi

GWT RPC 调用从另一个 GWT RPC 调用获取返回对象

转载 作者:行者123 更新时间:2023-12-01 06:30:16 25 4
gpt4 key购买 nike

我有一个奇怪的问题(希望您能提供帮助):我正在开发一个 GWT Web 应用程序,该应用程序有时会同时进行超过 4 - 5 个 GWT RPC 调用 - 就时间而言。

每隔一段时间 - 每 15 个电话可能一次?一个调用的返回对象被“分配”给另一个调用。我通过在客户端使用 gwt-log 库来证明这一点。

这里 HistoryChangesCount 调用的返回对象也被分配给了 ModelingGetTemplates 调用。

因此在进行调用的客户端文件中产生 ClassCastException,与 onSuccess 方法位于同一行。

你对我如何避免这种情况有什么建议吗?

PS - 我在错误级别记录每个响应 object.toString()。我知道这不是最佳实践。这只是为了排除故障。

[14:38:01.026] "(-:-) 2014-04-03 14:38:01,025 [ERROR] getHistoryChangesCount - HistoryPreviewFacet - SUCCESS RETURNED: HistoryChangesCount{dateToNumberOfChangesMap={Mon Mar 31 03:00:00 GMT+300 2014=3}, lastUpdatedOn=Mon Mar 31 11:11:02 GMT+300 2014}
"
[14:38:01.163] "(-:-) 2014-04-03 14:38:01,162 [ERROR] modelingGetTemplates - ModelingTemplatesDropdown - SUCCESS RETURNED: HistoryChangesCount{dateToNumberOfChangesMap={Mon Mar 31 03:00:00 GMT+300 2014=3}, lastUpdatedOn=Mon Mar 31 11:11:02 GMT+300 2014}
"
[14:38:01.175] "(-:-) 2014-04-03 14:38:01,174 [ERROR] Browser: null
java.lang.ClassCastException
at Unknown.iCb(StackTraceCreator.java:174)
at Unknown.sd(StackTraceCreator.java:508)
at Unknown.Txn(Throwable.java:46)
at Unknown.kIc(Cast.java:46)
at Unknown.rff(ModelingTemplatesDropdown.java:79)
at Unknown.bXi(AsyncWrapperForRPCManager.java:38)
at Unknown.Loe(RequestCallbackAdapter.java:232)
at Unknown.MWb(Request.java:258)
at Unknown.qXb(RequestBuilder.java:412)
at Unknown.anonymous(XMLHttpRequest.java:351)
at Unknown.eBb(Impl.java:189)
at Unknown.hBb(Impl.java:242)
at Unknown.anonymous(Impl.java:70)
"

以下是对modelingGetTemplates 的成功调用的样子:
[14:37:24.933] "(-:-) 2014-04-03 14:37:24,932 [ERROR] modelingGetTemplates - ModelingTemplatesDropdown - SUCCESS RETURNED: [Advanced Business Application, Advanced Business Transaction, TestTemplate]
"

我正在使用 Vanilla GWT-RPC。我只有一个扩展 AsyncWrapper 用于日志记录的类。我还为自己创建了一个客户端队列,将并行调用的数量限制为 4,但即便如此,它仍然会发生。

版本:
GWT:2.5.1
我也使用 Sencha GXT,不确定是否相关。

Here is a video of the issue reproducing - at 0:30 - this time another call get's the object from modelingGetTemplates.

最终结果是我的小部件永远停留在加载等待数据上。当然还有愤怒的用户:)

最佳答案

记录我解决这个问题的方式,而不是修复它:)(因为我找不到修复方法)

我创建了一个客户端 GWT RPC 调用队列。
UI 进行的任何 RPC 调用都会将调用注册到队列中,队列将管理(在高负载、读取延迟期间)调用的实际执行。

它的作用类似于线程池。我有一个常数,即一次可以进行多少并行调用,以及两次调用之间的最小时间间隔。我相信它最终被设置为 200 毫秒。

因此,通过执行上述操作,我(几乎)从未遇到过这个问题。频率太低了,没有人注意到了。

我猜测的原因如下:

我相信 GWT 框架有一些映射使用依赖于调用时间戳的键,如果两个调用同时发生,映射可能会切换调用,将结果困惑到调用映射。

关于GWT RPC 调用从另一个 GWT RPC 调用获取返回对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22837209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com