2017-12-06 3 views
0

Ich benutze Wildfly 10.1.0 + Infinispan 8.2.4.Final + Cache-API 1.0.0 versuchen, Infinispan Jcache Interzeptoren in meiner Anwendung mit minimalem Aufwand, ohne programmatische Setup wenn möglich zu ermöglichen. Ich wollte so eine Anmerkung Arbeit machen einige Wörterbücher zu speichern:Deklaratives Cache-Container-Setup - ist das möglich?

@CacheResult(cacheName = "dictionary", cacheKeyGenerator = MyCacheKeyGeneratorImpl.class) 
public List getDictionary() { 
    ... 
} 

ich diese Tätigkeit zunächst begonnen, weil ich Frühling @Cacheable Anmerkungen verpasst (wir derzeit nicht Frühling config/CDI, nur wenige Bibliotheken wie Spring verwenden Daten JPA-Repositories). Also habe ich heruntergeladen Infinispan Wilfly/EAP-Modul, entpackt es Module Ordner und hinzugefügt, um diese jboss-Deployment-structure.xml Wilfly:

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"> 
    <deployment> 
    <dependencies> 
    <module name="org.infinispan" slot="ispn-8.2" services="export"/> 
    <module name="org.infinispan.cdi" slot="ispn-8.2" services="export"/> 
    <module name="org.infinispan.jcache" slot="ispn-8.2" services="export"/> 
    </dependencies> 
    </deployment> 
</jboss-deployment-structure> 

nun die Annotationen werden verarbeitet und einige Standard-Cache-Behälter verwendet wird "zu schaffen, Wörterbuch "Cache. Jetzt möchte ich diesen Cache-Container genauer abstimmen. Was ist die übliche Methode, die Infinispan-Konfiguration zu injizieren? Ist es möglich, die Moduleinstellungen in die Wilfly-Hauptkonfigurationsdatei (standalone.xml) zu stecken, um diesen Cache-Container so zu definieren oder in einer separaten Datei anzugeben?

<cache-container name="JCacheContainer" default-cache="default" module="org.infinispan.jcache"> 
    <local-cache name="default"> 
    <transaction mode="NONE"/> 
    <eviction strategy="LRU" max-entries="1000"/> 
    <expiration max-idle="3600000"/> 
    </local-cache> 
    <local-cache name="dictionary"> 
    <locking acquire-timeout="15000" isolation="REPEATABLE_READ"/> 
    <transaction locking="PESSIMISTIC" mode="NONE"/> 
    <eviction strategy="LRU" max-entries="100000"/> 
    <expiration lifespan="15000" max-idle="15000"/> 
    </local-cache> 
</cache-container> 

Jede Hilfe wird sehr geschätzt.

Antwort

1

Ein funktionierendes Beispiel für eine solche Konfiguration könnte in Infinispan Integration Tests gefunden werden. Der einzige Unterschied besteht darin, dass Infinispan in einer WAR-Datei implementiert und nicht in die Module eingefügt wird.

Alles, was Sie tun müssen, ist infinispan.xml in WEB-INF-Verzeichnis zu setzen und richtige beans.xml zu verwenden.

Ein weiteres Beispiel mit Modulen und CDI finden Sie unter JBoss Data Grid Quickstarts. Das einzige fehlende Bit aus dem Beispiel ist JCache.

Schließlich könnten Sie interessiert sein an JCache documentation paragraph von Infinispan User Guide.

+0

Vielen Dank. Ich habe endlich, was ich mit Ehcache wollte, aber ich werde die Frage für eine Referenz hinterlassen. – dfche

+0

Leider konnten wir Ihnen nicht helfen. Wenn Sie Ihre Ehcache-basierte Lösung auf Github o.ä. teilen könnten, können wir sie prüfen und sehen, wie wir die Dinge in Zukunft verbessern können. Wie klingt das? –

+0

@ GalderZamarreño danke für die Beantwortung, ich werde einen generischen ehcache Anwendungsfall machen und wenn für Ihre Referenz so schnell wie möglich. – dfche