繁体   English   中英

Spring,Infinispan和JBoss 7集成

[英]Spring, Infinispan and JBoss 7 integration

我正在尝试使用JBoss 7 Infinispan缓存作为两个战争部署的基于Spring的应用程序的通信形式(更晚一些)。 我在访问JBoss托管缓存管理器时遇到问题。

我用的时候

DefaultCacheManager cacheManager = new DefaultCacheManager();
cache = cacheManager.getCache();

在两个应用程序中的每一个上,我得到两个单独的缓存。 有没有办法在不使用@ManagedBean注释和Java EE标准的情况下访问JBoss服务器创建的缓存?


完成。 感谢Kazaag,我使用了JNDI。

JndiTemplate jndiTemplate = new JndiTemplate();
jndiTemplate.lookup("java:jboss/infinispan/container/cluster");

我有一个众所周知的DefaultEmbeddedCacheManager类Cast Exception问题。 我用过反射。

Map<Object, Object> cache;
JndiTemplate jndiTemplate = new JndiTemplate();
Object cacheManager;
try {
    cacheManager = (Object) jndiTemplate.lookup("java:jboss/infinispan/container/cluster");
    Method method = cacheManager.getClass().getMethod("getCache");
    cache = (Map) method.invoke(cacheManager);
} catch (Exception e) {
    e.printStackTrace();
    return;
}

此外,我不得不急切地将容器标记为开始。

    <cache-container name="cluster" aliases="ha-partition" default-cache="default">
        <transport lock-timeout="60000"/>
        <replicated-cache name="default" mode="SYNC" start="EAGER" batching="true">
            <locking isolation="REPEATABLE_READ"/>
        </replicated-cache>
    </cache-container>

虽然不同的类加载器复制了缓存。

如果每个应用程序都使用自己的缓存管理器,则它们将分离缓存。

您可以通过Spring的JNDI支持检索应用程序服务器管理的缓存容器(JNDI名称为java:jboss/infinispan/my-container-name )。 所以Spring将负责确保每个部件都使用相同的容器。

我不是100%确定你会获得相同的缓存,它可能会返回一个特定于应用程序的缓存(2个应用程序数据对象实际上来自不同的类加载器)。

嵌入式缓存可能不适用于应用程序间通信。 您可能需要使用客户端/服务器范例。

有一天晚些时候,但可以在这里找到有关通过JNDI访问infinispance缓存存储的信息

通过JNDI查找,我获得了CacheContainer

<jee:jndi-lookup id="cache1" 
    jndi-name="java:jboss/infinispan/container/jbossas7-quickstart" 
    cache="true" resource-ref="false" lookup-on-startup="true" />

我通过二传手注入

public void setContainer(CacheContainer container) {
    this.container = container;
}

现在我可以访问缓存库了。 请注意这里的建议

@Resource(lookup="java:jboss/infinispan/container/my-container-name")
@Resource(lookup="java:jboss/infinispan/cache/my-container-name/my-cache-name")

不在我的Spring Bean中工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM