【问题标题】:Best place to insert a common function in a JSF application?在 JSF 应用程序中插入通用函数的最佳位置?
【发布时间】:2015-05-04 05:41:13
【问题描述】:

有一个大型 JSF 应用程序同时被多个用户使用。

应用程序出现 PemGem 空间错误、CPU 使用增加(主要是由于垃圾收集)和 RAM 使用增加。我们需要优化代码库以及其他几个措施来克服这些问题。

该应用程序广泛使用很少的常用功能。我想知道哪个是包含此类函数以优化内存和 CPU 使用率的最佳位置。

示例函数(如果需要,我们可以简单地将它们转换为静态函数)

public long calculateAgeInDays(Date dob, Date toDate) {
    if (dob == null || toDate == null) {
        return 0l;
    }
    long ageInDays;
    ageInDays = (toDate.getTime() - dob.getTime()) / (1000 * 60 * 60 * 24);
    if (ageInDays < 0) {
        ageInDays = 0;
    }
    return ageInDays;
}

包含这些非常常见的功能的最佳位置是什么。

  1. EJB - 单顿
  2. EJB - 无状态
  3. JSF 托管 Bean(控制器)- 应用范围
  4. JSF 托管 Bean(控制器)- 会话范围
  5. JSF 托管 Bean(控制器)- 请求范围
  6. 简单的 Java 类

提前致谢

【问题讨论】:

  • 我怀疑这会对性能产生积极影响。您是否分析过您的应用程序?有帮助的是将复杂的 EL 转换为 bean 中的 getter 中的功能,并“懒惰”地进行操作,因此它们只被评估一次。

标签: jsf ejb cdi


【解决方案1】:

我会将这些方法作为静态方法保留在 Util 类中。如果在整个应用程序中广泛使用它们,那么没有理由将它们保留为 EJB 或 JSF bean 的一部分。不过,不确定它对性能的影响。

【讨论】:

  • Util 类是指没有任何注释的普通 Java 类吗?
  • 是的,带有静态方法的简单 Java 类。
猜你喜欢
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
  • 1970-01-01
  • 2014-11-20
  • 2017-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多