- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题可能与非常具体的 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 HF70 和 JVM)后开始的:
在 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
是否可能有什么东西会导致这种行为?
更多细节:
进行了更多测试并发现了以下细节:
xsp.persistence.mode=basic
设置为 xsp.persistence.mode=file
。这会在我打开选项卡 #3 时立即导致“java.io.NotSerializableException”,它使用在 viewScope 级别注册的 managedBean 的内部属性只要缓存仅在我更新设计时丢失,我才不在乎。但我担心如果许多用户开始访问这些页面,这可能会升级。
我还能做些什么来提高性能?
最佳答案
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/
我是一名优秀的程序员,十分优秀!