2016-08-05 33 views
0

ich Infinispan bin mit, aber wenn mein Wildfly neu starten den Cache nicht in Dateispeicher haltenInfinispan nicht Cache in der Datei halten Wildfly 10

@Resource(lookup = "java:jboss/infinispan/container/server") 
private EmbeddedCacheManager manager; 

public String test() { 
this.cache.put(UUID.randomUUID().toString(), new Date()); 
    this.cache.put(UUID.randomUUID().toString(), new Date()); 
    this.cache.put(UUID.randomUUID().toString(), new Date()); 
    this.cache.put(UUID.randomUUID().toString(), new Date()); 
    this.cache.put(UUID.randomUUID().toString(), new Date()); 
} 

@PostConstruct 
protected void init() { 
    this.manager.start(); 
    this.cache = this.manager.getCache(); 
} 

Das ist mein standalone.xml

<cache-container name="server" default-cache="default" module="org.wildfly.clustering.web.infinispan"> 
    <local-cache name="default"> 
     <transaction mode="BATCH"/> 
     <file-store relative-to="jboss.server.data.dir" path="infinispan" passivation="false" purge="false"/> 
    </local-cache> 
</cache-container> 
+0

Ich kann nicht von der Spitze meines Kopfes sagen, aber Sie sollten den Manager nicht starten müssen, da es bereits gestartet wird, wenn es injiziert wird. Können Sie versuchen, das zu entfernen? –

Antwort

1

Die Lösung: Injizieren Sie Ihren Cache direkt. Dadurch wird sichergestellt, dass die von Ihrem Cache verwendete Cache-Konfiguration bei Bedarf installiert wird. Darüber hinaus wird WildFly automatisch den Lebenszyklus des Cache und seiner Abhängigkeiten behandeln.

z.B.

@Resource(lookup = "java:jboss/infinispan/cache/server/default") 
private Cache<UUID, Date> cache; 

Ich würde auch empfehlen, UUID-Typen direkt anstelle einer Zeichenfolge zu verwenden, da diese effizienter serialisiert werden.