java - KeyAffinityService 的 NullPointerException

标签 java nullpointerexception infinispan

我正在尝试在 Infinispan 中实现一个分布式系统,我想获取与本地节点关联的 key 。我试图通过利用 KeyAffinityService 来实现这一点,但我得到了 NullPointerException。我希望有人能帮助我找出我的错误。

代码片段

    // Create the affinity service to find the Key for the manager  
    KeyAffinityService keyAffinityService = KeyAffinityServiceFactory.newLocalKeyAffinityService(  
            cache,  
            (KeyGenerator)new RndKeyGenerator(),  
            Executors.newSingleThreadExecutor(),  
            100);  

缓存的实现如下:

    EmbeddedCacheManager manager = new DefaultCacheManager();  
    try{  
        manager = new DefaultCacheManager("democluster.xml");  
    }catch(IOException e){}  
    Cache<Integer, String> cache = manager.getCache();  

Xml 文件

<infinispan  
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
      xsi:schemaLocation="urn:infinispan:config:5.1 http://www.infinispan.org/schemas/infinispan-config-5.1.xsd"  
      xmlns="urn:infinispan:config:5.1">  
    
   <global>  
      <transport clusterName="demoCluster"/>  
      <globalJmxStatistics enabled="true"/>  
   </global>  
  
   <namedCache name="clusteredCache">  
        <clustering mode="distributed">  
        <hash numOwners="1" >  
           <groups enabled="true"/>  
        </hash>  
        </clustering>  
    </namedCache>  
</infinispan>  

错误:

Exception in thread "main" java.lang.NullPointerException  
  at org.infinispan.affinity.KeyAffinityServiceFactory.newLocalKeyAffinityService(KeyAffinityServiceFactory.java:95)  
  at org.infinispan.affinity.KeyAffinityServiceFactory.newLocalKeyAffinityService(KeyAffinityServiceFactory.java:104)  
  at SimpleCache.start(SimpleCache.java:46)  
  at SimpleCache.main(SimpleCache.java:96)

我想知道是否有人遇到过类似的事情或者可能对这个问题有任何想法。

最佳答案

您使用了错误的缓存,您应该这样做

Cache<Integer, String> cache = manager.getCache("clusteredCache"); 

KeyAffinityService 仅适用于分布式缓存,默认缓存仅限本地(因为您的配置中没有 <default> 元素)。

关于java - KeyAffinityService 的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23916400/

相关文章:

tomcat - tomcat上使用infinispan的分布式缓存启动失败

java - 替代replace() 或replaceAll() 方法

java - 在另一个类方法中调用小程序

android - 通过 Intent 打开 Samsung S Planner 时出现异常

java - Java中使用数组结构的假动态数组

java - 如何使用 Quarkus 解决 Infinispan JCache 拦截器中的异常 "Interceptor has no bindings"?

cassandra - datomic 自托管、分布式存储选项的比较?

java - 升级apachestorm(1.0.0到1.2.3)

java - IBM Watson Visual Recognition 参数方法不会隐式接受字符串

java - 在本地运行 Mahout 获取 MahoutDriver 的 ClassNotFoundException