JSF正在填补我们的会议时遇到了一个问题。前几天,我们发生了系统崩溃。将Heap发送给IBM进行审查,发现我们有一些会话多达50M。他们在会话中发现了JSF组件,并且其中一些组件非常大。
那么,有什么可以做的调整吗?配置项要看?或其他方向。
我们的系统是使用JSF和Spring作为表示层构建的,后端是EJB,Spring和Hibernate,它们都在WebSphere 6.1上运行。
JSF是一种有用的技术,但是您当然可以将其迷住了。
听起来好像是在扩大视图状态的大小(通过在组件上设置较大的值),或者是将对组件的引用泄漏到其他会话状态中(这很不好)。另一个潜在的罪魁祸首是过大的视图(我已经看到人们可以很容易地构建UI树,从而导致到处都有数据表的非常大的控制图)。我知道IBM提供了丰富的文本和电子表格控件-
我无法评论使用它们会对状态大小产生什么影响。
低调的工作是检查在 faces-config.xml中 为会话范围配置的托管bean 。
JSF在请求之间保存两件事:
之所以将它们分开是因为某些控件(例如数据表的子级)可以具有多个状态(每行一个)。状态可以保存到表单上的隐藏字段(如果未加密,则可能会带来很大的安全隐患)或会话中。为了容纳共享同一会话的多个浏览器窗口(在某些实现中,后退按钮支持),存储了多个视图。
大多数由IDE构建的JSF应用程序都有支持bean。通过会话bean范围,保持状态的时间可能比您想要的长,这可能会给会话造成压力。由于通常每页只有一个支持bean,因此您拥有的页面越多,问题就越大。检查您的
faces-config.xml ,看看这是否是潜在的问题根源。
您可能要做的其他事情是在 web.xml中
配置HttpSessionAttributeListener。您可以获取堆栈跟踪,以帮助识别应用程序中的问题区域。
__
问题内容: JSF是否可以进行将同时执行的ajax调用(在开始新的调用之前不等待先前的调用完成)? 问题答案: 不,它们被规范明确地排队,没有任何例外。参见JSF 2规范的 第13.3.2章: 13.3.2 Ajax请求队列 在将所有Ajax请求发送到服务器之前,必须将它们放入客户端请求队列中,以确保按发送顺序处理Ajax请求。在队列中等待时间最长的请求是下一个要发送的请求。发送请求后,Ajax请
问题内容: 我正在用Apache My Faces编写JSF 1.2应用程序。我不能使用任何自定义的组件库- 例如tomahawk或a4j等。有没有一种方法可以使用Ajax调用JSF的操作方法?完成JSF动作后,我想通过Javascript处理JSF动作的响应,并在客户端填充DIV标记?可能吗?谢谢。 问题答案: JSF 1.2不提供任何内置的ajax功能。您基本上有2个选择: Homegrow一
问题内容: 我已经为输出java.math.BigDecimal创建了自定义Converter。当BigDecimal为0.00或我要输出破折号时。 这是我的XHTML 我遇到的问题是当#{item.currentValue}是转换器中的方法未调用时。 我说它没有被调用是因为BigDecimal为时我没有错误,也没有语句输出。当BigDecimal不是预期值时,它会按预期方式工作,并且会打印出“
问题内容: 我是JSF的新手(2)。 在Struts中,我们可以从类似的URL调用动作。这将调用一个操作并返回一个结果页面,例如JSP(最初没有JSP / HTML)。 在JSF中如何做同样的事情?(我知道如何从.xhtml调用操作),即直接从URL调用托管bean并获取结果页面。 问题答案: 您要询问的模式并不是JSF工作方式的真正本机。 像Struts和Spring MVC这样的基于请求的框架
这方面有一个非常类似的问题:使用maven的netbeans中的Richfaces,即在GlassFish 4.1中部署JSF项目时会出现问题 我尝试创建一个JSF项目: a)Maven和javax.faces-war原型ver 2.2和 b)作为NetBeans项目 a) 素数面5-- 我在netbeans中遇到的例外是: 警告:StandardWrapperValve[Faces Servle
JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架。它提供了一种以组件为中心来开发 Java Web 用户界面的方法,从而简化了开发。JavaServer Faces 还引起了广大 Java/Web 开发人员的兴趣。“企业开发人员”和 Web 设计人员将发现 JSF 开发可以简单到只需将用户界面 (UI) 组件拖放到页面上,而“系统开发人员”将发