当前位置: 首页 > 知识库问答 >
问题:

为什么我的Glassfish3.1.2.2/MyFaces2.1.9/JSF-managed表现优于TomEE1.5 /CDI-managed?

方鸿羲
2023-03-14

我刚刚将我的web应用程序从JSF托管beans迁移到CDI托管beans,我特别希望Tomcat或TomEE Plus成为首选的容器,因为我听说“OpenWebBeans”非常棒。在部署、配置和测试TomEE 1.5/CDI managed beans web应用程序之后,整个页面刷新要比Glassfish 3.1慢得多。2.2/MyFaces 2.1。9/JSF托管bean。

与玻璃鱼3.1。2.2/MyFaces 2.1。9/JSF托管bean,整个页面刷新只需2到3秒。

使用TomEE 1.5/CDI管理的Bean,整个页面刷新需要5到10秒,有时甚至可能会更长(

你能告诉我为什么吗?

昨天,在将TomEE 1.5/CDI managed beans Web应用程序部署到生产服务器(Windows 2003 32位4GB RAM和1TB磁盘空间)之前,我阅读了以下内容,但这些内容根本没有回答我的问题:

glassfish v3 vs tomcat 7

我了解到PPR在性能上优于FPR,但我的会话超时/管理实现涉及以下内容:

>

  • LoginFilter(servlet过滤器)

    h中的以下内容:head

    meta http equiv=“refresh”content=“#{session.maxInactiveInterval};url=pf_viewExpired.jsf”

    CDI是否比JSF托管bean更(时间)昂贵,或者TOME是CDI的首选容器?我知道JBOSS(或CURE)是或有CDI的参考实现,因此最好考虑JBOSS/CURE。

    在完成从JSF托管bean迁移到CDI托管bean(以及从Glassfish迁移到TomEE)的任务之前,我在Glassfish/Weld上启动CDI托管bean web应用时遇到了问题。

    请回答上述问题,并/或提出建议。谢谢

  • 共有1个答案

    印成天
    2023-03-14

    如上所述,我正在与OpenEJB(TOME)提交者合作解决这个问题。就我个人而言,我觉得这个问题可能是由以下原因造成的:

    1. CDI托管bean在应用中定义和引用
    2. 可能的CDI循环引用(可能在CDI 1.1中解决)
    3. 一个非常大的CDI@SessionScoped bean,它引用/注入许多其他CDI bean来完成应用程序中的业务逻辑(或任务)
    4. TomEE/OpenWebBeans(仍在开发中)

    因此,答案仍有待确定。我为此问题打开了以下OpenEJB JIRA(URL如下)。如果有兴趣的话,请随意观看这个JIRA。

    第1.5卷。1个快照(和CDI bean)在我的生产服务器上运行缓慢

    更新:

    现在,TomEE/CDI托管bean在生产服务器上的性能与Glassfish/JSF托管bean一样好,因为我最近做了以下工作:

    1. 用@实体命名查询替换常用的动态SQL
    2. 添加查询提示到JPA createQuery()和createNamedQuery()
    3. 替换经常使用的渲染="#{EL表达式}"为新的facelets和ui:包括src="#{EL表达式}",因为TomEE提交者建议渲染="#{EL表达式}"被调用6次。

    因此,我的TomEE/CDI托管bean现在在正式服上运行,我正在监控性能和最终用户报告/体验。

     类似资料:
    • 主要内容:使用XML配置,使用@ManagedBean注解JSF 托管bean(Managed Bean)是JSF注册的常规Java Bean类。托管bean包含getter和setter方法,业务逻辑。JSF托管bean作为UI组件的Model。 它存储JSF xhtml页面使用的数据。借助JSF框架,可以从JSF页面访问托管Bean。 在JSF 1.2中,我们必须在JSF配置文件(如)中注册受管理的bean。 从JSF 2.0可以使用注解注册管理be

    • 所以我的问题是为什么not Queue比list更受欢迎。我相信一定有某种原因,但不知何故,我错过了这种理解? 更新:-这是我明确的要求 1)加法发生在末尾,应该很快。可能是O(1) 3)由于查找将基于om索引进行,因此两者都将是O(1)

    • 问题内容: 我在服务器上有一个网站。主页为example.com/index.php。 好的,我将一个index.html命名文件上传到服务器(根目录),当我在浏览器的URL栏中键入站点的域时,感到很惊讶,因为index.html页面已加载。 (example.com-> example.com/index.html)所以不是我想要的。 我的问题:为什么会这样?为什么index.html比inde

    • 我一直在用OpenMP调用这个 在C11 std::threads中(我相信这些只是pthreads) 但是,OpenMP的实现速度是原来的两倍——更快!我本以为C11线程会更快,因为它们更低级。注意:上面的代码在一个循环中不仅被调用了一次,而且可能被调用了10000次,所以这可能与此有关吗? 编辑:为了澄清,在实践中,我要么使用OpenMP,要么使用C 11版本——不是两者都使用。当我使用Ope

    • 问题内容: 我最近才发现我认为这里有些奇怪。为什么会这样,并且处于不同的优先级?我会以为他们处于同一水平。以上证明了这一点。即使从左到右的求值对第一个给出的都是假,而第二个则给出的是真,这两个陈述都是正确的。 有人知道这背后的原因吗? (顺便说一句,我只是在这里使用了很多括号,但是是旧代码提出了这个问题) 问题答案: 因为在传统的数学表示法中,(逻辑合取)的优先级高于(逻辑合取)。 出于显而易见的

    • 我有一个spring data jpa应用程序,它使用H2进行存储。当我尝试将一些数据解析到表中时,我得到一个错误: 我有一个表定义为: 我的@Entity类为: 这是令人反感的记录,它显然小到足以容纳该列: 我所能想到的是分号或其他一些无效字符正在引发此异常。 有人能看到这里的问题,并提出处理它的替代方案吗?