- 浏览: 426221 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (164)
- Lucence (1)
- Hibernate (16)
- java综合技术点 (31)
- struts (4)
- dwr (2)
- IT生活 (21)
- spring (12)
- tomcat (1)
- 数据库 (11)
- tags (0)
- 线程安全 (11)
- 设计模式 (1)
- 缓存 (4)
- WebService (5)
- Apache软件 (7)
- java定时器 (1)
- plugin开发用插件 (3)
- Web前端 (5)
- js (3)
- Android (2)
- 摘抄 (0)
- jdbc (1)
- FTP (1)
- jetty (1)
- 图表 (1)
- Exception (1)
- 问题点整理 (1)
- 备忘录 (2)
- 分布式 (0)
- hadoop (0)
- JVM (5)
- GC (1)
- 消息中间件 (0)
最新评论
-
honganlei:
个人推荐一个,虽然是第三方的,但是提供的都是官方下载地址htt ...
常用jar包下载地址 -
chengt:
java jar包下载我一般用以下两个网站都可以http:// ...
常用jar包下载地址 -
songshuaiyang:
angryid 写道国内的网站,速度还可以jar包下载网站打不 ...
常用jar包下载地址 -
angryid:
国内的网站,速度还可以jar包下载网站
常用jar包下载地址 -
angryid:
我必须要评论一下,我发现一个jar包下载网站,javaeye的 ...
常用jar包下载地址
转自 http://benx.iteye.com/blog/606083
Oscache的集群功能没有完全实现,只是实现了flush的接口,需要用户自己去实现它的其它集群接口(不知道他是出于什么考虑). 如果采用Jgroups组件,则需要继承自JavaGroupsBroadcastingListener抽象类,继承它的handleClusterNotification方法,完成集群其它功能的实现:
注意:集群中传递的对象必须实现Serializable接口。
- public class JavaGroupsBroadcastingListenerImpl extends
- JavaGroupsBroadcastingListener {
- public void handleClusterNotification(ClusterNotification message) {
- switch (message.getType()) {
- case CacheConstants.CLUSTER_ENTRY_ADD:
- System.out.println("集群新增:" + message.getData());
- if(message.getData() instanceof QflagCacheEvent) {
- QflagCacheEvent event = (QflagCacheEvent)message.getData();
- cache.putInCache(event.getKey(), event.getEntry().getContent(),null,null,CLUSTER_ORIGIN);
- }
- break;
- case CacheConstants.CLUSTER_ENTRY_UPDATE:
- System.out.println("集群更新:" + message.getData());
- if(message.getData() instanceof QflagCacheEvent) {
- QflagCacheEvent event = (QflagCacheEvent)message.getData();
- cache.putInCache(event.getKey(), event.getEntry().getContent(),null,null,CLUSTER_ORIGIN);
- }
- break;
- case CacheConstants.CLUSTER_ENTRY_DELETE:
- System.out.println("集群删除:" + message.getData());
- if(message.getData() instanceof QflagCacheEvent) {
- QflagCacheEvent event = (QflagCacheEvent)message.getData();
- // cache.removeEntry(event.getKey(),event.getOrigin());
- cache.removeEntry(event.getKey());
- }
- break;
- }
- }
- public void cacheEntryAdded(CacheEntryEvent event) {
- super.cacheEntryAdded(event);
- if(!CLUSTER_ORIGIN.equals(event.getOrigin())) {
- sendNotification(new ClusterNotification(CacheConstants.CLUSTER_ENTRY_ADD, new QflagCacheEvent(event.getMap(),event.getEntry(),CLUSTER_ORIGIN)));
- }
- }
- // @Override
- // public void cacheEntryFlushed(CacheEntryEvent event) {
- //
- // super.cacheEntryFlushed(event);
- // if(!CLUSTER_ORIGIN.equals(event.getOrigin())) {
- // sendNotification(new ClusterNotification(CacheConstants.CLUSTER_ENTRY_ADD, new UcallCacheEvent(event.getMap(),event.getEntry(),CLUSTER_ORIGIN)));
- // }
- // }
- @Override
- public void cacheEntryRemoved(CacheEntryEvent event) {
- super.cacheEntryRemoved(event);
- if(!CLUSTER_ORIGIN.equals(event.getOrigin())) {
- sendNotification(new ClusterNotification(CacheConstants.CLUSTER_ENTRY_DELETE, new QflagCacheEvent(event.getMap(),event.getEntry(),CLUSTER_ORIGIN)));
- }
- }
- @Override
- public void cacheEntryUpdated(CacheEntryEvent event) {
- super.cacheEntryUpdated(event);
- if(!CLUSTER_ORIGIN.equals(event.getOrigin())) {
- sendNotification(new ClusterNotification(CacheConstants.CLUSTER_ENTRY_UPDATE, new QflagCacheEvent(event.getMap(),event.getEntry(),CLUSTER_ORIGIN)));
- }
- }
- }
public class JavaGroupsBroadcastingListenerImpl extends JavaGroupsBroadcastingListener { public void handleClusterNotification(ClusterNotification message) { switch (message.getType()) { case CacheConstants.CLUSTER_ENTRY_ADD: System.out.println("集群新增:" + message.getData()); if(message.getData() instanceof QflagCacheEvent) { QflagCacheEvent event = (QflagCacheEvent)message.getData(); cache.putInCache(event.getKey(), event.getEntry().getContent(),null,null,CLUSTER_ORIGIN); } break; case CacheConstants.CLUSTER_ENTRY_UPDATE: System.out.println("集群更新:" + message.getData()); if(message.getData() instanceof QflagCacheEvent) { QflagCacheEvent event = (QflagCacheEvent)message.getData(); cache.putInCache(event.getKey(), event.getEntry().getContent(),null,null,CLUSTER_ORIGIN); } break; case CacheConstants.CLUSTER_ENTRY_DELETE: System.out.println("集群删除:" + message.getData()); if(message.getData() instanceof QflagCacheEvent) { QflagCacheEvent event = (QflagCacheEvent)message.getData(); // cache.removeEntry(event.getKey(),event.getOrigin()); cache.removeEntry(event.getKey()); } break; } } public void cacheEntryAdded(CacheEntryEvent event) { super.cacheEntryAdded(event); if(!CLUSTER_ORIGIN.equals(event.getOrigin())) { sendNotification(new ClusterNotification(CacheConstants.CLUSTER_ENTRY_ADD, new QflagCacheEvent(event.getMap(),event.getEntry(),CLUSTER_ORIGIN))); } } // @Override // public void cacheEntryFlushed(CacheEntryEvent event) { // // super.cacheEntryFlushed(event); // if(!CLUSTER_ORIGIN.equals(event.getOrigin())) { // sendNotification(new ClusterNotification(CacheConstants.CLUSTER_ENTRY_ADD, new UcallCacheEvent(event.getMap(),event.getEntry(),CLUSTER_ORIGIN))); // } // } @Override public void cacheEntryRemoved(CacheEntryEvent event) { super.cacheEntryRemoved(event); if(!CLUSTER_ORIGIN.equals(event.getOrigin())) { sendNotification(new ClusterNotification(CacheConstants.CLUSTER_ENTRY_DELETE, new QflagCacheEvent(event.getMap(),event.getEntry(),CLUSTER_ORIGIN))); } } @Override public void cacheEntryUpdated(CacheEntryEvent event) { super.cacheEntryUpdated(event); if(!CLUSTER_ORIGIN.equals(event.getOrigin())) { sendNotification(new ClusterNotification(CacheConstants.CLUSTER_ENTRY_UPDATE, new QflagCacheEvent(event.getMap(),event.getEntry(),CLUSTER_ORIGIN))); } } }
- package qflag.ucall.cache;
- public class CacheConstants {
- /**
- * 添加缓存对象操作
- */
- public final static int ACTION_ADD_OBJ = 1;
- /**
- * 更新缓存对象操作
- */
- public final static int ACTION_UPDATE_OBJ = 2;
- /**
- * 删除缓存对象操作
- */
- public final static int ACTION_DELETE_OBJ = 3;
- /**
- * 刷新缓存对象
- */
- public final static int ACTION_FLUSH_OBJ = 4;
- /**
- * 集群entry add处理
- */
- public final static int CLUSTER_ENTRY_ADD = 20;
- /**
- * 集群entry update处理
- */
- public final static int CLUSTER_ENTRY_UPDATE = 21;
- /**
- * 集群entry delete处理
- */
- public final static int CLUSTER_ENTRY_DELETE = 22;
- }
package qflag.ucall.cache; public class CacheConstants { /** * 添加缓存对象操作 */ public final static int ACTION_ADD_OBJ = 1; /** * 更新缓存对象操作 */ public final static int ACTION_UPDATE_OBJ = 2; /** * 删除缓存对象操作 */ public final static int ACTION_DELETE_OBJ = 3; /** * 刷新缓存对象 */ public final static int ACTION_FLUSH_OBJ = 4; /** * 集群entry add处理 */ public final static int CLUSTER_ENTRY_ADD = 20; /** * 集群entry update处理 */ public final static int CLUSTER_ENTRY_UPDATE = 21; /** * 集群entry delete处理 */ public final static int CLUSTER_ENTRY_DELETE = 22; }
- package qflag.ucall.cache.event;
- import java.io.Serializable;
- import com.opensymphony.oscache.base.Cache;
- import com.opensymphony.oscache.base.CacheEntry;
- import com.opensymphony.oscache.base.events.CacheEntryEvent;
- import com.opensymphony.oscache.base.events.CacheEvent;
- public class QflagCacheEvent extends CacheEvent implements Serializable {
- /**
- * The cache where the entry resides.
- */
- private Cache map = null;
- /**
- * The entry that the event applies to.
- */
- private CacheEntry entry = null;
- /**
- * Constructs a cache entry event object with no specified origin
- *
- * @param map
- * The cache map of the cache entry
- * @param entry
- * The cache entry that the event applies to
- */
- public QflagCacheEvent(Cache map, CacheEntry entry) {
- this(map, entry, null);
- }
- /**
- * Constructs a cache entry event object
- *
- * @param map
- * The cache map of the cache entry
- * @param entry
- * The cache entry that the event applies to
- * @param origin
- * The origin of this event
- */
- public QflagCacheEvent(Cache map, CacheEntry entry, String origin) {
- super(origin);
- this.map = map;
- this.entry = entry;
- }
- /**
- * Retrieve the cache entry that the event applies to.
- */
- public CacheEntry getEntry() {
- return entry;
- }
- /**
- * Retrieve the cache entry key
- */
- public String getKey() {
- return entry.getKey();
- }
- /**
- * Retrieve the cache map where the entry resides.
- */
- public Cache getMap() {
- return map;
- }
- public String toString() {
- return "key=" + entry.getKey();
- }
- }
package qflag.ucall.cache.event; import java.io.Serializable; import com.opensymphony.oscache.base.Cache; import com.opensymphony.oscache.base.CacheEntry; import com.opensymphony.oscache.base.events.CacheEntryEvent; import com.opensymphony.oscache.base.events.CacheEvent; public class QflagCacheEvent extends CacheEvent implements Serializable { /** * The cache where the entry resides. */ private Cache map = null; /** * The entry that the event applies to. */ private CacheEntry entry = null; /** * Constructs a cache entry event object with no specified origin * * @param map * The cache map of the cache entry * @param entry * The cache entry that the event applies to */ public QflagCacheEvent(Cache map, CacheEntry entry) { this(map, entry, null); } /** * Constructs a cache entry event object * * @param map * The cache map of the cache entry * @param entry * The cache entry that the event applies to * @param origin * The origin of this event */ public QflagCacheEvent(Cache map, CacheEntry entry, String origin) { super(origin); this.map = map; this.entry = entry; } /** * Retrieve the cache entry that the event applies to. */ public CacheEntry getEntry() { return entry; } /** * Retrieve the cache entry key */ public String getKey() { return entry.getKey(); } /** * Retrieve the cache map where the entry resides. */ public Cache getMap() { return map; } public String toString() { return "key=" + entry.getKey(); } }
相关推荐
NULL 博文链接:https://zhenghuazhi.iteye.com/blog/1135620
OSCache由OpenSymphony设计,它是一种开创性的JSP定制标记应用,提供了在现有JSP页面之内实现快速内存缓冲的功能。OSCache是一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决...
OSCache标记库由OpenSymphony设计,它是一种开创性的JSP定制标记应用,提供了在现有JSP页面之内实现快速内存缓冲的功能。OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的...
OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存的功能。OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存...
oscache-2.1.jar oscache-2.1.jar
javaweb做页面缓存常用,OSCache是一个工业级的J2EE缓存实现。OSCache不但能缓存java对象,还可以缓存页面,http请求和二进制内容,...通过应用OSCache,我们不但可以实现通常的Cache功能,还能够改善系统的稳定性。
OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存的功能。OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存...
oscache缓存技术入门实例
1、OSCache是什么? 2、OSCache的特点 3、有关“用OSCache进行缓存对象”的研究
OSCache学习例子 实例 很好的与j2ee结合
使用oscache进行缓存,大大提高web系统运行效率
oscache的简单功能实现的,可以下载下来看看
OSCache是OpenSymphony这个开源项目众多Projects中的一个。他是一个高效的J2EE缓存框架,能够很好的解决动态网站速度的问题。
oscache.tld,oscahe.properties,oscache-2.1.jar,commons
oscache-java缓存框架插件和安装教程,使用教程一步到位
oscache-2.4.1.jar资源包,用于java缓存、jsp页面缓存
OSCache由OpenSymphony设计,它是一种开创性的JSP定制标记应用,提供了在现有JSP页面之内实现快速内存缓冲的功能。 该版本为2.4.1
oscache的简单介绍
oscache的使用
本文叙述了如何使用oscanche,最后的配置需要在oscache.properties中完成