论坛登陆 用户名:  密 码:
设为首页  加入收藏
08年北京名校秋季招生
名牌院校免试入学宽进严出,突破考分限制,名校与你零距离,以下院校按报名先后顺序录取,24小时网上报名覆盖全国
  您现在的位置: 中国教育招生在线 >> IT >> JAVA认证 >> IT正文
把JBoss缓存用作POJO缓存的实战演练
 作者:佚名     2007-3-14 17:25:32        来源:不详  浏览次数:

 

 

 

 

 

 

 

 

    一、 引言

  内存缓冲在大规模企业应用软件开发过程中是一个关键的技术,其中往往都有可伸缩性和高性能的需求。一个内存缓冲能存储应用程序状态信息(如,一个WEB应用程序中的HttpSession)或数据库查询结果(也即,实体数据)。由于许多企业应用软件运行在一个簇环境下,所以缓存需要跨越簇进行复制。而且,如果需要更高的可靠性的话,内存缓冲也应该被持续性存储到硬盘或数据库中去。

  大多数内存缓冲解决方案都属于我们所称的"普通"缓存系统类——其中存储和缓冲直接参考的对象。既然一个普通缓存直接处理参考对象,那么它就象一个详尽的HashMap结构一样,并因此使用起来非常直观。当一对象需要被复制或持续存储到一个普通缓存系统中时,对象必须实现Serializable接口。然而,普通缓存在复制或持续存储方面也存在一些明显的限制:

  ·用户必须具体地管理该缓存。例如,当一对象被更新时,用户需要执行一相应的API来更新缓存内容。

  ·Java对象串行化的需要可能会对性能有所妨碍。如果对象是巨大的,甚至单个的字段更新也将会激活整个对象的串行化与跨整个簇的复制。这样可能带来不必要的昂贵的代价。

  ·Java对象串行化不可能保存缓冲对象之间的关系。特别地,该缓冲对象不可能被其它对象参考多次(多参考),或到其自身有一个间接参考(循环)。否则,在串行化时该关系将被打破。例如,图1说明在复制期间的这个问题。如果我们有两个共享同一个Address对象的Person实例,那么在复制时它将被拆分成两个独立的Address实例(而不是一个)。

 
图1.普通缓存在串行化期间不保留对象关系


  相对于上面普通缓冲系统中存在的问题,还有另外一种新型的缓冲系统——POJO(简单Java对象)缓存。一个POJO缓存是一个系统——它担当一个"面向对象的"分布式的缓存。在这个系统中,一旦一个用户把POJO依附到该缓存上,那么缓冲方面(例如复制和持续性)应该对用户是透明的。一个用户只需简单地在该POJO上操作而不须担心更新该缓存内容或维持对象关系的问题。不存在显式的API调用可用来管理该缓存。另外,它还有三个特征:

  ·不需要为POJO实现Serializable接口。

  ·复制(或甚至持续性)是基于字段级的(这与普通缓存中的基于整个对象的二进制级形成对照)-这将导致潜在的性能推进。

  ·对象关系和身份被自动地保存在一分布式复制环境中,这带来透明的使用体验并且提高了软件性能。

  一个领先的内存POJO缓存解决方案就是开源JBoss缓存。JBoss缓存是第一个Java库——它支持可复制的,持续性的,事务性的和良好粒度的缓冲,它可以被使用作为POJO缓存和普通缓存。既然JBoss缓存是百分之百基于Java的,那么它就可以运行在任何Java SE环境中——包括应用程序服务器内部或作为独立的进程。例如,JBoss缓存已经被应用到针对EJB 3.0有状态的会话bean簇和HPP会话复制的应用程序服务器中。

  在本文中,我们将说明怎样把JBoss缓存用作一个POJO缓存(通过它的JBossCacheAop组件)。同时,还将给出一个应用案例来说明在分布环境中的一些关键特性。

  二、 JBoss缓存概述

  (一) 普通缓存

  JBoss缓存中默认的普通缓存模块称为TreeCache。你可以通过编程方式或通过一外部XML文件对它进行设置。下面是你可以设置的一些特性:

  1. 缓存模式:它可以是本地的或者是可复制的。如果它是可复制的,那么你可以进一步指定同步的或异步的模式。

  2. TransactionManager:你可以为JBoss缓存查询指定一个与JTA相匹配的事务管理器。如果它发现一个正在进行中的事务上下文,那么它就会参予到该事务中并且相应地执行提交或回滚。

  3. 可插入的驱逐策略:该缓存驱逐策略参考该缓存使用的算法来终止它的内容。在JBoss缓存中,你可以经由一个可插入的接口来实现你自己的驱逐策略。JBoss缓存当前与一个基于地域化的LRUEvictionPolicy一起发行。

  4. 隔离级别:JBoss缓存使用JDBC风格的语义来实现锁定行为。你不是专门地指定读/写锁,而是为了易于使用起见,可以指定不同的隔离级别。

  5. 可插入的CacheLoader:CacheLoader允许你把持续性缓存内容装载回内存中。JBoss缓存当前支持文件装载器和基于SleepyCat和JDBC的装载器。

  6. 溢出:通过与一个缓存装载器和一个驱逐策略相联合,它提供了可以在EJB中见到的钝化/激活特性。无论什么时候驱逐一项,它都将被钝化-这样它就会一直是持续的。

  (二) POJO缓存

  JBoss缓存中的POJO缓存模块称作TreeCacheAop。为了使用该POJO缓存,你必须在这些对象被缓冲以前"准备"这些对象(这个过程也称作对象运行时字节码重构)。系统在拦截该POJO操作时正需要这样做。对象运行时字节码重构过程由JBoss AOP库来实现。JBoss AOP允许你经由一个XML文件或注解来指定将被进行字节码重构重构的类。当前,我们仅仅支持JDK-1.4风格的注解(一个特定的JBoss AOP特征)。JDK 5.0注解支持将要在下一个版本中才能出现并且它将使得运行时字节码重构过程几乎是透明的!

  TreeCacheAop是一个TreeCache的子类,因此它使用相同的XML文件进行配置并且提供与它的超类部分相同的缓冲功能。该JBoss POJO缓存还提供基于POJO的驱逐策略。


1 2 3 下一页>>

责任编辑:lss
  相关新闻
JSFToolbox--用Dreamweaver开发JSF
Java基础-漫谈EJB在Java中的应用
漫谈EJB在Java中的应用(二)
J2EE技术-漫谈EJB在Java中的应用
重造Java ESB:细述JBI与ServiceMix
根据BOM获得实际encoding返回相应Reader
谈一谈如何使用EJB的提供程序
浅析Spring与EJB 3.0之酸甜苦辣
EJB最佳实践:构建更好的异常处理框架
EJB 3.0 的新规范概览及其未来发展
Java基础-漫谈EJB在Java中的应用
漫谈EJB在Java中的应用(二)
JSFToolbox--用Dreamweaver开发JSF
浅析Spring与EJB 3.0之酸甜苦辣
EasyDBO配置文件easyjf-dbo.xml简介
JDO、EJB/CMP、Hibernate和Amber比较
Jbuilder配置mssqlserver2000  JDBC过程
JBOSS4.0 JDBC数据源配置大全(一)
Jboss的JDBC数据源配置步骤详解大全
JBuilder+WebService之实战分析
  评论
现在有100人对本文发表评论
查看所有评论
 
推  荐
 
100本成功必读热销书
热门招生
  北京文理研修学院   前进大学
  北京明园大学   北京建设大学
  北京邮电大学世纪学院   北方工商管理学院
  联想软件定向委培班   香港数码动画学院
  青年企业管理研修学院   北京华夏管理学院
热门培训
网络化办公专家培训认证 电子科技大学软件学院
软件测试工程师培训认证 北大青鸟十大授权培训
IT硬件工程师培训认证班 北京环球雅思荷兰预科
JAVA开发工程师培训 潜能时代IT服务管理培训
网络信息化工程师培训 清华大学继续教育学院
论坛精选
 
有些细节是男人也该注意的风度!最容易读错的字
某强人手机里保存的30条短信 中国十大高薪职业
最感人的十大韩剧经典台词 嫁给工程师的N个理由
爆强!只有一句话的鬼故事 转贴教你如何做妖精
 女人一定要記住的話 女人最好别嫁给最爱的男人
城市联盟
 大连 上海 天津 广州 西安 深圳  天津  青岛  大连  福州  沈阳  青海  连云港  南京  吉林  厦门  威海  辽宁  呼和浩特
Copyright © 2006   www.edu999.com   All rights reserved. 中国教育招生在线  版权所有
北京市通信管理局[2004]字第552号函    京ICP证040442号