java-使用EJB 3.1和jboss在集群上缓存数据
作者:互联网
我正在为将在具有多个JVM的大型群集上运行的应用程序中的缓存数据寻找最佳解决方案.我需要将“ value_to_cache”存储在缓存中,并可以将其在另一个JVM(最有可能)上与其他值进行比较,并在需要时进行删除/更新(或删除并创建新的).应用程序将使用Java-EJB 3.1技术进行开发,并部署在Jboss 6或7上.
我正在搜寻答案,所以我发现:
使用JPA休眠
Infinispan
HA分区服务
我一直希望得到严格的答案,但找不到答案.所以我的问题是最好的方法是什么?又为什么呢?
解决方法:
Infinispan是JBoss 7上默认的缓存提供程序.如果您想要应用程序服务器随附的解决方案,则必须坚持使用此框架.
对于JPA实体,已经有second-level cache(实际上是预定义的Infinispan缓存).只需按照JPA reference guide开始即可.
如果需要更通用的解决方案,还可以创建自定义Infinispan缓存.假设您在JBoss 7(基本集群模式)的域模式下运行ha配置文件:
<profile name="ha">
...
<subsystem xmlns="urn:jboss:domain:infinispan:1.2" default-cache-container="cluster">
...
<cache-container name="myCacheCont" default-cache="myCache">
<!-- Adjust replication settings below (sync/async etc.) -->
<transport lock-timeout="60000"/>
<replicated-cache name="myCache" mode="SYNC" batching="true">
<locking isolation="REPEATABLE_READ"/>
</replicated-cache>
</cache-container>
</subsystem>
...
</profile>
在这种情况下,可以通过标准@Resource查找来获取缓存引用:
@Stateless
public class MyEJB implements SomeService {
@Resource(lookup="java:jboss/infinispan/myCacheCont")
private org.infinispan.manager.CacheContainer container;
...
void doSomethingWithCache() {
org.infinispan.Cache cache = container.getCache("myCache");
...
cache.put(...); // Data will be replicated to different nodes, if configured properly
}
}
不要忘记在项目中将org.infinispan添加为模块依赖项.
标签:caching,jboss,cluster-computing,ejb,java 来源: https://codeday.me/bug/20191030/1970423.html