当前位置: 首页 > 面试题库 >

JSF调整

晏阳飙
2023-03-14
问题内容

JSF正在填补我们的会议时遇到了一个问题。前几天,我们发生了系统崩溃。将Heap发送给IBM进行审查,发现我们有一些会话多达50M。他们在会话中发现了JSF组件,并且其中一些组件非常大。

那么,有什么可以做的调整吗?配置项要看?或其他方向。

我们的系统是使用JSF和Spring作为表示层构建的,后端是EJB,Spring和Hibernate,它们都在WebSphere 6.1上运行。


问题答案:

JSF是一种有用的技术,但是您当然可以将其迷住了。

听起来好像是在扩大视图状态的大小(通过在组件上设置较大的值),或者是将对组件的引用泄漏到其他会话状态中(这很不好)。另一个潜在的罪魁祸首是过大的视图(我已经看到人们可以很容易地构建UI树,从而导致到处都有数据表的非常大的控制图)。我知道IBM提供了丰富的文本和电子表格控件-
我无法评论使用它们会对状态大小产生什么影响。

低调的工作是检查在 faces-config.xml中 为会话范围配置的托管bean 。

JSF在请求之间保存两件事:

  • 视图(页面上的所有控件)
  • 视图状态(控件的状态)

之所以将它们分开是因为某些控件(例如数据表的子级)可以具有多个状态(每行一个)。状态可以保存到表单上的隐藏字段(如果未加密,则可能会带来很大的安全隐患)或会话中。为了容纳共享同一会话的多个浏览器窗口(在某些实现中,后退按钮支持),存储了多个视图。

  • 应该有一个配置选项来设置应用程序在任何给定时间在给定用户的会话中保留的视图状态数。
  • 您可以通过提供一个StateManager来衡量视图状态的大小,该StateManager可以衡量保存的视图/状态的大小(使用带有StateManager的公共构造函数在faces-config.xml中配置一个StateManager- 有关更多详细信息,请参见JSF规范 PDF;请参见JSF spec PDF。状态是可序列化的,您可以通过将其转储到流中来检查其大小)。

大多数由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这样的基于请求的框架

  • JSF

    这方面有一个非常类似的问题:使用maven的netbeans中的Richfaces,即在GlassFish 4.1中部署JSF项目时会出现问题 我尝试创建一个JSF项目: a)Maven和javax.faces-war原型ver 2.2和 b)作为NetBeans项目 a) 素数面5-- 我在netbeans中遇到的例外是: 警告:StandardWrapperValve[Faces Servle

  • JSF

    JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架。它提供了一种以组件为中心来开发 Java Web 用户界面的方法,从而简化了开发。JavaServer Faces 还引起了广大 Java/Web 开发人员的兴趣。“企业开发人员”和 Web 设计人员将发现 JSF 开发可以简单到只需将用户界面 (UI) 组件拖放到页面上,而“系统开发人员”将发