Coherence企业级缓存(五)与Hibernate集成(1)

本文详细介绍了如何将Oracle Coherence分布式缓存与Hibernate框架集成,包括配置步骤和启动过程,展示了Coherence强大的集群管理和缓存功能。

(From http://raymondhekk.iteye.com/blog/252817)
 
Oracle Coherence 是一个面向企业级应用的分布式缓存框架,看过它的简单介绍后,感觉是:很好很强大。 
   Hibernate 封装了统一的 Cache接口 CacheProvider ,可以方便的集成实现该接口的第三方Cache框架。 

  本文就不详细介绍 Coherence 的特点和优势了,感兴趣或要使用的直接到Oracle网站去查询。http://www.oracle.com/products/middleware/coherence/index.html 
如何与Hibenate进行集成, Coherence的userguide只简单说了一下原理性的东东,没有具体实例。我仔细做了一个从头到尾的过程,直到Hibernate应用跑起来,并观察日志,确认Coherence缓存起作用为止。 以下是我记录下来的配置运行过程,供需要的同学参考。 

1. 运行前的说明 
      本 demo 客户端是Hibernate的数据操作代码,无外乎 session.update(),query.list() 等等。 

      测试准备两台物理机器 M1, M2 。M1 上跑Hibernate应用, 和1个Node; M2上准备跑 2 个Coherence 缓存节点(Node).  这里3个Node分散到两个 机器,主要是演示Coherence集群的自管理的强大功能。 
      

      [img]/upload/attachment/42720/e4c427b3-1651-3092-a207-fe6da4f102bf.jpg" alt="[/img] 
      原理简要说明:M2上的Node启动后,将自动加入Coherence 缓存集群(Cluster); 客户端Hibernate应用启动,执行后,由于也使用了Coherence, 它的查询操作将到 集群 上的三个Node的Cache中去取数据;只是第一次query会从数据库取数据,并放到Node的缓存中,以后各次query,findByPk 等操作,都会到Node的缓存中取。 

2. Cache服务端配置 
2.1) 启动Node bat文件准备 
      Coherence开发包的目录很简单,只有 bin,doc,lib,examples 四个目录,原以为只要启动 coherence/bin/coherence.cmd 就可以了,后来发现没那么简单。 

      要让M2上的Node缓存Hibernate应用的数据,需要 org.hibernate.cache.QueryKey 等类,因此需要将 hibernate3.jar 加入classpath; 
      要缓存hibernate应用中的 com.xxx.system.perm.PermVO 等VO类,还必须将自己应用的 jar包也放到classpath中。 
其他还需要一些相关的jar,如:dom4j,common-logging 等,最终编写了一个 runCache.bat 文件,做好必要的初始化工作: 

runCache.bat 

引用

rem Register cache region: org.hibernate.cache.StandardQueryCache  
rem Register cache region: HIBERNATE_QUERY_CACHE  

set java_opts=-Dtangosol.coherence.cacheconfig=hibernate-cache-config.xml  

set classpath=lib/hibernate3.jar  
set classpath=%classpath%;lib/hibernate3-sqlquerycache-fix.jar  
set classpath=%classpath%;lib/dom4j-1.6.jar  
set classpath=%classpath%;lib/commons-lang-2.1.jar  
set classpath=%classpath%;lib/commons-logging.jar  
set classpath=%classpath%;lib/cglib-2.1.jar  
set classpath=%classpath%;lib/xxx-project.jar  

coherence.cmd  



我的coherence工作目录是  

引用
d:\coherenceNode\



其中在我的工作目录下专门建了一个 lib 目录,存放需要的新的jar包,并将配置文件从 coherence-hibernate.jar/config 目录下移到工作目录下,目录结构是:  

引用

lib  
hibernate-cache-config.xml  
runCache.bat  


[img]/upload/attachment/42577/11dfaeba-8a74-39e3-9c3d-d60cb47dd2b8.jpg" alt="[/img]  

这要,运行 runCache.bat 就可以启动一个 Coherence Node实例。本文在M2机器上开2个 cmd 窗口,启动2个实例, 在 M1 上启动一个 Node 实例。启动后的结果大致如:  
[img]/upload/attachment/42575/57ba5d87-1175-38fb-ac4c-d7902d61bb9a.jpg" alt="" width="512" height="304[/img]  

引用
Group{Address=224.3.3.1, Port=33389, TTL=4}  

MasterMemberSet  
  (  
  ThisMember=Member(Id=3, Timestamp=2008-10-14 17:41:25.062, Address  
  OldestMember=Member(Id=1, Timestamp=2008-10-14 17:39:30.125, Addre  
  ActualMemberSet=MemberSet(Size=3, BitSetCount=2  
    Member(Id=1, Timestamp=2008-10-14 17:39:30.125, Address=172.20.3  
    Member(Id=2, Timestamp=2008-10-14 17:41:03.234, Address=172.20.3  
    Member(Id=3, Timestamp=2008-10-14 17:41:25.062, Address=172.20.3  
    )  
  RecycleMillis=120000  
  RecycleSet=MemberSet(Size=0, BitSetCount=0  
    )



  2.2) 缓存配置  
hibernate-cache-config.xml 是一个必要的缓存配置,本例使用 HibernateReplicatedCache 复制模式。  
通过  

引用
set java_opts=-Dtangosol.coherence.cacheconfig=hibernate-cache-config.xml

加入Java命令的启动参数中, coherence 会替换默认的配置。  

还要修改 coherence 的缺省启动命令 coherence.cmd, 将java_opts 加入到原有的变量中,将  

引用
set java_opts="-Xms%memory% -Xmx%memory% -Dtangosol.coherence.distributed.localstorage=%storage_enabled%"


修改为  

引用
set java_opts="-Xms%memory% -Xmx%memory% -Dtangosol.coherence.distributed.localstorage=%storage_enabled% %java_opts%"  



并将 coherence-hibernate.jar 加入classpath中, 将  

引用
-cp "%coherence_home%\lib\coherence.jar"


修改为  

引用
-cp "%coherence_home%\lib\coherence.jar;%coherence_home%\lib\coherence-hibernate.jar"  
【无人机】基于改进粒子群算法的无人机路径规划研究[遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究改进中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值