gpt4 book ai didi

java - Xpages 掉出服务器端缓存

转载 作者:行者123 更新时间:2023-11-29 04:59:42 25 4
gpt4 key购买 nike

这个问题可能与非常具体的 Domino 版本有关(见下文),所以我从一些技术细节开始:

有问题的服务器是虚拟化的 Windows 2008 R2 64 位机器。多米诺骨牌发布是

IBM Domino (r) Server (64 Bit) (Release 9.0.1FP4 HF70 for Windows/64)

已安装最新的 JVM 安全补丁(9.0.1.4,日期为 20150724)。

我可能错了,但我觉得问题是在我们安装最新补丁(FP4 HF70JVM)后开始的:

在 Xpage 上,我有一个非常简单的“刷新”类型按钮,它只触发围绕较大屏幕的 xp:panel (id="pnMainContainer") 的部分刷新我页面的一部分。在其他组件中,pnMainContainer 中有一个选项卡式面板。这设置为在加载页面时使用三个选项卡中的第一个打开。

假设我打开了第三个选项卡,通常如果我单击“刷新”按钮,选项卡 #3 会保持打开状态,并且其内容会按预期刷新。

然而,有时候,在我让页面打开几分钟后(真的不能说多长时间,大概半小时左右),刷新显然回到了初始状态,显示第一个选项卡而不是一个之前打开的,并清空之前填写的所有可编辑字段。

发生这种情况时,我会在控制台上看到以下警告:

HTTP JVM: WARNING: CLFAD####W: State data not available for /myPage because no control tree was found in the cache.

我在这里知道这篇文章:Xpages document changing document mode? ,虽然我没有在我的应用程序中使用 Xagents,但我尝试将我页面的 viewState 属性设置为 nostate。这显然无助于解决问题。

另一个可能有用的细节是,有问题的页面使用绑定(bind)到 viewScope 的 managedBean。

任何想法可能导致这种情况,以及 - 此外 - 如何改变这种行为?

2015-09-10 更新:按照@Paul 的以下建议,我昨晚将应用程序的 session 超时设置为 120 分钟 (xsp.session.timeout= 120)。今天早上我再次尝试:加载有问题的页面然后让它在那里停留大约。 45分钟。在那之后点击我的部分刷新按钮。结果:页面重新加载到初始状态,服务器控制台显示与昨天相同的警告。

为了完整起见,这里是我应用程序的 xsp.properties 目前的全部内容:

xsp.error.page.default=true
xsp.library.depends=com.ibm.xsp.extlib.library
xsp.resources.aggregate=true
xsp.theme=oneuiv3.0.2
xsp.session.timeout=120
xsp.application.timeout=120
xsp.persistence.mode=basic

是否可能有什么东西会导致这种行为?

更多细节: 进行了更多测试并发现了以下细节:

  1. 使用上面提到的 xsp.properties 缓存似乎可以稳定一段时间,只要我让页面就在那里
  2. 一旦我在我的页面或相关代码(SSJS 库、托管 bean 或页面本身)中的某个位置进行了任何类型的调整,就需要重建缓存,因为我的页面状态丢失了(即使经过几次秒)。是否在 Designer 中打开“自动构建”根本无关紧要
  3. 尝试将页面持久性从 xsp.persistence.mode=basic 设置为 xsp.persistence.mode=file。这会在我打开选项卡 #3 时立即导致“java.io.NotSerializableException”,它使用在 viewScope 级别注册的 managedBean 的内部属性
  4. 在同一台服务器上构建了一个非常简单的应用程序,只有几个部分刷新按钮:结果是该测​​试应用程序的页面永远不会丢失页面状态

只要缓存仅在我更新设计时丢失,我才不在乎。但我担心如果许多用户开始访问这些页面,这可能会升级。

我还能做些什么来提高性能?

最佳答案

viewState="nostate"基本上意味着不存储此页面服务器端的组件树或作用域变量。这就是您将它用于永远不会部分刷新的 XAgent 的原因。

关键数据是:1) XPages session 设置为超时的速度有多快。一旦超时,您将丢失状态数据。我认为 keepSessionAlive 控件在这里没有帮助。2) 是否正在浏览器中打开其他选项卡。还有其他 XPages 属性确定存储在内存/磁盘中的页数。最大值为整个浏览器 session 存储,一旦达到最大值,最早的将从内存中删除,因此会出现相同的消息(以及在 XAgents 上设置 nostate 的另一个原因。

听起来第一个是原因。请注意,XPage session 超时和 http 超时是不同的超时。第一个是当前 session 的状态数据被删除并且是特定于应用程序的(因为每个 XPages 应用程序都有一个单独的运行时 JVM),第二个是对浏览器的后续请求将提示进行身份验证。

关于java - Xpages 掉出服务器端缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32482575/

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