gpt4 book ai didi

java - 如何测量 JSF 中的操作执行时间?

转载 作者:行者123 更新时间:2023-11-30 04:52:26 25 4
gpt4 key购买 nike

我正在寻找一种方法来测量 JSF 应用程序中所有操作的执行时间。

到目前为止我发现的一个黑客解决方案是扩展com.sun.faces.application.ActionListenerImpl,覆盖processAction,并调用super.processAction em> 在我的实现中:

public class MyActionListener extends ActionListenerImpl {

public void processAction(ActionEvent event) throws FacesException {
watch.start();
super.processAction(event);
watch.stop();
}
}

然后我将自己的 ActionListener 实现添加到 faces 配置中:

<application>
<action-listener>MyActionListener</action-listener>
</application

但这增加了对 jsf-impl 的依赖并且很糟糕。有更好的解决办法吗?

最佳答案

您可以使用 PhaseListener 相反,并挂上 PhaseId.INVOKE_APPLICATION .

public class MyPhaseListener implements PhaseListener {

public PhaseId getPhaseId() {
return PhaseId.INVOKE_APPLICATION;
}

public void beforePhase(PhaseEvent event) {
watch.start();
}

public void afterPhase(PhaseEvent event) {
watch.stop();
}

}

注册为<phase-listener>相反。

请注意,我知道您的代码是伪代码,但为了完整起见,我想警告您,您需要认识到监听器的相同单个实例在所有线程/请求之间共享。您宁愿存储 watch在请求映射中,绝对不是作为实例变量。

关于java - 如何测量 JSF 中的操作执行时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9535412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com