Frage

Ich plane eine Cache-Lösung in einen bestehenden Web-App zu implementieren. Nichts kompliziert: im Grunde eine gleichzeitige Karte, dass Träger auf die Festplatte und die automatische Räumung überfüllt. die Cache-Clustering Anforderung in der Zukunft sein könnte, aber jetzt nicht mehr.

Ich mag ehcache des copyOnRead und Copy-On-Write verfügt, weil es bedeutet, dass ich nicht manuell Klon Dinge tun, bevor etwas zu modifizieren I des Cache herausnehmen. Jetzt habe ich zu sehen begann unter Infinispan , aber ich habe nichts gleichwertig dort gefunden. Existiert es?

.

D.h., sollten folgende Einheit Prüfungen bestehen:

@Test
public void testCopyOnWrite() {
    Date date = new Date(0);
    cache.put(0, date);
    date.setTime(1000);
    date = cache.get(0);
    assertEquals(0, date.getTime());
}

@Test
public void testCopyOnRead() {
    Date date = new Date(0);
    cache.put(0, date);
    assertNotSame(cache.get(0), cache.get(0));
}
War es hilfreich?

Lösung

Nach einem JBoss-Entwickler, hat Infinispan noch nicht solche Funktion unterstützen. Sie sollten einen Antrag auf Erweiterung melden Sie sich an Infinispan issue tracker , so dass andere darüber abstimmen kann (ich werde) .

That being said, wenn Sie diese Funktion müssen jetzt , eine Abhilfe AbstractDelegatingCache und überschreiben die get und put Methoden, um diese Funktionalität hinzuzufügen. Sie könnten Ihre eigene Kopie Strategie oder sehen Sie verwenden, wie EHCache tat es für Inspiration.

Auch können Sie betrachten die Infinispan Forum , wenn Sie weitere Fragen haben, , da Sie mehr Ansichten von der Infinispan Gemeinschaft haben.

Andere Tipps

Infinispan hat Unterstützung copyOnRead / Copy-On-Write, wenn auch das tatsächliche Format nicht steckbar ist. Das Konfigurationselement ist lazyDeserialization in Infinispan 4.x und storeAsBinary in Infinispan 5.x. Die Objekte werden serialisiert den steckbare Marshaller-Framework, die für alle Formen von Rangier- einschließlich für RPC-Aufrufe über ein Netzwerk und Speicherung auf der Festplatte verwendet wird.

Ich glaube storeAsBinary nur wirksam wird, wenn Objekte serialisiert werden müssen, was bedeutet, wenn ein put Betrieb genannt wird, ist der Eigentümer nicht der aktuelle Knoten.

Das bedeutet auch, die Testfälle in der Frage passieren könnte, wenn der Besitzer des Schlüssels 0 ist nicht der aktuelle Knoten, aber es wäre immer noch fehlschlagen, wenn es sich um eine einzelne Knotenumgebung ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top