我们有一个使用mojarra(2.1.18-jboss)/ primefaces(3.4.2)的应用程序堆栈,其中包含所有页面级组件的复合组件(主要是一些标签)。
在执行批量测试时,我们注意到在开始执行后很快就会在服务器上的所有CPU上散布好的负载(它最初会运行),所有流量都会加载到单个最大输出处理器上,吞吐量会通过稳步增加响应时间来减少爬行。
为了进行调试,我们尝试了许多方法来删除应用程序体系结构的各种服务,最终删除了复合组件本身。使用纯PrimeFaces页面时,问题不会出现。
我们重新引入了一个包装commandButton的简单CC(见下文),并发现只有targettable属性会导致出现此问题。
当使用带有Mojarra的CC时,是否有其他人遇到此问题或类似问题(注意页面在组件方面不是特别大 - 可能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>
非常感谢任何帮助或指示...