`

appfuse学习笔记(不断更新)

阅读更多
一、
如何对Appfuse开发的系统进行性能优化:
  1. hibernate的优化。这步很关键。我把所有一对多的hbm文件里的lazy属性都设置成true,另外,hibernate的fecthsize设置成1。这样就系统的性能就好了不少。
  2. 设置jsp缓存。其实,appfuse本来就配置有oscache来缓存jsp的。但appfuse的作者觉得jsp缓存会影响jsp的调试,所以把oscache给禁止了。其实在生产环境里,用户是很少改动jsp的,所以应该打开jsp缓存。我们只需修改web.xml文件,把oscache的注释去掉就可以使用jsp缓存了。jsp缓存的效果非常好。
  3. 把clickstreamFilter去掉。clickstream是用来给管理员查看用户点击url的历史记录用的。如果不关心这个,完全可以把clickstreamFilter去掉。因为它捕获每次点击,并在内存里存储,还是有些影响性能的。

二、spring 监听器 IntrospectorCleanupListener简介

spring中的提供了一个名为org.springframework.web.util.IntrospectorCleanupListener的监听器。它主要负责处理由 
JavaBeans  Introspector的使用而引起的缓冲泄露。spring中对它的描述如下:
 
它是一个在web应用关闭的时候,清除JavaBeans Introspector的监听器.在web.xml中注册这个listener.可以保证在web 应用关闭的时候释放与掉这个web 应用相关的class loader 和由它管理的类
 
如果你使用了JavaBeans Introspector来分析应用中的类,Introspector 缓冲中会保留这些类的引用.结果在你的应用关闭的时候,这些类以及web 应用相关的class loader没有被垃圾回收.
 
不幸的是,清除Introspector的唯一方式是刷新整个缓冲.这是因为我们没法判断哪些是属于你的应用的引用.所以删除被缓冲的introspection会导致把这台电脑上的所有应用的introspection都删掉.
 
需要注意的是,spring 托管的bean不需要使用这个监听器.因为spring它自己的introspection所使用的缓冲在分析完一个类之后会被马上从javaBeans Introspector缓冲中清除掉.
 
应用程序中的类从来不直接使用JavaBeans Introspector.所以他们一般不会导致内部查看资源泄露.但是一些类库和框架往往会产生这个问题.例如:Struts 和Quartz.
 
单个的内部查看泄漏会导致整个的web应用的类加载器不能进行垃圾回收.在web应用关闭之后,你会看到此应用的所有静态类资源(例如单例).这个错误当然不是由这个类自身引起的.


这个listener的源代码 :

package org.springframework.web.util;

import java.beans.Introspector;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class IntrospectorCleanupListener implements ServletContextListener {
    
public void contextInitialized(ServletContextEvent event) {
    }


    
public void contextDestroyed(ServletContextEvent event) {
        Introspector.flushCaches();
    }

}
分享到:
评论

相关推荐

    appfuse学习笔记(一)安装部署

    NULL 博文链接:https://savagegarden.iteye.com/blog/427169

    AppFuse学习笔记(J2EE入门级框架)

    Appfuse是Matt Raible 开发的一个指导性的入门级J2EE框架,它对如何集成流行的Spring、Hibernate、iBatis、Struts、xDcolet、Junit、Taperstry、JSF等基础框架给出了示范。在持久层,AppFuse采用了Hibernate O/R映射...

    appfuse 学习笔记

    Appfuse 一个开放源码的项目和应用程序,帮助我们快速而高效的地开发。

    appfuse学习笔记(二)新建模块

    NULL 博文链接:https://savagegarden.iteye.com/blog/428084

    appfuse学习笔记(三)解决乱码和菜单设置

    NULL 博文链接:https://savagegarden.iteye.com/blog/429444

    AppFuse学习笔记

    本文以一个 J2EE 开发者的角度,借助一个简单的应用示例,在融合了个人经验的基础上介绍了如何用 AppFuse 一步步地构建 J2EE 项目。通过阅读本文,读者不仅能够学会用 AppFuse 进行开发,而且能够充分体会到 AppFuse...

    appfuse

    使用appfuse2.0,下载过来的实例源码,没有jar包

    AppFuse

    本文以一个 J2EE 开发者的角度,借助一个简单的应用示例,在融合了个人经验的基础上介绍了如何用 AppFuse 一步步地构建 J2EE 项目。通过阅读本文,读者不仅能够学会用 AppFuse 进行开发,而且能够充分体会到 AppFuse...

    appfuse1.4-architecture

    06年时的appfuse,学习SSH架构的经典入门框架。相对比较老的资料,可以欣赏一下当时的架构,向牛人致敬

    appfuse2学习日记

    自己学习appfuse2的相关日志,里面包含了一些在网上已经文档的综合.

    AppFuse入门文档(AppFuse与SpringMVC+mybatis整合)

    本文档详细描述了AppFuse与SpringMVC+mybatis整合的过程,只要你懂一些基本的eclipse操作和基本的maven命令,就可以在三分钟之内迅速的搭建出一个AppFuse的架构

    SSH学习及开发框架-appfuse

    appfuse 有struts2+hibernate+spring的整合 springmvc+hibernate+spring的整合 多模块,但模块都有 学习开发参考使用非常方便 可以到官方下载最新版的,我只是把自己下载的打包整理一下 注意哈,都是基于maven的...

    参考appfuse学习实例

    ssh 博文链接:https://melet.iteye.com/blog/104496

    APPFUSE工具研究.doc

    Appfuse是一个开源的工程应用,它集成了现在最流行的开发框架到该应用中,使用Maven可以很方便的开发和部署因为。也可以集成到现在流行的开源开发工具如eclipse,idea等。现在让我们简单的看看APPFUSE开发应用的简单...

Global site tag (gtag.js) - Google Analytics