我们有一个使用 mojarra (2.1.18-jboss)/primefaces(3.4.2) 的应用程序堆栈,其中包含用于所有页面级组件的复合组件(主要是一些标签)。
在执行批量测试时,我们注意到在开始执行后不久,服务器上的所有 CPU 上的负载不会很好地分布(它最初会像这样运行),所有流量都将加载到单个最大化的处理器上,吞吐量将减少到随着响应时间的稳步增加而爬行。
为了调试,我们尝试了多种方法来移除应用程序架构的各种服务,最终移除组合组件本身。使用纯 PrimeFaces 页面不会出现问题。
我们重新引入了一个简单的 CC 包装命令按钮(见下文),并发现只有 targetable 属性会导致此问题发生。
在将 CC 与 Mojarra 一起使用时,是否有其他人遇到过此问题或类似问题(请注意,该页面在组件方面并不是特别大 - 可能是 1-200 个组件左右)..?
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:composite="http://java.sun.com/jsf/composite"
>
<composite:interface>
<composite:attribute name="styleClass" required="false" />
<composite:attribute name="layoutClass" required="true"
default="standard1Column" />
<composite:attribute name="buttonAction"
method-signature="java.lang.String action()" targets="CommandButtonID"
targetAttributeName="action" />
<composite:attribute name="buttonActionListener"
method-signature="void listener(javax.faces.event.ActionEvent)"
targets="CommandButtonID" targetAttributeName="actionListener" />
<composite:attribute name="ajax" default="false" />
<composite:attribute name="disabled" default="false" />
<composite:attribute name="update" required="false" />
<composite:attribute name="process" required="false" default="@form" />
<composite:attribute name="immediate" required="false" default="false" />
<composite:attribute name="icon" required="false" />
<composite:attribute name="tabindex" required="false" />
</composite:interface>
<composite:implementation>
<p:commandButton id="CommandButtonID"
value="button"
title="button"
ajax="#{cc.attrs.ajax}" disabled="#{cc.attrs.disabled}"
update="#{cc.attrs.update}" process="#{cc.attrs.process}"
immediate="#{cc.attrs.immediate}"
tabindex="#{cc.attrs.tabindex}"
/>
</composite:implementation>
</html>
任何帮助或指示将不胜感激......