我正在开发一个JSF应用程序,它应该支持同时登录的大量用户。当我们尝试压力测试时,我们发现大部分CPU时间花在重构和遍历组件树上。
我的第一个想法是尝试使页面的特定部分无状态,从而从组件树中排除。但是如果我将一个表单元素与f:view标记为transient:
<f:view transient="true">
<h:form>
....
</h:form>
</f:view>
,页面上的所有其他表单也是无状态的(隐藏的输入字段应该保持状态对'value'属性值'无状态':)。
有没有办法让页面上的特定表单无状态,或者整个页面可以是无状态还是有状态?
感谢您提供任何帮助!
编辑:
为了实现,我们使用Mojarra 2.2.7,Primefaces 4.0作为组件库,Omnifaces 1.7用于一些实用功能。
答案 0 :(得分:0)
根据Balusc对此link所说的内容,在视图标记上应用瞬态将使整个视图(即页面)无状态,这是有意义的,因为将transient设置为true会调用setTransient()
on UIViewRoot
对象。使用当前设置无法完成此操作。我不确定是否存在黑客攻击或解决方案以实现具有多个状态的单个页面的替代方式。