1. 配置文件解析 由标准的SAX方式解析ehcache.xml到一个Configuration对象。关键类是BeanHandler+Configuration。BeanHandler的技巧在于xml tag/property与java bean的名称约定,找到一个tag就直接用tag名找到对应的add/extract/set方法call进去。类写的短小精悍,坏处是每个java类的写法都要受到限制。 2. Cache初始化 CacheManager.getInstance()出发singleton的生成。生成方式很简单,new CacheManager()。构造函数也很简单,就call个init方法,这里面完成了所有Ehcache正式工作前的准备工作。
3. CacheManagerPeerProvider/HeartbeatSender/HeartbeatReciever Ehcache replication的multicast实现实际上只是由multicast方式维护各个Ehcace node之间的heartbeat通讯,而真正的cache内容replication而是rmi方式做的unicast。这意味着在N个节点的cluster里,一个节点需要做n-1次rmi才能完成一次replication。如果N很大而且系统频繁更新cache内容的话,结果应该会很不理想。 相关配置: <cacheManagerPeerProviderFactory properties="peerDiscovery=automatic, multicastGroupAddress=, multicastGroupPort=, timeToLive=1"/> 其中,multicastGroupAddress/multicastGroupPort就是heartbeat sender和reciever用来通信的multicast地址和端口。地址必须使用multicast ip adress. MulticastKeepaliveHeartbeatSender: 这是个每隔5秒持续往其他节点发送heart beat的线程。它会把节点内所有的cache的JNDI地址发送出去。本地cache列表通过CacheManagerPeerListener获得。 private List createCachePeersPayload() { CacheManagerPeerListener cacheManagerPeerListener = cacheManager.getCachePeerListener("RMI"); ...... List localCachePeers = cacheManagerPeerListener.getBoundCachePeers(); ..... }
Heartbeat payload数据结构如下: //hostName:port/cache name|//hostName:port/cache name MulticastKeepaliveHeartbeatReceiver: 后台线程监听multicast数据,将接收到的heartbeat payload解析成CachePeer对象注册到CacheManagerPeerProvider的peer list中。 4. CachePeerListener 这个listener监听所有的cache添加和移除操作,为每一个cache进行JNDI/RMI注册。配置如下: <cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" properties="port=,socketTimeoutMillis=12000,hostName="/>
类图如下:
5. Cache replicator 决定一个cache是否需要replication的因素是看有没有给这个cache配置Replicator. <defaultCache ......> <cacheEventListenerFactory properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true, replicateUpdatesViaCopy=true, replicateRemovals=true "/> </defaultCache> 此处定义的replicator会被放到Cache对象的registeredEventListeners中去,在cache元素发生变化时触发listener相应动作。 protected boolean isDistributed(Ehcache cache) { Set listeners = cache.getCacheEventNotificationService().getCacheEventListeners(); for (Iterator iterator = listeners.iterator(); iterator.hasNext();) { CacheEventListener cacheEventListener = (CacheEventListener) iterator.next(); if (cacheEventListener instanceof CacheReplicator) { return true; } } return false; }
此方法在cache生成是调用,如果返回为true,则为之生成Remote对象CachePeer并注册到JNDI中去。 CachePeer类图如下:
各类listener总结: CacheManagerEventListener:负责监听cachemanager的操作,调用cachemanager的addCache/removeCache是触发。默认配置Ehcache没有包含该listener的实现,只有一个抽象类。可以自己扩展自定义类。 CacheManagerPeerListener:负责监听和维护cachepeer,触发方式和上一个类似。实际上也是出自同一个接口。 CacheEventListener:负责处理cache事件。比如为cache replication实现了:RMIAsynchronousCacheReplicator和RMISynchronousCacheReplicator Cache replication过程如下:
- 浏览: 12648 次
- 来自: ...
相关推荐
JavaEE源代码 ehcache-1.1JavaEE源代码 ehcache-1.1JavaEE源代码 ehcache-1.1JavaEE源代码 ehcache-1.1JavaEE源代码 ehcache-1.1JavaEE源代码 ehcache-1.1JavaEE源代码 ehcache-1.1JavaEE源代码 ehcache-1.1JavaEE源...
EhCache是一个开源的Java缓存框架,广泛用于提高应用程序的性能和响应速度。它允许在内存中存储数据,减少对数据库的访问,从而优化系统性能。以下是对EhCache框架的一些关键知识点的详细说明: 1. **缓存概念**: ...
ehcache-core-1.7.1-sources.jar
`ehcache-core-2.5.2-sources.jar`则是Ehcache的源代码文件,开发者可以查看源码来理解Ehcache的工作原理,进行调试,或根据需要自定义扩展。源码库包含所有类的定义、方法实现以及注释,对于深入学习和定制Ehcache...
SSH三层架构MVC(struts1.3+spring2.x+hibernate3.2),Hibernate(ehcache)二级缓存技术,Spring 注解形式依赖注入,ehcache缓存 源代码,内有MySql anbyke.sql文件,方便创建数据库演示效果!
在性能优化方面,Jive源代码展示了缓存机制的运用,如使用Ehcache或Redis进行数据缓存,减少数据库查询的次数,提高系统响应速度。同时,Jive还可能利用负载均衡和分布式计算技术,如Hadoop或Spark,来处理大规模...
赠送源代码:ehcache-3.3.1-sources.jar; 赠送Maven依赖信息文件:ehcache-3.3.1.pom; 包含翻译后的API文档:ehcache-3.3.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.ehcache:ehcache:3.3.1; 标签:...
标签中的“源码”提示我们,Ehcache的源代码也是学习和调试的重要资源。通过阅读源码,我们可以深入了解其内部工作流程,如缓存的加载、替换策略、同步机制等。对于复杂的缓存问题,分析源码有时是解决问题的最快...
这个"Hibernate源代码(非常好)"的压缩包显然包含了完整的Hibernate源代码,对于理解其内部工作原理、学习ORM技术和深入研究Java持久化机制极具价值。 首先,Hibernate的核心功能在于将Java对象转换为数据库中的...
赠送源代码:ehcache-3.9.9-sources.jar; 赠送Maven依赖信息文件:ehcache-3.9.9.pom; 包含翻译后的API文档:ehcache-3.9.9-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.ehcache:ehcache:3.9.9...
通过分析这些源代码,你可以学习如何集成Ehcache到你的应用程序中,以及如何使用反射进行测试和调试。 总结起来,这个例子展示了如何将Ehcache的强大缓存能力与Java反射机制相结合,以提高测试的灵活性和覆盖率。...
【Java企业黄页B2B源代码】是一个基于Java编程语言开发的企业级应用程序,主要用于构建一个B2B(Business-to-Business)平台。这个平台旨在连接企业,促进商业交易和信息交流。源代码的提供意味着我们可以深入理解其...
《深入剖析Hibernate项目源代码》 Hibernate,作为Java领域中的一款流行的对象关系映射(ORM)框架,极大地简化了数据库操作。它通过提供一个抽象层,使得开发人员可以使用面向对象的方式来处理数据库交互,而无需...
赠送源代码:ehcache-core-2.6.11-sources.jar; 赠送Maven依赖信息文件:ehcache-core-2.6.11.pom; 包含翻译后的API文档:ehcache-core-2.6.11-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:...
赠送源代码:ehcache-2.10.0-sources.jar; 包含翻译后的API文档:ehcache-2.10.0-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:net.sf.ehcache,artifactId:ehcache,version:2.10.0 使用方法:...
赠送源代码:ehcache-3.9.9-sources.jar; 赠送Maven依赖信息文件:ehcache-3.9.9.pom; 包含翻译后的API文档:ehcache-3.9.9-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.ehcache:ehcache:3.9.9; 标签:...
在Java代码中,使用Ehcache API创建缓存实例,如下所示: ```java CacheManager cacheManager = CacheManager.create(); Cache myCache = cacheManager.getCache("myCache"); ``` 确保在应用程序启动时初始化`...
赠送源代码:ehcache-2.10.0-sources.jar 包含翻译后的API文档:ehcache-2.10.0-javadoc-API文档-中文(简体)-英语-对照版.zip 对应Maven信息:groupId:net.sf.ehcache,artifactId:ehcache,version:2.10.0 ...
- **ehcache-core-2.4.3-sources.jar**:这个文件包含了Ehcache源代码,对于开发者来说,这是一个宝贵的资源,可以帮助理解Ehcache的工作原理,进行调试或自定义扩展。 总的来说,Ehcache 2.4.3是一个重要的Java...
赠送源代码:ehcache-core-2.6.11-sources.jar; 赠送Maven依赖信息文件:ehcache-core-2.6.11.pom; 包含翻译后的API文档:ehcache-core-2.6.11-javadoc-API文档-中文(简体)版.zip; Maven坐标:...