我已经定义了一个带缓存(本地缓存)的Infinipan缓存容器。 在集群环境中(高可用性,例如standalone-full-ha.xml)没有问题。 使用@Resource Annotation查找缓存引用可以正常工作。
但是当部署到具有非群集配置的Wildfly(没有HA,例如standalone-full.xml配置文件)时,此查找将失败 WFLYCTL0184:新的缺失/不满足的依赖项 我仍然可以使用CLI脚本定义缓存,我可以在运行时配置中看到它们。 区别在于JNDI注册表中缺少JNDI资源名称(这就是查找失败的原因)。
使用Default standalone-full-ha.xml(可以正常工作)和standalone-full.xml(部署失败时)可以重现问题。
如何在非群集/非群组配置中查找Infinispan缓存? 如果群集配置文件处于活动状态,我希望有相同的代码和部署用于缓存。
CLI脚本:
batch
/subsystem=infinispan/cache-container=test-cache-container/:add(default-cache=test-cache,jndi-name=java:jboss/infinispan/container/test)
/subsystem=infinispan/cache-container=test-cache-container/transport=TRANSPORT/:add(lock-timeout=30000)
/subsystem=infinispan/cache-container=test-cache-container/local-cache=test-cache:add(indexing=NONE,jndi-name=infinispan/test-cache-container/test-cache)
/subsystem=infinispan/cache-container=test-cache-container/local-cache=test-cache/transaction=TRANSACTION:add(locking=PESSIMISTIC, mode=FULL_XA)
/subsystem=infinispan/cache-container=test-cache-container/local-cache=test-cache/eviction=EVICTION:add(strategy=NONE)
/subsystem=infinispan/cache-container=test-cache-container/local-cache=test-cache/locking=LOCKING:add(acquire-timeout=30000,isolation=REPEATABLE_READ)
run-batch
使用@Resource查找:
@Singleton
@Remote(DataStore.class)
public class DataStoreBean implements DataStore {
@Resource(lookup = "java:jboss/infinispan/test-cache-container/test-cache")
private Cache<String, Object> cache;
的JBoss部署-structure.xml:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<dependencies>
<module name="org.infinispan" export="true"/>
<module name="org.infinispan.commons" export="true"/>
</dependencies>
</deployment>
</jboss-deployment-structure>
答案 0 :(得分:1)
定义传输的Infinispan缓存容器对JGroups通道具有隐式依赖性。 standalone-full.xml配置文件未定义必需的JGroups子系统。从CLI脚本(添加传输的行)中删除第二行,您应该很高兴。