【发布时间】:2020-06-23 01:53:23
【问题描述】:
我在 Java Web Start 的 Swing 应用程序中有一个简单的动作侦听器(相信我,它在 99.99% 的情况下都能正常工作),它会从 UI 中被多次调用。这是场景
- 动作侦听器调用服务器端 (EJB) 方法,该方法填充 数据库中的一些表
- 服务器端可能需要很长时间(最多 1 分钟)来处理
请求 - 动作监听器只需要调用一次后端
- 在 99% 的情况下(在生产中),动作侦听器的工作方式为
预计 - 有 1% 的情况会调用多个后端方法
导致数据库中数据损坏的次数 - 试图模拟 2 个 UI 调用后端相同
输入,但无法复制
我认为可能有两个假设
- 动作监听器多次调用后端方法(可能是双击)
- 后端过载,无法维持线程完整性
我已经看到浏览器中 HTML 按钮的多次单击操作,并使用 javascript/jquery 处理它。 Swing 有类似的超敏感度吗?
我想使用 Eclipse 调试器来诊断线程问题,但不知道如何模拟这种情况。停止一个线程会导致整个事情无法启动另一个线程。
无论如何,Swing 应用程序是非常敏感的,如果有的话。它确实完成了将有效负载传递到数据库的工作,但在 1% 的情况下它会执行多次。我可以编写一些数据库代码来过滤数据,但如果这是根本原因,我更喜欢在 Swing 中进行修复。
我尝试通过发送多次点击来重新创建 Sikuli 的错误场景 到按钮但徒劳无功。您能否建议我一种方法来模拟这种可能的 UI/线程错误场景,以便我可以应用相关修复?这必须是可行的,因为 Swing 已经存在了几十年,而且许多遗留应用程序都使用 Swing 和 EJB。
感谢您的帮助。
谢谢
【问题讨论】: