问题:一个在线web系统有很多filter,能适用于各种产品,所以需要配置那个启用,那个关闭,还有临时调整的,就得需要动态改变,但由于访问量大,所以想采用在线更新了,大家有思路么?设计目标:可以添加未知功能的过滤器,生效不需要重启,可以定义过滤器在链中的位置。待解决问题:设计出过滤器层实现,主要关注点为动态加载。此处怎么样动态加载

解决方案 »

  1.   

    filter是根据访问路径来分类的,一旦一个工程启动,那么它的路径分类应该是明确的。所以我觉得应该不存在什么“配置那个启用,那个关闭,还有临时调整的”问题吧?所有filter应该随工程启动而启动。
    如果真要做随时添加而不重启的话,也可以把filter存数据库中,然后通过反射加载也行。
    其它方法没想。
      

  2.   

    也只能说一个思路吧,
    做一个Filter,其中用OSGi API做起来,以前的每个Filter实现为分立的OSGi Bundle,这样便可以利用OSGi实现动态加载和临时调整了。
    至于filter的次序关系,就自己在“前端filter”中实现了,定义个配置文件格式什么的就最酷了。
      

  3.   

    基本上就是自己写个全局性Filter(拦截所有URL),然后根据数据库中的配置,进行过滤或调用其它过滤器。难点主要在于刷新配置的机制,也就是比如你修改了数据库中的配置,然后通知该Filter重新去读去数据库配置时,如何能够不终端过滤器自身的工作过程。
      

  4.   


    也就是对方写的就是类了?那如果不是用类似于OSGi这种支持热插拔的框架的话,基本无解。