gpt4 book ai didi

XPage 中的 java.util.ConcurrentModificationException

转载 作者:行者123 更新时间:2023-12-01 10:49:07 24 4
gpt4 key购买 nike

我们在 XPages 中有这个基于浏览器的多页面应用程序。主窗口包含 5 个具有不同页面的框架,第二个(可能还有更多)包含文档,所有框架都具有不同的页面布局。我们曾经使用“内存中的所有页面”(最初来自 R8.5.1)来运行应用程序,它速度快如闪电,但占用内存。我们现在正在将其移动到“内存中的一页,其余的在磁盘上”。

我认为我们现在的情况是这样的:

  • 所有页面共享同一个 sessionScoped bean
  • 页面 A 自动刷新:每分钟发送一个 Ajax 请求来获取数据
  • 页面 B 恰好同时序列化一个 HashMap
  • 首页的刷新改变了正在序列化的HashMap

HashMap 是 bean 内的一个对象。为什么bean要序列化?我可能是错的,它可能只是一个正在序列化的不同的 HashMap...

无论如何,我的问题:如何同步这些操作,有一些简单的方法吗?

PS 我已经尝试过使用 ConcurrentHashMap,但我得到了一些非常奇怪的结果......

感谢您提供的任何帮助!

最佳答案

“为什么bean要序列化?”默认情况下,sessionScoped bean 不会被序列化。如果您使用像 ${someBean} 这样评估为 bean 的加载时绑定(bind),或者如果它序列化您可能在加载时绑定(bind)中引用的 HashMap,例如 ${someBean.someHashMap} (其中 ${是加载时绑定(bind),#{ 是运行时绑定(bind))。加载时绑定(bind)的结果保存在控制树中,当您将服务器端页面保存在磁盘上时,控制树会被序列化。解决方案是将这些引用更改为运行时绑定(bind)。

“如何同步这些操作”SSJS中有一个synchronized关键字,参见: http://mattwhite.me/blog/2009/9/14/on-synchronization-in-xpages.html但这只能保护SSJS中的对象免受并发访问;页面状态序列化不会在同一对象上同步,因此您仍然需要修复它以不序列化 bean&HashMap。

关于XPage 中的 java.util.ConcurrentModificationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34018769/

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