Home
JBoss Enterprise Application Platform 5.0 JBoss Cache
Contents
1. 0 11 1 Nebenlaufiger Zugriff 11 1 1 Multi Version Concurrency Control MVCC 11 1 1 1 MVCC Konzepte 11 1 1 2 MVCC Implementierung 11 1 1 2 1 Isolationsebenen 11 1 1 2 2 Nebenlaufige Schreibvorgange und Write Skews 11 1 1 3 Konfiguration von Sperren 11 1 2 Pessimistische und optimistische Sperrschemata 11 2 JTA Unterst tzung Teil Ill JBoss Cache Konfigurationsreferenzen 0 ccc cece 72 73 73 73 73 74 74 75 75 75 ies JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Kapitel 12 Konfigurationsreferenzen 0 00 cect eens 78 12 1 Beispiel einer XML Konfigurationsdatei 78 12 1 1 XML Validierung 82 12 2 Kurzanleitung zur Konfigurationsdatei 83 Kapitel 13 JMX Referenzen 13 1 JBoss Cache Statistiken 119 13 2 JBoss MBean Benachrichtigungen 122 Inhaltsverzeichnis JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Vorwort Dies ist das offizielle JBoss Cache Benutzerhandbuch Zusammen mit den zugeh rigen Dokumenten ein FAQ ein Tutorial und eine ganze Reihe von Dokumenten ber POJO Cache ist es frei verf gbar auf der JBoss Cache Dokumentations Website JBoss Cache bezieht sich im Folgenden auf JBoss Cache Core einen geclusterten transaktionalen Cache in Baumstruktur Der POJO Cache der ebenfalls Teil der JBoss Cache Distribution ist wird separat dokumentiert POJO Cache ist ein Cache der Plain Old Java O
2. S redhat JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch zum Gebrauch mit der JBoss Enterprise Application Platform 5 0 Ausgabe 2 0 Manik Surtani Brian Stansberry Galder Zamarreno Mircea Markus JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch zum Gebrauch mit der JBoss Enterprise Application Platform 5 0 Ausgabe 2 0 Manik Surtani manik jboss org Brian Stansberry brian stansberry jboss com Galder Zamarrefio galder zamarreno jboss com Mircea Markus mircea markus jboss com Rechtlicher Hinweis Copyright 2009 Red Hat Inc This document is licensed by Red Hat under the Creative Commons Attribution ShareAlike 3 0 Unported License If you distribute this document or a modified version of it you must provide attribution to Red Hat Inc and provide a link to the original If the document is modified all Red Hat trademarks must be removed Red Hat as the licensor of this document waives the right to enforce and agrees not to assert Section 4d of CC BY SA to the fullest extent permitted by applicable law Red Hat Red Hat Enterprise Linux the Shadowman logo JBoss MetaMatrix Fedora the Infinity Logo and RHCE are trademarks of Red Hat Inc registered in the United States and other countries Linux is the registered trademark of Linus Torvalds in the United States and other countries Java is a registered trademark of Oracle and or its affiliates XFS
3. ignoreModifications false purgeOnStartup false gt lt properties gt cache jdbc table name jbosscache cache jdbc table create true cache jdbc table drop true cache jdbc table primarykey jbosscache_pk cache jdbc fqn column fqn cache jdbc fqn type VARCHAR 255 cache jdbc node column node cache jdbc node type BLOB cache jdbc parent column parent cache jdbc driver oracle jdbc OracleDriver cache jdbc url jdbc oracle thin localhost 1521 JBOSSDB cache jdbc user SCOTT cache jdbc password TIGER lt properties gt lt loader gt lt loaders gt Als Alternative zur Konfiguration der gesamten JDBC Verbindung kann der Name einer bestehenden Datenquelle eingegeben werden lt loaders passivation false shared false gt lt preload gt lt node fqn some stuff gt lt preload gt lt if passivation is true only the first cache loader is used the rest are ignored gt lt loader class org jboss cache loader JDBCCacheLoader async false fetchPersistentState true ignoreModifications false purgeOnStartup false gt lt properties gt cache jdbc datasource java DefaultDS lt properties gt lt loader gt lt loaders gt 56 Kapitel 9 Cache Loader Konfigurationsbeis piel f r einen Cache Loader der c3p0 JDBC Verbindungs Pooling nutzt lt loaders passivation false shared false gt lt preload gt lt node fqn some stuff gt lt preload gt lt if passivation is true only
4. JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Das bedeutet dass diese Instanz von JBoss Cache alle Lade und Speicheranfragen an den entfernten TcpCacheServer delegiert der auf myRemoteServer 7500 l uft Ein typischer Anwendungsfall waren mehrere replizierte Instanzen von JBoss Cache in demselben Cluster die alle zu derselben TcpCacheServer Instanz delegieren Der TcpCacheServer k nnte via JDBCCacheLoader selbst zu einer Datenbank delegieren aber der Punkt hier ist dass wenn f nf Knoten alle auf denselben Datensatz zugreifen diese die Daten vom T cpCacheServer laden der eine SQL Anweisung pro entladenem Datensatz ausf hren muss Gingen die Knoten direkt in die Datenbank so w rde dieselbe SQL mehrere Male ausgef hrt Daher fungiert TcpCacheServer als nat rlicher Cache vor der Datenbank in der Annahme dass ein Netzwerk Rundtrip hin und zur ck schneller ist als ein Datenbankzugriff der in der Regel ebenfalls einen Netzwerk Rundtrip hin und zur ck beinhaltet Um zu vermeiden dass ein Fehler an dieser Stelle das gesamte System zum Scheitern bringen k nnte sog single point of failure k nnten wir mehrere Cache Loader konfigurieren Der erste Cache Loader ist ein ClusteredCacheloader der zweite ein TcpDelegatingCacheLoader und der dritte und letzte ein JDBCacheloader was unsere Zugriffskosten auf einen Cache in aufsteigender Reihenfolge definiert 9 3 6 Umwandlung von Cache Loadern Die Art un
5. Untergeordnete Elemente Bean Aquivalent Tabelle 12 30 Das lt node gt Element Das lt node gt Element Beschreibung Ubergeordnetes Element Untergeordnete Elemente Bean Aquivalent Kapitel 12 Konfigurationsreferenzen Standard Beschreibung Falls true werden Cache Loader im Passivierungsmod us verwendet eine ausfuhrliche Erlauterung diesbez glich Falls true werden Cache Loader gemeinsam verwendet Siehe ausf hrliche Erl uterung diesbez glich Definiert das Vorladen von FQN Unterb umen beim Start des Caches Dieses Element besitzt keinerlei Attribute Tabelle 12 27 Das sloaders gt Element CacheLoaderConfig Dieses Element definiert einen Unterbaum unter dem alle Inhalte von den Cache Loadern beim Start des Caches vorgeladen werden Es k nnen mehrere Unterb ume vorgeladen werden allerdings macht es nur dann Sinn mehrere Unterb ume zu definieren wenn diese sich nicht berschneiden CacheloaderConfig 101 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Tabelle 12 31 lt node gt Attribute lt node gt Attribute Attribut Bean Feld PAT EEK Standard Beschreibung preload keiner Ein vorzuladender FQN Dies sollte ein String sein der mittels Fan fromString analysiert werden kann Erfolgt dies befehlsorientiert sollten Sie einen einzigen String erzeugen der alle FONs die Sie vorladen m chten durch Leerzeichen v
6. ber die verf gbaren Optionen 23 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Kapitel 4 Batching API 4 1 Einf hrung Die Batching API eingef hrt in JBoss Cache 3 x bietet ein Verfahren zur stapelweisen Replikation von Aufrufen unabh ngig von JTA Transaktionen Dies ist hilfreich wenn Sie Replikationsaufrufe innerhalb eines Geltungsbereichs der kleiner als alle laufenden JTA Transaktionen ist stapelweise verarbeiten m chten 4 2 Batching Konfiguration Um Batching zu verwenden m ssen Sie in Ihrer Cache Konfiguration das Aufruf Batching aktivieren und zwar entweder im Configuration Objekt Configuration setInvocationBatchingEnabled true oder in Ihrer XML Datei lt invocationBatching enabled true gt Standardm ig ist das Aufruf Batching deaktiviert Beachten Sie dass Sie nicht notwendigerweise einen Transaktionsmanager definiert haben m ssen um Batching zu verwenden 4 3 Batching API Nachdem Sie Ihren Cache zur Verwendung von Batching konfiguriert haben benutzen Sie es durch Aufruf von startBatch und endBatch auf Cache z B Cache cache getCache not using a batch cache put a key value will replicate immediately using a batch cache startBatch cache put a key value cache put b key value cache put c key value cache endBatch true This will now replicate the modifications since the batch was s
7. durch die CacheSPI Schnittstelle bereitgestellt 7 4 1 RpcManager Diese Klasse ist verantwortlich f r Aufrufe ber den JGroups Channel f r alle RPC Aufrufe an entfernte Caches und kapselt den verwendeten JGroups Channel ein 7 4 2 BuddyManager Diese Klasse verwaltet Buddy Gruppen und t tigt entfernte Aufrufe zur Gruppenorganisation um einen Cluster von Caches in kleinere Untergruppen aufzuteilen 7 4 3 CacheLoaderManager Legt Cache Loader an und konfiguriert diese Diese Klasse umschlie t einzelne CacheLoader Instanzen in delegierenden Klassen wie z B SingletonStoreCacheLoader oder AsyncCacheLoader oder f gt den CacheLoader mit Hilfe des ChainingCacheLoader zu einer Kette hinzu 39 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch 7 5 Marshalling und Wire Formate Altere Versionen von JBoss Cache schrieben gecachte Daten einfach ins Netzwerk indem Sie wahrend der Replikation an einen ObjectOutputStream schrieben Uber mehrere Releases in der JBoss Cache 1 x x Serie hinweg wurde dieser Ansatz allmahlich zugunsten eines ausgereifteren Marshalling Frameworks aufgegeben In der JBoss Cache 2 x x Serie ist dies nun der einzig offiziell unterst tzte und empfohlene Weg zum Schreiben von Objekten in Datenstr me Marshaller N O a ae From org jgroups blocks RpcDispatcher Marshaller Delegates to CacheMarshaller Abbildung 7 3 Die Marshaller Schnittstelle 7 5 1 Die Marsha
8. einen Cache der alle relevanten Daten im Speicher hat wenn der Cache mit der Bereitstellung von Diensten beginnt Beachten Sie dass das lt preload gt Element im lt loaders gt Konfigurationselement ebenfalls verwendet werden kann um einen warm oder hot Cache bereitzustellen ohne dass eine speicherinterne Zustands bertragung n tig w re Diese Vorgehensweise reduziert geringf gig die Belastung der Cache Instanz die den Zustand liefert erh ht aber die Belastung auf den persistenten Speicher auf Empf ngerseite 2 Wird ein Cache Loader mit Passivierung verwendet so kann die vollst ndige Repr sentation des Zustands nur durch Kombination des speicherinternen d h nicht passivierten und persistenten d h passivierten Zustands erhalten werden Daher ist eine speicherinternere Zustands bertragung notwendig Eine persistente Zustands bertragung ist n tig wenn der Cache Loader nicht gemeinsam verwendet wird 3 Wird kein Cache Loader verwendet und handelt es sich beim Cache ausschlie lich um einen Write Aside Cache d h ein Cache der zum Cachen von Daten verwendet wird die auch in einem persistenten Speicher z B einer Datenbank vorliegen so ist es abh ngig davon ob ein hot Cache erw nscht ist oder nicht ob der speicherinterne Zustand bertragen wird oder nicht 8 3 5 Nicht sperrende Zustands bertragung Neu in JBoss Cache 3 1 0 ist die nicht sperrende Zustands bertragung Non Blocking State Transfer oder ku
9. false lockAcquisitionTimeout 20000 nodeLockingScheme mvcc writeSkewCheck false useLockStriping true concurrencyLevel 500 gt lt Used to register a transaction manager and participate in ongoing transactions gt lt transaction transac tionManagerLookupClass org jboss cache transaction GenericTransactionManagerL ookup syncRollbackPhase false syncCommitPhase false gt lt Used to register JMX statistics in any available MBean server gt lt jmxStatistics enabled false gt lt If region based marshalling is used defines whether new regions are inactive on startup gt lt startup regionsInactiveOnStar tup true gt lt Used to register JVM shutdown hooks hookBehavior DEFAULT REGISTER DONT_REGISTER gt lt shutdown hookBehavior DEFAULT gt lt Used to define async listener notification thread pool size gt lt listeners asyncPoolSize 1 asyncQueueSize 100000 gt Sl Used to enable invocation batching and allow the use of Cache startBatch endBatch methods co Sache Benutzerhandbuch gt lt invocationBatching enabled false gt lt serialization related configuration used for replication and cache loading gt lt serialization objectInputStreamPoolSize 12 objectOutputStreamPoolSize 14 version 3 0 0 marshallerClass org jboss cache marshall VersionAwareMarshaller useLazyDeserialization false useRegionBased
10. is a trademark of Silicon Graphics International Corp or its subsidiaries in the United States and or other countries MySQL is a registered trademark of MySQL AB in the United States the European Union and other countries Node js is an official trademark of Joyent Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node js open source or commercial project The OpenStack Word Mark and OpenStack Logo are either registered trademarks service marks or trademarks service marks of the OpenStack Foundation in the United States and other countries and are used with the OpenStack Foundation s permission We are not affiliated with endorsed or sponsored by the OpenStack Foundation or the OpenStack community All other trademarks are the property of their respective owners Zusammenfassung Bei diesem Buch handelt es sich um das Benutzerhandbuch fiir den Cache der JBoss Enterprise Application Platform Inhaltsverzeichnis VORWOP by Se Settee cl hata hele NR ete Med eae dd Asie hed eh acd Atlant hee ah kare gules Teil l Einf hrung in den JBoss Cache 00 0 cece eee eee Kapitel 1 berblick A 0 4 23282 eo ee et 1 1 Was ist JBoss Cache 1 1 1 Und was ist ein POJO Cache 1 2 Kurzfassung der Features 1 2 1 Cachen von Objekten 1 2 2 Lokale und geclusterte Modi 1 2 3 Geclusterte Caches und Transaktionen 1 2 4 Thread Sicherheit 1 3 Anforderungen 1 4 Lizenz Kapit
11. node cache jdbc node type Spaltentyp der Knoteninhalte Der Standardwert lautet blob Dieser Typ muss einen g ltigen Bin rdatentyp f r die verwendete Datenbank festlegen 9 3 3 1 2 Datenquelle Wenn Sie JBossCache in einer verwalteten Umgebung verwenden z B einem Applikationsserver so k nnen Sie den JNDI Namen der Datenquelle festlegen die Sie verwenden wollen cache jdbc datasource JNDI Name der Datenquelle Der Standardwert lautet java DefaultDS 9 3 3 1 3 JDBC Treiber Wenn Sie keine Datenquelle verwenden stehen Ihnen die folgenden Eigenschaften zur Konfiguration des Datenbankzugriffs mittels JDBC Treiber zur Verf gung cache jdbc driver vollqualifizierter JDBC Treibername cache jdbc url URL zur Verbindung mit der Datenbank cache jdbc user Benutzername zur Verbindung mit der Datenbank cache jdbc password Passwort zur Verbindung mit der Datenbank 9 3 3 1 4 c3p0 Verbindungs Pooling JBoss Cache implementiert JDBC Verbindungs Pooling wenn au erhalb eines Applikationsservers eigenst ndig ausgef hrt unter Verwendung der c3p0 JDBC Datenquellen Ressourcen Pool Bibliothek Um es zu aktivieren bearbeiten Sie einfach die folgende Eigenschaft cache jdbc connection factory Klassenname der Verbindungs Factory Falls nicht eingestellt wird die standardm ige nicht gepoolte Implementierung verwendet Um c3p0 Pooling zu aktivieren stellen Sie einfach die Verbindungs Factory Klasse auf c3p
12. sentiert Verzeichnisse und Dateien ist Traversal f r tief verschachtelte B ume ineffizient Der Einsatz auf freigegebenen Dateisystemen wie NFS Windows Shares etc sollte vermieden werden da diese keine ordnungsgem en Dateisperren implementieren und besch digte Daten die Folge sein k nnten Die Verwendung mit der Isolationsebene NONE kann zu fehlerhaften Schreibvorg ngen f hren da mehrere Threads versuchen in dieselbe Datei zu schreiben 53 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Dateisysteme sind naturgem nicht transaktional wenn Sie also versuchen Ihren Cache in einem transaktionalen Kontext zu verwenden k nnen Fehler beim Schreiben in die Datei die w hrend der Festschreibungsphase auftreten nicht wiederhergestellt werden Als Faustregel empfehlen wir Ihnen den FileCacheLoader nicht in einer transaktionalen hoch nebenl ufigen oder sehr beanspruchten Umgebung einzusetzen sondern ihn nur zu Testzwecken zu verwenden BdbjeCacheLoader eine Cache Loader Implementierung basierend auf Oracle Sleepycat s schnellen und kostenlosen Alternative zu BerkeleyDB Beachten Sie dass die BerkeleyDB Implementierung wesentlich effizienter als die dateisystembasierte Implementierung ist und transaktionale Garantien bietet jedoch eine kommerzielle Lizenz ben tigt falls Details 9 3 2 Cache Loader die an andere Caches delegieren LocalDelegatingCacheLoader erm glicht das Laden au
13. 0 handhabt der TcpDelegatingCacheLoader transparent den erneuten Verbindungsaufbau falls die Verbindung zum TcpCacheServer abbricht Der TcpDelegatingCacheLoader wird mit dem Host und dem Port des entfernten TcpCacheServer konfiguriert was er zur Kommunikation mit demselben verwendet Zus tzlich werden zwei neue optionale Parameter verwendet um die transparente Neuverbindung mit dem TcpCacheServer zu steuern Die timeout Eigenschaft standardm ig 5000 legt die Zeitspanne fest w hrend der der Cache Loader weiterhin versuchen muss mit dem TcpCacheServer zu verbinden bevor er aufgeben und eine Ausnahme ausgeben soll Die reconnectWaitT ime Eigenschaft standardm ig 500 legt fest wie lange der Cache Loader warten soll bevor er versucht sich wieder zu verbinden wenn er einen Kommunikationsfehler entdeckt Die letzten zwei Parameter k nnen dazu genutzt werden um eine Ebene der Fehlertoleranz zum Cache Loader hinzuzuf gen um mit TcpCacheServer Neustarts umzugehen Die Konfiguration sieht folgenderma en aus lt loaders passivation false shared false gt lt preload gt lt node fqn gt lt preload gt lt if passivation is true only the first cache loader is used the rest are ignored gt lt loader class org jboss cache loader TcpDelegatingCacheLoader gt lt properties gt host myRemoteServer port 7500 timeout 10000 reconnectWaitTime 250 lt properties gt lt loader gt lt loaders gt 59
14. 1 Cache Loader Verhalten mit aktivierter bzw deaktivierter Passivierung 9 5 Strategien 9 5 1 Lokaler Cache mit Speicher 9 5 2 Replizierte Caches bei dem alle Knoten denselben Speicher verwenden 9 5 3 Replizierte Caches darunter nur ein Knoten mit Speicher 9 5 4 Replizierte Caches bei denen jeder Knoten seinen eigenen Speicher hat 9 5 5 Hierarchische Caches 9 5 6 Mehrere Cache Loader Kapitel 10 Eviction 4 27 naar La Meee Re LE 10 1 Aufbau 10 1 1 Sammeln statistischer Daten 10 1 2 Bestimmen der zu r umenden Knoten 10 1 3 Art und Weise der Knotenr umung 10 1 4 Eviction Threads 10 2 Eviction Bereiche 10 2 1 Residente Knoten 10 3 Konfiguration der Eviction 10 3 1 Grundlegende Konfiguration 10 3 2 Befehlsorientierte Konfiguration 10 4 Enthaltene Eviction Richtlinien 10 4 1 LRUAlgorithm Least Recently Used Am l ngsten nicht verwendet 10 4 2 FIFOAlgorithm First In First Out Als Erster rein als Erster raus 10 4 3 MRUAlgorithm Most Recently Used Zuletzt verwendet 10 4 4 LFUAlgorithm Least Frequently Used Am wenigsten verwendet 10 4 5 ExpirationAlgorithm Inhaltsverzeichni 54 54 55 55 55 55 55 56 57 58 58 59 60 60 61 62 62 62 63 63 64 65 67 67 67 67 68 68 68 69 69 69 70 70 70 71 71 71 10 4 6 ElementSizeAlgorithm Eviction basierend auf der Anzahl von Schl ssel Wert Paaren in einem Knoten Kapitel 11 Transaktionen und Nebenl ufigkeit
15. Bereich gestattete Anzahl von Knoten 0 bedeutet sofortigen Ablauf 1 bedeutet keine Beschr nkung maxElementsPerNode Dies ist die ausl sende Anzahl von Attributen pro Knoten bei der dieser Knoten zur Eviction ausgew hlt wird 0 bedeutet sofortigen Ablauf 1 bedeutet keine Beschr nkung minTimeToLive die Mindestzeit die ein Knoten nach Zugriff darauf bestehen bleiben darf bevor er f r die Eviction in Betracht gezogen werden darf 0 bedeutet dass diese Funktion deaktiviert ist dies ist die Standardeinstellung Kapitel 11 Transaktionen und Nebenlaufigkeit Kapitel 11 Transaktionen und Nebenlaufigkeit 11 1 Nebenlaufiger Zugriff JBoss Cache ist eine threadsichere Caching API und verwendet seine eigenen effizienten Verfahren zur Steuerung von nebenl ufigen Zugriffen Es verwendet eine innovative Implementierung von Multi Cache vor 3 x boten optimistische und pessimistische Sperrschemata an die nunmehr jedoch beide zugunsten von MVCC aufgegeben wurden 11 1 1 Multi Version Concurrency Control MVCC wird um den schnellen sicheren nebenl ufigen Zugriff auf gemeinsam verwendete Daten zu steuern 11 1 1 1 MVCC Konzepte MVCC ist darauf ausgelegt die folgenden Features f r nebenl ufigen Zugriff zu bieten Lesevorg nge blockieren keine Schreibvorg nge Schreibvorg nge die schnell fehlschlagen Erreicht wird dies mit Hilfe von Datenversionierung und Kopieren f r nebenl ufige Schreibvorg nge Die Theorie dabei i
16. Eviction Verhalten f r Knoten innerhalb dieses Bereichs festzulegen Zus tzlich zu der bereichsspezifischen Konfiguration k nnen Sie auch ein standardm iges Cache weites Eviction Verhalten f r alle Knoten festlegen die nicht in vordefinierte Bereiche fallen oder falls Sie keine spezifischen Regionen definieren m chten Beachten Sie dass beim Definieren von Bereichen mittels der Konfigurations XML Datei alle Elemente des Fqn der den Bereich definiert String Objekte sind F r jeden Bereich k nnen Sie Eviction Parameter festlegen Es ist m glich Bereiche zu definieren die sich berschneiden Zum Beispiel kann ein Bereich f r a b c definiert sein w hrend ein anderer f r a b c d definiert ist also nur der d Unterbaum des a b c Unterbaums Der Algorithmus um ein solches Szenario konsistent zu handhaben wird immer den ersten Bereich w hlen den er antrifft Auf diese Weise w rde ein Algorithmus der entscheiden muss wie mit dem Knoten a b c d e zu verfahren ist von dort starten und im Baum aufw rts steigen bis er den ersten definierten Bereich antrifft in diesem Fall a b c d 10 2 1 Residente Knoten Als resident gekennzeichnete Knoten mittels der Node setResident API werden von den Eviction Richtlinien sowohl beim Pr fen ob die Eviction ausgel st werden soll als auch beim Durchf hren der eigentlichen R umung von Knoten ignoriert Wenn beispielsweise ein Bereich f r maximal zehn Knoten konfiguriert ist
17. JBoss Cache mit einem Cache Loader konfiguriert stehen folgende Funktionen zur Verf gung Jedesmal wenn auf ein Cache Element zugegriffen wird und dieses Element sich nicht im Cache befindet z B durch Eviction oder aufgrund eines Neustarts des Servers so l dt der Cache Loader das Element transparent in den Cache falls er es im Backend Speicher findet Jedesmal wenn ein Element bearbeitet hinzugef gt oder entfernt wird so wird diese nderung ber den Cache Loader im Backend Speicher persistiert Werden Transaktionen verwendet so werden alle innerhalb einer Transaktion erstellten nderungen persistiert Der CacheLoader nimmt dazu teil am 2 Phasen Festschreibungsprotokoll das vom Transaktionsmanager ausgef hrt wird wenn auch nicht explizit 9 1 CacheLoader Schnittstelle und Lebenszyklus Abbildung 9 1 Die CacheLoader Schnittstelle Die Interaktion zwischen JBoss Cache und einer CacheLoader Implementierung ist wie folgt Ist CacheLoaderConfiguration siehe unten nicht Null so wird eine Instanz eines jeden konfigurierten CacheLoader erzeugt wenn der Cache erzeugt wird und wird gestartet wenn auch der Cache gestartet wird CacheLoader create und CacheLoader start werden aufgerufen wenn der Cache gestartet wird Entsprechend werden stop und destroy aufgerufen wenn der Cache gestoppt wird Als N chstes werden setConfig und setCache aufgerufen Letzteres kann zum Speichern einer Referenz im Cache ver
18. Registrierung mit einer Cache Instanz 5 4 2 2 Befehlsorientierte Registrierung mit einer Konfigurationsinstanz Inhaltsverzeichni JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch 5 4 2 3 JMX basiertes Deployment in JBoss AS JBoss AS 5 x 5 4 3 JBoss Cache Statistiken 5 4 4 Erhalt von JMX Benachrichtigungen 5 4 5 Zugriff auf Cache MBeans in eigenstandiger Umgebung mit Hilfe des jconsole Dienstprogramms Kapitel 6 Versionskompatibilitat und Interoperabilit t 5 6 1 API Kompatibilitat 6 2 Interoperabilit t auf Protokollebene 6 3 Kompatibilitats matrix Teil Il JBoss Cache Architektur 6 0 0 0 0 ccc eee nen eee n ena Kapitel 7 Architektur 2 3 24 4304 00 200 AONE ar deh ges Cee ee eee Be ESE 7 1 Datenstrukturen innerhalb des Caches 7 2 SPl Schnittstellen 7 3 Methodenaufrufe auf Knoten 7 3 1 Interzeptoren 7 3 1 1 Schreiben angepasster Interzeptoren 7 3 2 Commands Befehle und Visitors Besucher 7 3 3 InvocationContexts 7 4 Manager fur Untersysteme 7 4 1 RpcManager 7 4 2 BuddyManager 7 4 3 CacheLoaderManager 7 5 Marshalling und Wire Formate 7 5 1 Die Marshaller Schnittstelle 7 5 2 VersionAwareMarshaller 7 6 Klassenladen und Bereiche Kapitel 8 Cache Modi und Clustering 0 0 cece e eee 8 1 Cache Replikationsmodi 8 1 1 Lokaler Modus 8 1 2 Replizierte Caches 8 1 2 1 Replizierte Caches und Transaktionen 8 1 2 1 1 Ein Phasen Fe
19. Sinne dass bei Verwendung zweier verschiedener Versionen von JBoss Cache in demselben Cluster der Austausch von Replikations und Zustandt bertragungsnachrichten m glich sein soll Beachten Sie jedoch dass Interoperabilit t die Verwendung derselben JGroups Version in allen Knoten des Clusters erfordert In den meisten F llen kann die Version von JGroups die von einer Version von JBoss Cache verwendet wird aktualisiert werden Demnach ist JBoss Cache 2 x x nicht API oder bin rkompatibel mit fr heren 1 x x Versionen Andererseits ist JBoss Cache 2 1 x API und bin rkompatibel mit 2 0 x Wir haben uns jedoch gr te M he gegeben JBoss Cache 3 x sowohl bin r als auch API kompatibel mit 2 x zu halten Nichtsdestotrotz wird empfohlen dass der Client Code aktualisiert wird um keine veralteten Methoden Klassen und Konfigurationsdateien zu verwenden 6 2 Interoperabilit t auf Protokollebene Es steht ein Konfigurationsparameter Configuration setReplicationVersion zur Verf gung um das Protokoll zur bertragung von Inter Cache Kommunikation zu steuern Die Kommunikation kann entweder effizient mit neueren Protokollen erfolgen oder aber kann heruntergestuft werden auf kompatible Versionen zur Kommunikation mit lteren Releases Dieser Mechanismus erm glicht eine Verbesserung des JBoss Cache durch Einsatz effizienterer Formate wobei gleichzeitig ein Weg zur Wahrung der Interoperabilit t bestehen bleibt 6 3 Kompatibilit tsmatri
20. Sobald der EvictionAlgorithm entschieden hat welche Knoten ger umt werden sollen verwendet er eine Implementierung von EvictionActionPolicy um festzustellen auf welche Weise die Knoten zu r umen sind Dies ist pro Bereich konfigurierbar und ist standardm ig DefaultEvictionActionPolicy wodurch f r jeden zu r umenden Knoten Cache evict aufgerufen wird 67 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch JBoss Cache enthalt auch eine RemoveOnEvictActionPolicy wodurch fur jeden zu raumenden Knoten Cache removeNode aufgerufen wird statt Cache evict Angepasste EvictionActionPolicy Implementierungen k nnen ebenfalls eingesetzt werden 10 1 4 Eviction Threads Standardm ig wird ein einziger Cache bergreifender Eviction Thread verwendet um regelm ig registrierte Bereiche durchzugehen und Region processEvictionQueues auf jedem Bereich aufzurufen Die H ufigkeit mit der dieser Thread ausgef hrt wird kann mit Hilfe des wakeUpInterval Attributs im eviction Konfigurationselement konfiguriert werden sie betr gt standardm ig 5000 Millisekunden falls nicht abweichend spezifiziert Der Eviction Thread kann deaktiviert werden indem Sie wakeUpInterval auf 0 setzen Dies kann n tzlich sein wenn Sie Ihren eigenen regelm ig laufenden Wartungs Thread haben und damit selbst die Regionen durchgehen und Region processEvictionQueues aufrufen m chten 10 2 Eviction Bereiche genutzt um das
21. Standard Beschreibung className Eine g ltige NextMemberBudd Eine Klasse die im yLocator BuddyLocator Klassenpfad Implementierung verf gbar ist die zur Auswahl von Buddys aus dem Cluster verwendet werden soll Siehe BuddyLocator Javadocs f r Details Tabelle 12 54 Das lt jgroupsConfig gt Element Das lt jgroupsConfig gt Element Beschreibung Dieser Tag bietet eine Konfiguration die mit JGroups verwendet wird um einen Netzwerkkommunikations Channel zu erzeugen Ubergeordnetes Element Untergeordnete Elemente untergeordneten Elemente gibt wenn stattdessen Elementattribute verwendet werden Siehe Abschnitt ber Attribute Bean quivalent Konfiguration 116 Kapitel 12 Konfigurationsreferenzen Tabelle 12 55 lt jgroupsConfig gt Attribute lt jgroupsConfi g gt Attribute Attribut Bean Feld PATEK Standard configFile multiplexerStac k clusterConfig muxStackName Eine JGroups Konfigurationsdat ei im Klassenpfad Ein g ltiger multiplexer Stapelname der in der Channel Factory existiert bergeben an die RuntimeConfig Beschreibung Wird dieses Attribut verwendet werden alle JGroups Elemente die Protokolle repr sentieren innerhalb dieses Tags ignoriert Stattdessen werden JGroups Einstellungen von der angegebenen Datei gelesen Beachten Sie dass dies nicht zusammen mit dem multiplexerSt ack Attribut verwendet werden kann Dies kann nur m
22. aufrufenden Thread wann immer jemand mit dem Cache interagiert Ist Eviction aktiviert wird ein EvictionInterceptor zur Interzeptorkette hinzugef gt und Ereignisse werden in einer Ereignis Queue aufgezeichnet Ereignisse sind durch die EvictionEvent Klasse gekennzeichnet Ereignis Queues werden f r spezifische Bereiche gef hrt so dass jeder Bereich ber seine eigene Ereignis Queue verf gt Dieser Aspekt der Eviction ist Uber das Hinzuf gen oder Weglassen des EvictionInterceptor in der Interzeptorkette hinaus abh ngig davon ob Eviction aktiviert ist nicht konfigurierbar 10 1 2 Bestimmen der zu r umenden Knoten Eine EvictionAlgorithm Implementierung verarbeitet die Eviction Queue um zu entscheiden welche Knoten ger umt werden sollen JBoss Cache enth lt eine Reihe dieser Implementierungen u a FIFOAlgorithm LRUAlgorithm LFUAlgorithm etc Jede Implementierung hat eine entsprechende EvictionAlgorithmConfig Implementierung mit Konfigurationsdetails f r den Algorithmus Angepasste EvictionAlgorithm Implementierungen k nnen durch Implementierung der Schnittstelle oder Erweitern einer der gelieferten Implementierungen bereitgestellt werden Algorithmen werden ausgef hrt durch Aufruf ihrer process Methode und bergabe der Ereignis Queue zur Verarbeitung In der Regel erfolgt dies durch Aufruf von Region processEvictionQueues was den diesem Bereich zugewiesenen Algorithmus abruft 10 1 3 Art und Weise der Knotenr umung
23. dieser Dokumentation in weitere Sprachen haben w rden wir uns freuen von Ihnen zu h ren Stellen Sie dazu bitte eine Nachricht im JBoss Cache Benutzerforum ein oder kontaktieren Sie uns ber die JBoss Cache Dieses Buch bezieht sich speziell auf die JBoss Cache Release derselben Versionsnummer Es gilt m glicherweise nicht f r ltere oder neuere JBoss Cache Releases Es ist daher wichtig dass Sie die Dokumentation entsprechend derjenigen Version des JBoss Cache verwenden die Sie sp ter einsetzen werden Ich bin immer offen f r Feedback Vorschl ge und Verbesserungen richten Sie diese bitte an die Dienste leistet und w nschen viel Spa beim Lesen Manik Surtani Oktober 2008 Teil Einf hrung in den JBoss Cache Teil I Einf hrung in den JBoss Cache Dieser Abschnitt behandelt alles was ein Entwickler f r einen schnellen Einsatz von JBoss Cache in seinen Projekten ben tigt Er enth lt eine bersicht ber die zugrunde liegenden Konzepte sowie Informationen ber APIs Konfiguration und Deployment JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Kapitel 1 Uberblick 1 1 Was ist JBoss Cache JBoss Cache ist ein geclusterter transaktionaler Cache in Baumstruktur Er kann in einer eigenstandigen nicht geclusterten Umgebung eingesetzt werden um haufig verwendete Daten im Hauptspeicher zwischenzuspeichern und somit Engp sse beim Datenabruf oder bei der Verarbeitung Eviction und Persist
24. f r den Cache Dieser Tag hat keine Attribute Keines Instanziieren Sie zur Laufzeit Ihren eigenen Interzeptor und bergeben diesen mittels Cache addInterceptor an den Cache Dieses Element erm glicht Ihnen das Konfigurieren eines angepassten Interzeptors Dieser Tag darf mehrmals erscheinen Keines Instanziieren Sie zur Laufzeit Ihren eigenen Interzeptor und bergeben diesen mittels Cache addInterceptor an den Cache 105 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Tabelle 12 39 lt interceptor gt Attribute lt interceptor gt Attribute Attribut Bean Feld TAER Standard Beschreibung class Eine g ltige keiner Eine Klasse die im Implementierung Klassenpfad von verf gbar ist CommandInterc eptor position first last Die Position an der dieser Interzeptor in der Kette platziert wird first ist der erste Interzeptor der gefunden wird wenn ein Aufruf auf dem Cache erfolgt last ist der letzte Interzeptor bevor der Aufruf an die Datenstruktur bergeben wird Beachten Sie dass dieses Attribut und before after und index sich gegenseitig ausschlie en before Vollqualifizierter Platziert den Klassenname neuen Interzeptor eines Interzeptors direkt vor der Instanz des benannten Interzeptors Beachten Sie dass dieses Attribut und position after und index sich gegenseitig ausschlie en after Vollqualifizierter Platziert den Klassenname ne
25. factory createCache opt configurations cache configuration xml false Configuration config cache getConfiguration config setClusterName this getClusterName Have to create and start cache before using it cache create cache start 2 3 Cachen und Abrufen von Daten Lassen Sie uns als Nachstes die Cache API verwenden um auf einen Node im Cache zuzugreifen und ein paar einfache Lese und Schreibvorg nge auf diesem Knoten auszuf hren 12 Kapitel 2 Benutzer API Let s get a hold of the root node Node rootNode cache getRoot Remember JBoss Cache stores data in a tree structure All nodes in the tree structure are identified by Fqn objects Fan peterGriffinFqn Fqn fromString griffin peter Create a new Node Node peterGriffin rootNode addChild peterGriffinFqn let s store some data in the node peterGriffin put isCartoonCharacter Boolean TRUE peterGriffin put favoriteDrink new Beer some tests just assume this code is in a JUnit test case assertTrue peterGriffin get isCartoonCharacter assertEquals peterGriffinFqn peterGriffin getFqn assertTrue rootNode hasChild peterGriffinFqn Set keys new HashSet keys add isCartoonCharacter keys add favoriteDrink assertEquals keys peterGriffin getKeys let s remove some data from the node peterGriffin remove favoriteDrink assertNull peterGriffin get favoriteDrink let s remove th
26. getroffenen Aussagen gelten auch f r Batches die ein hliches Verhalten aufweisen 1 2 4 Thread Sicherheit Der Cache ist vollst ndig Thread sicher Er setzt Multi Versioned Concurrency Control MVCC ein um die Thread Sicherheit zwischen Lese und Schreibvorg ngen zu gew hrleisten und gleichzeitig ein hohes Ma an Nebenl ufigkeit zu bieten Die in JBoss Cache verwendete spezifische MVCC Implementierung erm glicht lesende Threads g nzlich ohne Sperren und synchronisierte Blockierungen wodurch Spitzenleistungen f r leseintensive Applikationen erreicht werden Sie nutzt au erdem angepasste extrem leistungsf hige Sperrimplementierungen die moderne compare and swap Techniken f r Schreib Threads anwenden die f r Multi Core Architekturen optimiert wurden Multi Versioned Concurrency Control MVCC ist seit JBoss Cache 3 x das standardm ige Sperrschema Die optimistischen und pessimistischen Sperrschemata lterer Versionen von JBoss Cache sind zwar noch verf gbar wurden jedoch zu Gunsten von MVCC stillgelegt und werden aus zuk nftigen Releases entfernt werden Von der Verwendung dieser veralteten Sperrschemata wird dringend abgeraten Die JBoss Cache MVCC Implementierung unterst tzt ausschlie lich die READ_COMMITTED und JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch 1 3 Anforderungen JBoss Cache erfordert eine mit Java 5 0 oder neuer kompatible virtuelle Maschine und die entsprechende Reih
27. glich die Zustands bertragung zu aktivieren wenn nach dem Start ein Warm oder Hei start des Caches gew nscht wird Das FetchInMemoryState Attribut kann auf false eingestellt werden was zu einem Kaltstart des Caches f hrt der durch Zugriffe und erstmaliges Laden von Elementen zunehmend warm wird Dies w rde bedeuten dass einzelne Caches innerhalb eines Clusters ber einen unterschiedlichen 62 Kapitel 9 Cache Loader speicherinternen Zustand verf gen k nnten im Wesentlichen in Abh ngigkeit von den verwendeten Preloading und Eviction Strategien Beim Speichern eines Werts k mmert sich der Schreiber darum dass die nderung im Backend Speicher festgehalten wird Nimmt zum Beispiel node1 nderung C1 und node2 C2 vor so teilt node1 seinem Cache Loader mit dass C1 gespeichert werden soll w hrend node2 seinen Cache Loader mit der Speicherung von C2 beauftragt 9 5 3 Replizierte Caches darunter nur ein Knoten mit Speicher REPLICATION Abbildung 9 3 Zwei Knoten von denen jedoch nur einer auf den Backend Speicher zugreift Dies hnelt dem vorherigen Fall hier allerdings interagiert nur ein Knoten im Cluster ber seinen Cache Loader mit einem Backend Speicher Alle anderen Knoten f hren speicherinterne Replikation durch Die Idee hierbei ist dass der gesamte Applikationszustand im Arbeitsspeicher eines jeden Knotens bewahrt wird so dass durch das Vorhandensein mehrerer Caches diese Daten hochverf g
28. in den Cache Loader durch unterschiedliche Cache Instanzen Der Standardwert lautet false 9 2 1 Singleton Store Konfiguration lt loaders passivation false shared true gt lt preload gt lt node fan a b c gt lt node fqn f r s gt lt preload gt lt we can now have multiple cache loaders which get chained gt lt loader class org jboss cache loader JDBCCacheLoader async false fetchPersistentState false ignoreModifications false purgeOnStartup false gt lt properties gt cache jdbc datasource java DefaultDS lt properties gt lt singletonStore enabled true class org jboss cache loader SingletonStoreCacheLoader gt lt properties gt pushStatewhenCoordinator true pushStatewhenCoordinatorTimeout 20000 lt properties gt lt singletonStore gt lt loader gt lt loaders gt Das singletonStore Element erlaubt das Speichern von Anderungen auf nur einem Knoten im Cluster dem Koordinator Im Wesentlichen werden Daten die auf einem Knoten eingehen immer repliziert damit die speicherinternen Zustande des Caches konsistent gehalten werden der Koordinator hingegen tragt allein die Verantwortung diese Zustande auf Festplatte zu schreiben Diese Funktionalit t kann aktiviert werden durch Setzen des enabled Unterelements auf true in allen Knoten doch wiegesagt nur der Koordinator des Clusters speichert nderungen im zugrunde liegenden Cache Loader wie im loader Element definiert Sie k n
29. k nnen dieses Verhalten unterdr cken indem Sie beim Start Djbosscache config validate false an ihre JVM bergeben Alternativ k nnen Sie den Validator auf ein anderes Schema verweisen indem Sie Djbosscache config schemaLocation url bergeben 12 2 Kurzanleitung zur Konfigurationsdatei Sehen Sie nachfolgend eine Liste mit Definitionen aller oben erw hnten XML Elementattribute sowie deren Bean quivalente zur befehlsorientierten Konfiguration Besagt die Beschreibung eines Attributs dass dieses dynamisch ist bedeutet das dass dieses Attribut nach dem Erzeugen und Starten des Caches noch ge ndert werden kann Tabelle 12 1 Das lt jbosscache gt Element Das lt jbosscache gt Element Beschreibung Dies ist das Wurzelelement f r die JBoss Cache Konfigurationsdatei Dies ist das einzige obligatorische Element in einer g ltigen JBoss Cache Konfigurationsdatei bergeordnetes Element keines dies ist das Wurzelelement Untergeordnete Elemente Element Tabelle 12 13 Das lt listeners gt Element Tabelle 12 27 Das lt loaders Bean quivalent Configuration 83 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Tabelle 12 2 lt jbosscache gt Attribute lt jbosscache gt Attribute Attribut Bean Feld FAN ELITE Standard Beschreibung urnjbossjbosscac urn jboss jbossca Definiert den XML he core config 3 1 che Namensraum f r core config 3 1 alle Konfigurationsei
30. name exposeManagementStatistics gt true lt property gt lt bean gt lt Factory to build the Cache gt lt bean name DefaultCacheFactory class org jboss cache DefaultCacheFactory gt lt constructor factoryClass org jboss cache DefaultCacheFactory factoryMethod getInstance gt lt bean gt lt The cache itself gt lt bean name ExampleCache class org jboss cache Cache gt lt constructor factoryMethod createCache gt lt factory bean DefaultCacheFactory gt lt parameter class org jboss cache config Configuration gt lt inject bean ExampleCacheConfig gt lt parameter gt lt parameter class boolean gt false lt parameter gt lt constructor gt lt bean gt lt deployment gt Syntax Im Wesentlichen steht jedes bean Element f r ein Objekt und wird zur Erzeugung einer 26 Kapitel 5 Implementierung von JBoss Cache durchgef hrt werden Interessant am obigen Beispiel ist die Verwendung des RuntimeConfig Objekts Externe Ressourcen wie ein TransactionManager und eine JGroups ChannelFactory die f r den Microcontainer sichtbar sind werden in die RuntimeConfig als Abh ngigkeiten injiziert Dabei wird davon ausgegangen dass die referenzierten Beans bereits in einem anderen Deployment Deskriptor im AS beschrieben wurden 5 3 Automatisches Binden an JNDI in JBoss AS Diese Funktion steht zum Zeitpunkt der Ver ffentlichung dieses Handbuchs noch nicht zur Verf gung Sobald dies
31. the first cache loader is used the rest are ignored gt lt loader class org jboss cache loader JDBCCacheLoader async false fetchPersistentState true ignoreModifications false purgeOnStartup false gt lt properties gt cache jdbc table name jbosscache cache jdbc table create true cache jdbc table drop true cache jdbc table primarykey jbosscache_pk cache jdbc fqn column fqn cache jdbc fqn type VARCHAR 255 cache jdbc node column node cache jdbc node type BLOB cache jdbc parent column parent cache jdbc driver oracle jdbc OracleDriver cache jdbc url jdbc oracle thin localhost 1521 JBOSSDB cache jdbc user SCOTT cache jdbc password TIGER cache jdbc connection factory org jboss cache loader C3p ConnectionFactory c3p0 maxPoolSize 20 c3p0 checkoutTimeout 5000 lt properties gt lt loader gt lt loaders gt 9 3 4 S3CacheLoader Da es sich bei Amazon S3 um entfernten Netzwerkspeicher handelt und als solches eine ziemlich hohe Latenz hat ist er am besten geeignet f r Caches die gro e Daten wie z B Media oder Dateien speichern Dennoch sollten Sie diesen Cache Loader statt des JDBC oder der dateibasierten Cache Loader in Betracht ziehen wenn Sie entfernt verwalteten hochverf gbaren Speicher ben tigen Oder verwenden Sie ihn f r Applikationen die in Amazon s EC2 Elastic Compute Cloud laufen Wenn Sie Amazon S3 als Speicher verwenden m chten sollten Sie erw gen ihn zusammen mit JBoss Cache einzus
32. wenn es sich um einen geclusterten Cache handelt und er daher einen JGroups Channel benutzt hat Durch das Stoppen und Zerst ren des Caches wird gew hrleistet dass Ressourcen wie Netzwerk Sockets und Wartungs Threads vollst ndig bereinigt werden cache stop cache destroy Beachten Sie dass ein Cache auf dem stop aufgerufen wurde mit einem Aufruf an start erneut gestartet werden kann Ebenso kann ein Cache auf dem destroy aufgerufen wurde mit einem Aufruf ancreate erneut erzeugt werden und anschlie end mit einem start Aufruf wieder gestartet werden 14 Kapitel 2 Benutzer API 2 6 Cache Modi Obwohl streng genommen nicht Teil der API beeinflusst der Modus in dem der Cache ausgef hrt wird doch das clusterweite Verhalten jeglicher put oder remove Operationen weshalb wir an dieser Stelle kurz auf die verschiedenen Modi eingehen wollen JBoss Cache Modi werden mit derorg jboss cache config Configuration CacheMode Enumeration bezeichnet Sie umfassen LOCAL lokaler nicht geclusterter Cache Lokale Caches treten keinem Cluster bei und kommunizieren nicht mit anderen Caches in einem Cluster REPL_SYNC synchrone Replikation Replizierte Caches replizieren alle nderungen an alle anderen Caches im Cluster Synchrone Replikation bedeutet dass nderungen repliziert werden und der Aufrufer sperrt bis er Best tigungen der erfolgten Replikation empf ngt REPL_ASYNC asynchrone Replikation Repliziert
33. zwischengespeichert im Hauptspeicher f r effizienten Thread sicheren Abruf repliziert ber einige oder alle Instanzen in einem Cluster persistiert auf Festplatte und oder auf einem entfernen In Memory Cache Cluster Far Cache vom Speicher bereinigt sobald nur noch wenig Speicher verf gbar ist und auf Festplatte passiviert ohne dass der Zustand verloren geht Zus tzlich bietet JBoss Cache eine breite Palette von Funktionen der Unternehmensklasse konformen Transaktionsmanagern Verkn pfung mit JMX Konsolen f r Laufzeitstatistiken ber den Zustand des Caches Kapitel 1 Uberblick Client Code kann mit Listenern verkn pfen und Benachrichtigungen Uber Cache Ereignisse erhalten Cache Operationen k nnen in Gruppen zusammengefasst werden f r effiziente Replikation 1 2 2 Lokale und geclusterte Modi Der Cache ist in einer Baumstruktur mit einer einzigen Wurzel organisiert Jeder Knoten im Baum enth lt im Wesentlichen eine Map die als Speicher f r Schl ssel Wert Paare dient Zu cachende Objekte m ssen als einzige Voraussetzung diese java io Serializable implementieren Ein JBoss Cache kann entweder lokal oder repliziert sein Lokale Caches existieren nur innerhalb der Grenzen der JVM in der sie erstellt wurden w hrend replizierte Caches nderungen an einige oder alle anderen Caches im selben Cluster weitergeben Ein Cluster kann sich ber verschiedene Hosts auf einem Netzwerk erstrecken oder auch nur ber verschiedene JV
34. 0 Siehe Beispiel unten Sie k nnen c3p0 Parameter auch in demselben Cache Loader Eigenschaftsabschnitt einstellen vergessen Sie dabei aber nicht den Eigenschaftsnamen mit c3p0 zu beginnen Eine detaillierte Liste aller verf gbaren Eigenschaften finden Sie in der c3p0 Dokumentation f r die c3p0 Bibliotheksversion 55 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Ausprobieren verschiedener Pooling Parameter kann jede dieser Eigenschaften auch mittels der Systemeigenschaft eingestellt werden welche jegliche Werte au er Kraft setzt die diese Eigenschaft unter Umst nden in der JBoss Cache XML Konfigurationsdatei hat z B Dc3p0 maxPoo1Size 20 Ist eine c3p0 Eigenschaft weder in der Konfigurationsdatei noch als Systemeigenschaft konfiguriert greifen die Standardwerte wie in der c3p0 Dokumentation ausgewiesen 9 3 3 1 5 Konfigurationsbeispiel Nachfolgend sehen Sie ein Beispiel eines JDBCCacheloader unter Verwendung von Oracle als Datenbank Das CacheLoaderConfiguration XML Element enth lt einen beliebigen Satz von Eigenschaften welche die Konfiguration im Hinblick auf die Datenbank definieren lt loaders passivation false shared false gt lt preload gt lt node fqn some stuff gt lt preload gt lt if passivation is true only the first cache loader is used the rest are ignored gt lt loader class org jboss cache loader JDBCCacheLoader async false fetchPersistentState true
35. Benachrichtigung wenn der Cache eine javax transaction Synchronization mit einem registrierten Transaktionsmanager registriert Methoden m ssen einen Parametertyp akzeptieren der von TransactionRegisteredEvent zuweisbar ist TransactionCompleted derart annotierte Methoden erhalten eine Benachrichtigung wenn der Cache einen Aufruf zur Festschreibung oder zum Zur cksetzen von einem registrierten Transaktionsmanager erh lt Methoden m ssen einen Parametertyp akzeptieren der von TransactionCompletedEvent zuweisbar ist ViewChanged derart annotierte Methoden erhalten eine Benachrichtigung wenn sich die Gruppenstruktur des Clusters ndert Methoden m ssen einen Parametertyp akzeptieren der von ViewChangedEvent zuweisbar ist CacheBlocked derart annotierte Methoden erhalten eine Benachrichtigung wenn der Cluster anfordert Cache Operationen f r ein Zustands bertragungsereignis zu sperren Methoden m ssen einen Parametertyp akzeptieren der von CacheBlockedEvent zuweisbar ist Kapitel 2 Benutzer API CacheUnblocked derart annotierte Methoden erhalten eine Benachrichtigung wenn der Cluster anfordert Cache Operationen nach einem Zustands bertragungsereignis wieder freizugeben Methoden m ssen einen Parametertyp akzeptieren der von CacheUnblockedEvent zuweisbar ist BuddyGroupChanged derart annotierte Methoden erhalten eine Benachrichtigung wenn ein Knoten seine Buddy Gruppe wechselt z B wenn ein Buddy aus dem Clust
36. Configuration liveConfig setLockAcquisitionTimeout 2000 22 Kapitel 3 Konfiguration Eine vollst ndige Aufstellung all jener Optionen die dynamisch ge ndert werden k nnen finden Sie im ndern die nicht dynamisch ist wird eine org jboss cache config ConfigurationException ausgegeben 3 4 1 berschreiben der Konfiguration mittels der Option API Die Option API erm glicht es Ihnen bestimmte Verhaltensweisen des Caches f r einen Aufruf au er Kraft zu setzen Dazu m ssen Sie eine Instanz von org jboss cache config Option erzeugen dann m ssen Sie die au er Kraft zu setzenden Optionen im Option Objekt einstellen und dieses anschlie end an den InvocationContext bergeben bevor Sie Ihre Methode auf dem Cache aufrufen Um beispielsweise beim Lesen von Daten eine Schreibsperre zu erzwingen beim Einsatz in einer Transaktion bietet dies Semantiken vergleichbar mit SELECT FOR UPDATE in einer Datenbank first start a transaction cache getInvocationContext getOptionOverrides setForceWritelock true Node n cache getNode Fqn fromString a b c make changes to the node commit transaction Um beispielsweise die Replikation eines put Aufrufs in einem REPL_SYNC Cache zu unterdr cken Node node cache getChild Fqn fromString a b c cache getInvocationContext getOptionOverrides setLocalOnly true node put localCounter new Integer 2 In den Javadocs der Option Klasse finden Sie Einzelheiten
37. Das lt serialization gt Element Das lt serialization gt Element Beschreibung Ob Aufruf Batching aktiviert ist oder nicht Einzelheiten Beschreibung Dieses Element spezifiziert das Verhalten der Objektserialisierung in JBoss Cache bergeordnetes Element Untergeordnete Elemente Bean quivalent Configuration JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Tabelle 12 18 lt serialization gt Attribute lt serializatio n gt Attribute Attribut Bean Feld FAN ECHTE Standard Beschreibung marshallerClass marshallerClass Eine giltige VersionAwareMar Spezifiziert den Klasse die im shaller Zu verwendenden Klassenpfad Marshaller beim verf gbar ist Serialisieren und Deserialisieren von Objekten ob zur Replikation oder Persistierung useLazyDeseria useLazyDeserializ true false false Ein Verfahren bei lization ation dem Serialisierung und Deserialisierung von Objekten verz gert wird bis diese tats chlich verwendet und ben tigt werden Das bedeutet in der Regel dass jede Deserialisierung unter Verwendung des Thread Kontext Klassenladers desjenigen Aufrufs erfolgt der die Deserialisierung erfordert was ein effektives Verfahren zur Klassenlader Isolation ist useRegionBase useRegionBased true false false Ein lteres dMarshalling Marshalling Verfahren durch veraltet das Klassenlader Isolation erreicht wurde indem Klassenlader f r be
38. Ein Phasen Festschreibung Wird im Cache Modus REPL_ASYNC verwendet Alle nderungen werden in einem einzelnen Aufruf repliziert der entfernte Caches anweist die nderungen an ihrem lokalen speicherinternen Zustand 42 Kapitel 8 Cache Modi und Clustering anzuwenden und lokal festzuschreiben Entfernte Fehler oder Zur cksetzungen werden nicht wieder an den Urheber der Transaktion zur ckgef hrt da die Kommunikation asynchron ist 8 1 2 1 2 Zwei Phasen Festschreibung Wird im Cache Modus REPL_SYNC verwendet Nach Festschreibung Ihrer Transaktion sendet JBoss Cache einen Aufruf zur Vorbereitung Prepare der alle f r die Transaktion relevanten nderungen enth lt Entfernte Caches erhalten dann lokale Sperren auf ihrem speicherinternen Zustand und wenden die nderungen an Haben alle entfernten Caches auf den Aufruf zur Vorbereitung geantwortet so sendet der Urheber der Transaktion eine Festschreibung Commit Dies weist alle entfernten Caches an ihre Daten festzuschreiben Antwortet auch nur einer der Caches nicht auf den Aufruf zur Vorbereitung so sendet der Urheber einen Aufruf zum Zur cksetzen Rollback der Transaktion Beachten Sie dass obwohl die prepare Phase synchron ist die commit und rollback Phasen Ressourcen an dieser Stelle der Transaktion mit Fehlschl gen umgehen sollten und andere an der Transaktion teilhabende Ressourcen ohnehin einen unbestimmten Zustand besitzen k nnten F r diese Phase der Tr
39. Element Beschreibung Dieses Element definiert einen Eviction Bereich Mehrere Instanzen dieses Tags k nnen existieren vorausgesetzt sie besitzen eindeutige name Attribute bergeordnetes Element Tabelle 12 19 Das lt eviction gt Element Untergeordnete Elemente Bean quivalent EvictionRegionConfig 98 Tabelle 12 24 lt region gt Attribute lt region gt Attribute Attribut name algorithmClass actionPolicyCla ss eventQueueSiz e Bean Feld regionFqn evictionAlgorithmC onfig evictionActionPolic yClassName eventQueueSize dynamisch Kapitel 12 Konfigurationsreferenzen Standard keiner PAT EEI Ein String der mittels Fan fromString analysiert werden k nnte Eine g ltige keiner Klasse die im Klassenpfad verf gbar ist Eine g ltige DefaultEvictionActi Klasse die im onPolicy Klassenpfad verf gbar ist Ganzzahl 200000 Beschreibung Dies sollte ein eindeutiger Name sein der diesen Bereich definiert Siehe Einzelheiten ber Eviction Bereiche Dieses Attribut muss spezifiziert werden falls dieser Tag verwendet wird Beachten Sie dass Sie bei der befehlsorientierte n Konfiguration die dem Eviction Algorithmus entsprechende EvictionAlgor ithmConfig Datei benutzen sollten Wenn Sie beispielsweise LRUAlgorithm in XML verwenden w rden Sie befehlsorientiert eine Instanz von LRUAlgorithmc onfig nutzen Die Richtlinienklasse
40. EntireState seinen Cache Loader nach dem gesamten Zustand Dieser Zustand wird dann an den neuen Knoten geschickt 4 Der neue Knoten teilt seinem Cache Loader dann mit dass der Zustand in seinem Speicher gespeichert werden soll wobei der alte Zustand berschrieben wird Dies ist die CacheLoader storeEntireState Methode 5 Optional kann auch der transiente speicherinterne Zustand w hrend der Zustands bertragung bertragen werden 6 Der neue Knoten besitzt jetzt denselben Zustand in seinem Backend Speicher wie alle anderen im Cluster und von anderen Knoten erhaltene nderungen werden jetzt unter Verwendung des lokalen Cache Loaders persistiert 9 5 5 Hierarchische Caches Falls Sie innerhalb einer einzelnen VM eine Hierarchie aufstellen m ssen so k nnen Sie den LocalDelegatingCacheLoader verwenden Dieser Hierarchietyp kann derzeit nur befehlsorientiert eingestellt werden Hierarchische Caches k nnen sich mit Hilfe des TcpDelegatingCacheLoader auch ber mehr als 64 Kapitel 9 Cache Loader eine JVM oder einen Server erstrecken REPLICATION TCP TCP Abbildung 9 5 TCP delegierender Cache Loader 9 5 6 Mehrere Cache Loader Sie k nnen mehr als einen Cache Loader in einer Kette hintereinanderschalten Intern wird ein delegierender ChainingCacheLoader verwendet mit Referenzen auf jeden konfigurierten Cache Loader Es gibt hierf r verschiedene Anwendungsf lle abh ngig von der Art der in der Ket
41. Interceptor gt lt lt customInterceptors gt lt interceptor position first class org jboss cache config parsing custominterceptors AaaCustomInterceptor gt lt property name attrOne value valuei gt lt property name attrTwo value value2 gt lt interceptor gt lt interceptor position last class org jboss cache config parsing custominterceptors BbbCustomInterceptor gt lt interceptor index 3 class org jboss cache config parsing custominterceptors AaaCustomInterceptor gt lt interceptor before org jboss cache interceptors CalliInterceptor class org jboss cache config parsing custominterceptors BbbCustomInterceptor gt lt interceptor after org jboss cache interceptors CalllInterceptor class org jboss cache config parsing custominterceptors AaaCustomInterceptor gt lt customInterceptors gt gt lt jbosscache gt 12 1 1 XML Validierung Konfigurations XML Dateien werden mittels eines XSD Schemas validiert Dieses Schema ist im jbosscache core jar enthalten und ist zudem online erh ltlich http ww jboss org jbosscache jbosscache config 3 0 xsd Die meisten IDEs und XML Authoring Werkzeuge k nnen mit diesem Schema umgehen und so Ihre Konfigurationsdatei schon 82 Kapitel 12 Konfigurationsreferenzen beim Schreiben validieren JBoss Cache berpr ft beim Start ebenfalls Ihre Konfigurationsdatei und meldet ggf eine Ausnahme falls es eine ung ltige Datei feststellt Sie
42. Listeners 31 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch private class MyListener implements NotificationListener Serializable public void handleNotification Notification notification Object handback String message notification getMessage String type notification getType Object userData notification getUserData System out println type message if userData null System out println notification data is null else if userData instanceof String System out println notification data String userData else if userData instanceof Object Object ud Object userData for Object data ud System out println notification data data toString else System out println notification data class userData getClass getName D Beachten Sie dass die JBoss Cache Management Implementierung nur auf Cache Ereignisse lauscht nachdem ein Client f r den Erhalt von MBean Benachrichtigungen registriert ist Sobald keine Clients f r Benachrichtigungen registriert sind entfernt das MBean sich selbst als Cache Listener 5 4 5 Zugriff auf Cache MBeans in eigenst ndiger Umgebung mit Hilfe des jconsole Dienstprogramms Auf JBoss Cache MBeans kann einfach zugegriffen werden wenn Cache Instanzen in einem Applikationsserver laufen der eine MBean Serverschnittstelle wie z B die JBoss JMX Konsole bereitstellt In der Server D
43. Mar shalling false gt lt This element specifies that the cache is clustered modes supported replication r or invalidation i gt lt clustering mode replication clusterName JBossCache cluster gt alan Defines whether to retrieve state on startup gt lt stateRetrieval timeout 20000 fetchInMemoryState false gt lt Network calls are synchronous gt lt sync replTimeout 20000 gt lt Uncomment this for async replication gt lt lt async useReplQueue true replQueueInterval 10000 replQueueMaxElements 500 serializationExecutorPoolSize 20 serializationExecutorQueueSize 5000000 gt gt lt Uncomment to use Buddy Replication gt lt lt buddy enabled true poolName myBuddyPoolReplicationGroup communicationTimeout 2000 gt lt dataGravitation auto true removeOnFind true sear chBackupTrees true gt lt locator class org jboss cache buddyreplication NextMemberBuddyLocator gt lt properties gt numBuddies 1 ignoreColocatedBuddies true lt properties gt lt locator gt lt buddy gt gt lt Configures the JGroups channel Looks up a JGroups config file on the classpath or filesystem udp xml ships with jgroups jar and will be picked up by the class loader gt lt jgroupsConfig configFile udp xm1 gt lt uncomment to define a JGroups stack here lt PING timeout 2000 num_initial_members 3 gt lt MERGE2 max_i
44. Ms auf einem einzelnen Host 1 2 3 Geclusterte Caches und Transaktionen Wird an einem Objekt im Cache eine nderung vorgenommen und erfolgt diese im Kontext einer Transaktion dann wird mit der Replikation dieser nderungen bis zur erfolgreichen Festschreibung der Transaktion gewartet Alle nderungen werden in einer mit der Transaktion des Aufrufers verkn pften Liste verwahrt Bei Festschreibung der Transaktion werden die nderungen repliziert Andernfalls beim Zur cksetzen bzw Rollback werden die nderungen einfach lokal r ckg ngig gemacht und die nderungsliste verworfen wodurch keinerlei Netzwerkverkehr oder Overhead verursacht wird F hrt ein Aufrufer beispielsweise 100 nderungen durch und setzt die Transaktion dann zur ck so wird nichts repliziert d h es wird kein Netzwerkverkehr verursacht Ist keine Transaktion und kein Batch mit dem Aufrufer assoziiert werden nderungen sofort repliziert d h im obigen Beispiel w rden f r jede nderung 100 Nachrichten gesendet werden In diesem Zusammenhang kann man sich die Ausf hrung ohne eine Transaktion analog zur Ausf hrung mit aktiviertem auto commit in JDBC Terminologie vorstellen bei der jede Operation sofort automatisch festgeschrieben wird JBoss Cache funktioniert standardm ig mit den verbreitetsten Transaktionsmanagern und bietet dar berhinaus eine Programmierschnittstelle an der angepasste Transaktionsmanager Lookups geschrieben werden k nnen Alle oben
45. Node remove Object und Node put Object Object die langsamsten da Daten in einer einzelnen Map Instanz gespeichert werden Verwenden Sie Massenoperationen wie Node replaceAll Map und Node clearData f r mehr Effizienz Probieren Sie auch die cache s3 optimize Option aus 9 3 4 1 Amazon S3 Bibliothek Der S3 Cache Loader wird mit der Standarddistribution vertrieben erfordert jedoch eine Bibliothek um zur Laufzeit auf den Dienst zuzugreifen Diese Laufzeitbibliothek steht in einem Sourceforge Maven Repository zur Verf gung F gen Sie folgende Zeilen in Ihre pom xml Datei ein lt repository gt lt id gt e xml sourceforge net lt id gt lt url gt http e xml sourceforge net maven2 repository lt url gt lt repository gt lt dependency gt lt groupId gt net noderunner lt groupId gt lt artifactId gt amazon s3 lt artifactId gt lt version gt 1 0 0 0 lt version gt lt scope gt runtime lt scope gt lt dependency gt Auch wenn Sie Maven nicht verwenden k nnen Sie dennoch die Amazon S3 Bibliothek herunterladen 9 3 4 2 Konfiguration Sie m ssen mindestens Ihren Amazon S3 Zugriffsschl ssel und geheimen Zugriffsschl ssel konfigurieren Die folgenden Konfigurationsschl ssel sind in der Reihenfolge ihres Nutzens aufgef hrt cache s3 accessKeyId Amazon S3 Zugriffsschl ssel erh ltlich in Ihrem Account Profil cache s3 secretAccessKey Amazon S3 geheimer Zugriffsschl ssel erh ltlich in Ihrem Account Prof
46. Reihe nach an die anderen Instanzen weitergegeben bis entweder eine mit dem angefragten Zustand antwortet oder alle abgefragt wurden Wird bereichsbasiertes Marshalling verwendet so ist de InactiveOnStartup Eigenschaft des 46 Kapitel 8 Cache Modi und Clustering Caches in der Regel auf true eingestellt Dies unterdr ckt die erstmalige Zustands bertragung die fehlschlagen w rde da der bertragene Zustand nicht deserialisiert werden k nnte 3 Buddy Replikation Wird Buddy Replikation verwendet so ist die erstmalige Zustands bertragung deaktiviert Stattdessen wird wenn eine Cache Instanz sich dem Cluster anschlie t diese der Buddy einer oder mehrerer Instanzen und eine oder mehrere Instanzen werden deren Buddy Jedesmal wenn eine Instanz feststellt dass sie einen neuen Buddy als Backup hat gibt sie ihren aktuellen Zustand an diesen neuen Buddy weiter Dieses Pushen des Zustands zum neuen Buddy unterscheidet sich etwas von anderen Formen der Zustands bertragung die auf einem Pull Vorgang basieren d h der Empf nger fragt den Zustand an und empf ngt diesen Der Vorgang der Vorbereitung und Integration des Zustands ist allerdings derselbe Dieser Push des Zustands bei der Buddy Gruppenbildung erfolgt nur dann wenn die InactiveOnStartup Eigenschaft auf false eingestellt ist Lautet die Einstellung true so erfolgt die Zustands bertragung unter den Buddys nur wenn die Applikation den Bereich auf den verschiedenen Gruppe
47. WriteRatio CacheLoaderStores Kapitel 13 JMX Referenzen angegebenen stringbasierten Fan gibt diese Methode den Index im Sperr Array zur ck auf das verwiesen wird Anzahl passivierter Knoten die aktiviert wurden Anzahl der durch einen Cache Loader geladenen Knoten Anzahl erfolgloser Versuche einen Knoten durch einen Cache Loader zu laden Anzahl erfolgreicher Attributabrufe Anzahl erfolgloser Attributabrufe Anzahl von Attributspeichervorg ngen Anzahl von Knoten R umungen Anzahl aktuell gecachter Attribute Anzahl aktuell gecachter Knoten Anzahl von Sekunden die der Cache bereits ausgef hrt wird Anzahl von Sekunden seit die Cache Statistiken zur ckgesetzt wurden Durchschnittliche Zeit in Millisekunden um ein Cache Attribut abzurufen einschlie lich fehlgeschlagener Attributabrufe Durchschnittliche Zeit in Millisekunden zum Schreiben eines Cache Attributs Verh ltnis von Treffern zu Treffern und Fehlschl gen Ein Treffer ist eine get Attributoperation die zur Folge hat dass ein Objekt an den Client wiedergegeben wird Der Abruf kann von einem Cache Loader erfolgen wenn der Eintrag sich nicht im lokalen Cache befindet Verh ltlis von Lese zu Schreibvorg ngen Dies ist das Verh ltnis von Cache Treffern und Fehlschl gen zu Cache Speicherungen Anzahl in den Cache Loader JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Inval
48. ache was ab einer gewissen Gr e des Backend Speichers m glicherweise keine so gute Idee ist Zum Beispiel l dt a product catalogue die Unterb ume a und product catalogue in den Cache aber nichts anderes Alles andere wird erst bei Bedarf geladen Erwartet man die h ufige Verwendung von Elementen in einem bestimmten Unterbaum so ist ein Vorabladen sinnvoll fetchPersistentState legt fest ob der persistente Zustand eines Caches abgerufen wird oder nicht wenn er Teil eines Clusters wird Nur ein einziger konfigurierter Cache Loader kann diese Eigenschaft auf true einstellen hat mehr als ein Cache Loader diese Einstellung so wird eine Konfigurationsausnahme gemeldet wenn der Cache Dienst gestartet wird async legt fest ob Schreibvorg nge in den Cache Loader bis zum Abschluss sperren oder auf einem separaten Thread erfolgen so dass Schreibvorg nge sofort zur ckkehren Ist dies auf true eingestellt so wird eine Instanz von org jboss cache loader AsyncCacheLoader mit einer Instanz des tats chlichen zu verwendenden Cache Loaders konstruiert Der AsyncCacheLoader delegiert dann alle Anfragen zum darunterliegenden Cache Loader wobei falls n tig ein separater Thread verwendet wird Weitere Informationen finden Sie in den Javadocs zu AsyncCacheloader Falls nichts festgelegt wurde lautet der Standardwert des async Elements false Anmerkung zur Verwendung des async Elements Es besteht stets die M glichkeit von Schreib Lese K
49. altene Eviction Richtlinien Dieser Abschnitt erlautert die verschiedenen in JBoss Cache enthaltenen Algorithmen sowie die verschiedenen Konfigurationsparameter f r jeden Algorithmus 10 4 1 LRUAlgorithm Least Recently Used Am l ngsten nicht verwendet org jboss cache eviction LRUAlgorithm steuert sowohl die Lebensdauer als auch das Alter der Knoten Diese Richtlinie garantiert eine konstante Reihenfolge 0 1 f r Hinzuf gungen Entfernungen und Lookups Aufrufe Sie besitzt folgende Konfigurationsparameter maxNodes Dies ist die maximale in diesem Bereich gestattete Anzahl von Knoten 0 bedeutet sofortigen Ablauf 1 bedeutet keine Beschr nkung timeToLive Zeit ohne Schreib oder Lesevorgange im Knoten in Millisekunden ehe der Knoten bereinigt wird O bedeutet sofortigen Ablauf 1 bedeutet keine Beschr nkung maxAge Lebensdauer eines Knotens in Millisekunden nach der ungeachtet der Dauer der Unt tigkeit der Knoten bereinigt wird 0 bedeutet sofortigen Ablauf 1 bedeutet keine Beschr nkung minTimeToLive die Mindestzeit die ein Knoten nach Zugriff darauf bestehen bleiben darf bevor er f r die Eviction in Betracht gezogen werden darf 0 bedeutet dass diese Funktion deaktiviert ist dies ist die Standardeinstellung 10 4 2 FIFOAlgorithm First In First Out Als Erster rein als Erster raus org jboss cache eviction FIFOAlgorithm steuert die Eviction in ordnungsgem er First In First Out Reihenfolg
50. andere interne Komponenten und Untersysteme Diese MBeans werden zum Aufzeichnen und Offenlegen der mit den jeweiligen Untersystemen im Zusammenhang stehenden Statistiken verwendet Sie werden hierarchisch mit dem Cache JmxWrapper MBean assoziiert und besitzen Dienstnamen die die Beziehung verdeutlichen Zum Beispiel kann auf ein Replikationsinterzeptor MBean f r die jboss cache service TomcatClusteringCache Instanz durch den Dienst namens jboss cache service TomcatClusteringCache cache interceptor ReplicationInterceptor zugegriffen werden 5 4 2 CacheJmxWrapper beim MBeanServer registrieren 27 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Das beste Verfahren um sicherzustellen dass der Cache JmxWrapper in JMX registriert ist h ngt von der Implementierungsart Ihres Caches ab 5 4 2 1 Befehlsorientierte Registrierung mit einer Cache Instanz Erzeugen Sie dazu einfach Ihren Cache und bergeben diesen an den JmxRegistrationManager Konstruktor CacheFactory factory new DefaultCacheFactory Build but don t start the cache although it would work OK if we started it Cache cache factory createCache cache configuration xml MBeanServer server getMBeanServer however you do it ObjectName on new ObjectName jboss cache service Cache JmxRegistrationManager jmxManager new JmxRegistrationManager server cache on jmxManager registerAllMBeans use the cache on appl
51. ansaktion k nnen wir daher auf den zus tzlichen Aufwand f r synchrone Kommunikation verzichten Die Synchronit t kann jedoch mittels der SyncCommitPhase und SyncRollbackPhase Konfigurationsattribute erzwungen werden 8 1 2 2 Buddy Replikation Buddy Replikation gestattet das Unterdr cken der Replikation Ihrer Daten an alle Instanzen in einem Cluster Stattdessen w hlt jede Instanz einen oder mehrere sog Buddys im Cluster und repliziert nur an diese spezifischen Buddys Dies verbessert die Skalierbarkeit da nicht jedesmal wenn dem Cluster eine neue Instanz hinzugef gt wird dies Auswirkungen auf den Speicher und Netzwerkverkehr hat Einer der g ngigsten Anwendungsf lle der Buddy Replikation ist die Verwendung eines replizierten Caches durch einen Servlet Container zum Speichern von HTTP Session Daten Eine der Voraussetzungen damit Buddy Replikation gut funktioniert und auch tats chlich von Nutzen ist ist die Session Affinit t auch als Sticky Sessions bekannt Das bedeutet dass es beim h ufigen Zugriff auf bestimmte Daten besser ist wenn der Zugriff immer auf einer bestimmten Instanz erfolgt statt reihum auf veschiedenen Instanzen Dies hilft dem Cluster bei der Optimierung der Buddy Auswahl bei der Auswahl des Speicherplatzes f r Daten und bei der Minimierung von Replikationsdatenverkehr Ist dies nicht m glich so kann sich Buddy Replikation eher als Nachteil denn als Vorteil erweisen 8 1 2 2 1 Auswahl von Buddys Budd
52. bar werden Dies setzt voraus dass ein Client der die Daten ben tigt im Fehlerfall von einem Cache auf einen anderen ausweichen kann Der einzige persistente Backend Speicher liefert eine Sicherungskopie der Daten falls alle Caches im Cluster ausfallen oder neu gestartet werden m ssen Beachten Sie dass es bei dieser Konstellation sinnvoll sein kann wenn der Cache Loader nderungen asynchron speichert also nicht im Anrufer Thread damit der Cluster nicht durch Zugreifen auf zum Beispiel eine Datenbank verlangsamt wird Bei asynchroner Replikation spielt dies keine Rolle Der Schwachpunkt dieser Architektur besteht darin dass mit Ausfall des einen Caches der Zugriff auf den Cache Loader hat auch das gesamte System ausf llt dieser Cache ist ein sog single point of failure Au erdem muss bei einem Neustart des Clusters der Cache mit dem Cache Loader als erstes gestartet werden dies kann leicht vergessen werden Eine L sung f r das erste Problem w re die Konfiguration eines Cache Loaders auf jedem Knoten doch einer singletonStore Einstellung auf true Mit dieser Art der Konfiguration schreibt immer genau ein Knoten in den persistenten Speicher Allerdings wird hierdurch das zweite Problem eher noch komplizierter denn vor einem Neustart m ssen Sie nun feststellen welcher Cache vor dem Ausfall der schreibende Cache war um diesen dann zuerst neu zu starten 63 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhan
53. bjects einschlie lich ihrer Objektbeziehungen handhabt mit der F higkeit solche POJOs zu clustern und gleichzeitig deren Beziehungen zu wahren Weitere Informationen diesbez glich finden Sie in der POJO Cache Dokumentation Dieses Buch richtet sich an Entwickler die JBoss Cache entweder als eigenst ndigen In Memory Cache als verteilten oder replizierten Cache als Clustering Bibliothek oder als In Memory Datenbank einsetzen m chten Es richtet sich an Applikationsentwickler die JBoss Cache in Ihrer Code Basis einsetzen m chten wie auch an OEM Entwickler die auf JBoss Cache Features aufbauen und diese erweitern m chten Als solches ist dieses Buch in zwei Hauptteile unterteilt der eine behandelt die Programmierschnittstelle f r Benutzer der andere geht sehr viel detaillierter auf spezielle Themen und auf die JBoss Cache Architektur ein Im Allgemeinen sind gute Kenntnisse der Programmiersprache Java sowie ein umfassendes Verst ndnis von Transaktionen und nebenl ufiger Programmierung notwendig Es werden jedoch keine vorherigen Kenntnisse des JBoss Application Servers vorausgesetzt oder ben tigt Nutzen Sie f r weiterf hrende Diskussionen das Benutzerforum das auf der JBoss Cache Website zur Verf gung steht Au erdem bieten wir ein Verfahren zur Nachverfolgung von Fehlermeldungen und Funktionsw nschen im JBoss Cache JIRA Issue Tracker Falls Sie Interesse an der Weiterentwicklung des JBoss Cache oder an der bersetzung
54. cheFactory stellt eine Reihe berladener Methoden zum Erzeugen eines Caches bereit die jedoch alle im Wesentlichen dasselbe tun Sie erlangen Zugriff auf eine Configuration entweder indem diese mittels Methodenparameter bergeben wird oder indem XML Inhalt analysiert wird und eine Konfiguration konstruiert wird Der XML Inhalt kann aus einem gegebenen Eingangs Stream stammen von einem Klassenpfad oder einer Configuration Sie instanziieren den Cache und stellen diesem eine Referenz zur Configuration bereit Optional rufen sie die create und start Methoden des Caches auf Sehen Sie hier ein Beispiel f r das einfachste Verfahren einen Cache unter Verwendung der standardm igen Konfigurationswerte zu erzeugen und zu starten 11 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch CacheFactory factory new DefaultCacheFactory Cache cache factory createCache In diesem Beispiel fordern wir die CacheFactory dazu auf eine Konfigurationsdatei im Klassenpfad zu suchen und zu analysieren CacheFactory factory new DefaultCacheFactory Cache cache factory createCache cache configuration xml In diesem Beispiel konfigurieren wir den Cache mit Hilfe einer Datei m chten jedoch ein Konfigurationselement befehlsorientiert ndern Also weisen wir die Factory an den Cache nicht zu starten sondern tun dies stattdessen selbst CacheFactory factory new DefaultCacheFactory Cache cache
55. d Weise wie gecachte Daten in die auf FileCacheLoader und JDBCCacheLoader basierenden Cache Speicher geschrieben werden hat sich in JBoss Cache 2 0 insofern ge ndert als diese Cache Loader nun Daten schreiben und lesen unter Verwendung desselben Marhalling Frameworks das auch zur Replikation von Daten ber das Netzwerk hinweg eingesetzt wird Diese nderung ist hinsichtlich der Replikation trivial denn die anderen Knoten m ssen einfach nur dieses Format verstehen Allerdings bringt die nderung des Datenformats in Cache Speichern ein anderes Problem mit sich Wie k nnen Benutzer die ihre Daten im JBoss Cache 1 x x Format gespeichert haben ihre Speicher nun zum JBoss Cache 2 0 Format migrieren Aus diesem Grund wird JBoss Cache 2 0 mit zwei Cache Loader Implementierungen namens org jboss cache loader TransformingFileCacheLoader und org jboss cache loader TransformingJDBCCacheLoader ausgeliefert die sich innerhalb der optionalen jbosscache cacheloader migration jar Datei befinden Dabei handelt es sich um besondere Cache Loader die Daten aus dem Cache Speicher im JBoss Cache 1 x x Format lesen und Daten in Cache Speicher im JBoss Cache 2 0 Format schreiben Die Idee dabei ist dass Benutzer ihre vorhandene n Cache Konfigurationsdatei en vor bergehend ndern um diese Cache Loader zu verwenden und dass sie eine kleine Java Applikation erstellen die eine Instanz dieses Caches erzeugt rekursiv den gesamten Cache ausliest und die Daten wie
56. dbuch REPLICATION Abbildung 9 4 Zwei Knoten mit jeweils eigenem Backend Speicher Hier hat jeder Knoten seinen eigenen Datenspeicher nderungen am Cache werden a ber den Cluster hinweg repliziert und b mittels Cache Loader persistiert Das bedeutet dass alle Datenspeicher exakt denselben Zustand besitzen Bei der synchronen Replikation von Anderungen in einer Transaktion kummert sich das Zwei Phasen Festschreibungsprotokoll darum dass alle Anderungen repliziert und in jedem Datenspeicher persistiert werden oder aber nichts repliziert und persistiert wird atomische Aktualisierung Beachten Sie dass JBoss Cache derzeit keine XA Ressource ist was bedeutet dass er keine Funktionalit t zur Wiederherstellung Recovery implementiert Wird er zusammen mit einem Transaktionsmanager genutzt der Recovery unterst tzt ist diese Funktionalit t nicht verf gbar Die Herausforderung hier ist die Zustands bertragung Startet ein neuer Knoten muss Folgendes geschehen 1 Aufforderung an den Koordinator den ltesten Knoten im Clusters seinen Zustand zu senden Hierbei handelt es sich immer um eine vollst ndige Zustands bertragung bei der st mtliche eventuell bereits vorhandene Zust nde berschrieben werden 2 Der Koordinator muss dann warten bis alle aktuell laufenden Transaktionen beendet sind W hrend dieser Zeit gestattet er den Start neuer Transaktionen nicht 3 Anschlie end fragt der Koordinator mittels load
57. den das Leeren der Queue auszul sen sobald diese eine bestimmte Schwelle berschreitet Tabelle 12 46 Das lt stateRetrieval gt Element Das lt stateRetrieval gt Element Beschreibung Dieser Tag steuert wie Zust nde von benachbarten Caches abgerufen werden wenn diese Cache Instanz startet bergeordnetes Element Untergeordnete Elemente Bean quivalent Konfiguration 111 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Tabelle 12 47 lt stateRetrieval gt Attribute lt stateRetriev al gt Attribute Attribut Bean Feld TATER Standard Beschreibung fetchInMemoryS fetchinMemoryStat true false Falls true fragt tate e der Cache beim Start den Zustand von benachbarten Caches ab so dass der Cache einen Warmstart hat timeout stateRetrievalTim positive Ganzzahl 10000 Dies ist die eout maximale Zeit in Millisekunden die auf den Zustand von benachbarten Caches gewartet wird bevor eine Ausnahme ausgegeben und der Start abgebrochen wird nonBlocking useNonBlockingSt true false Dieser ateTransfer Konfigurationssch alter aktiviert den Mechanismus zur nicht sperrenden Zustands bertrag ung neu in 3 1 0 Beachten Sie dass hierzu MVCC als Knotensperrsche ma erforderlich ist und dass STREAMING STA TE_TRANSFER im verwendeten JGroups Stapel vorhanden sein muss 112 Kapitel 12 Konfigurationsreferenzen Tabelle 12 48 Das lt buddy gt Eleme
58. der Eviction Aktion definiert was geschehen soll wenn ein Knoten ger umt werden muss Die Gr e der abgegrenzten Eviction Ereignis Queue 99 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Tabelle 12 25 Das lt property gt Element Das lt property gt Element Beschreibung Ein Verfahren zum Ubergeben von Name Wert Eigenschaften an das umgebene Konfigurationselement Ubergeordnetes Element Tabelle 12 21 Das lt default gt Element Untergeordnete Elemente Bean quivalent Entweder direkte Setter oder setProperties umfassende Bean Tabelle 12 26 lt property gt Attribute lt property gt Attribute Attribut Bean Feld PATEE Standard Beschreibung Entweder direkte String keiner Eigenschaftsname Setter oder setProperties umfassende Bean Entweder direkte String keiner Eigenschaftswert Setter oder setProperties umfassende Bean Tabelle 12 27 Das lt loaders gt Element Das lt loaders gt Element Beschreibung Definiert jegliche Cache Loader bergeordnetes Element Untergeordnete Elemente Bean quivalent CacheLoaderConfig 100 Tabelle 12 28 lt loaders gt Attribute lt loaders gt Attribute Attribut passivation Bean Feld passivation ATEEK true false shared shared true false Tabelle 12 29 Das lt preload gt Element Das lt preload gt Element Beschreibung Ubergeordnetes Element
59. der in den Cache zur ckschreibt Sobald die Daten umgewandelt sind k nnen die Benutzer wieder zu ihren urspr nglichen Cache Konfigurationsdateien zur ckkehren Um Benutzern bei dieser Aufgabe zu helfen wurde ein Beispiel zur Cache Loader Migration konstruiert das sich unter dem examples cacheloader migration Verzeichnis innerhalb der JBoss Cache Distribution befindet Dieses Beispiel namens examples TransformStore ist unabh ngig von den tats chlich im Cache gespeicherten Daten da es in den Cache zur ckschreibt was es zuvor rekursiv ausgelesen hat Allen Benutzern die ihre Daten portieren m chten wird dringend empfohlen vorher dieses Beispiel durchzuf hren und es als Ausgangspunkt f r ihre eigene Applikation zu verwenden Im Beispiel finden Sie auch eine readme txt Datei mit detaillierten Informationen ber das Beispiel selbst 9 4 Cache Passivierung Ein CacheLoader kann dazu verwendet werden die Knotenpassivierung und aktivierung bei Eviction in einem Cache zu erzwingen Cache Passivierung hei t der Vorgang bei dem ein Objekt aus dem speicherinternen Cache entfernt 60 Kapitel 9 Cache Loader wird und dies beim Raumungsvorgang Eviction stattdessen in einen sekundaren Datenspeicher z B Dateisystem Datenbank zu schreiben Cache Aktivierung hei t der Vorgang bei dem ein Objekt aus dem Datenspeicher wieder im speicherinternen Cache hergestellt wird wenn dieses Objekt gebraucht wird In beiden F llen wird der konf
60. des Typs java lang String enth lt Eine weitere Einschr nkung f r Fqn ist dessen Lange Da es sich bei Fqn um einen Prim rschl ssel handelt lautet sein standardm iger Spaltentyp VARCHAR der Textwerte bis zu einer bestimmten durch die Datenbank festgelegten H chstl nge speichern kann 54 Kapitel 9 Cache Loader Datenbanksystemen 9 3 3 1 JDBCCacheLoader Konfiguration 9 3 3 1 1 Tabellenkonfiguration Tabellen und Spaltennamen sowie Spaltentypen sind mit den folgenden Eigenschaften konfigurierbar cache jdbc table name der Name der Tabelle Dem Namen kann ein Schemaname vorangestellt werden f r die angegebene Tabelle schema_name table_name Der Standardwert lautet jbosscache cache jdbc table primarykey der Name des Prim rschl ssels f r die Tabelle Der Standardwert lautet jbosscache_pk cache jdbc table create kann true oder false sein Gibt an ob die Tabelle w hrend des Starts erstellt werden soll Falls true wird die Tabelle erstellt wenn sie nicht bereits existiert Die Standardeinstellung ist true cache jdbc table drop kann true oder false sein Gibt an ob die Tabelle w hrend des Beendens verworfen wird Die Standardeinstellung lautet true cache jdbc fqn column FQN Spaltenname Der Standardwert lautet fqn cache jdbc fqn type FQN Spaltentyp Der Standardwert ist varchar 255 cache jdbc node column Spaltenname der Knoteninhalte Der Standardwert lautet
61. die in diesem Bereich gestattet sind Dieser Wert bestimmt ob die Eviction Queue zur ckgesetzt werden sollte Ist minNodes zum Beispiel 10 und der Cache w chst auf 100 Knoten an so wird der Cache auf die 10 am h ufigsten verwendeten Knoten zur ckgesetzt wenn der Eviction Timer den Eviction Algorithmus durchl uft minTimeToLive die Mindestzeit die ein Knoten nach Zugriff darauf bestehen bleiben darf bevor er f r die Eviction in Betracht gezogen werden darf 0 bedeutet dass diese Funktion deaktiviert ist dies ist die Standardeinstellung 10 4 5 ExpirationAlgorithm org jboss cache eviction ExpirationAlgorithm ist eine Richtlinie die Knoten basierend auf einer absoluten Verfallszeit r umt Die Verfallszeit wird mit Hilfe der org jboss cache Node put Methode angegeben mittels eines String Schl ssels expiration und der absoluten Zeit als java lang Long Objekt mit einem Wert von Millisekunden nach Mitternacht am 1 Januar 1970 UTC dieselbe relative Zeit wie von java lang System currentTimeMillis ausgegeben Diese Richtlinie garantiert eine konstante Reihenfolge O 1 f r Hinzuf gungen Entfernungen und Lookups Aufrufe Intern wird ein sortiertes Set TreeSet gespeichert das die Verfallszeit und den FQN der Knoten enth lt und im Grunde genommen als ein Heap fungiert 71 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Diese Richtlinie besitzt folgende Konfigurations parameter expiratio
62. dieser Datenstruktur implementiert En CommandInterceptor ist eine abstrakte Klasse Interzeptor Implementierungen erweitern diese CommandInterceptor implementiert die Visitor Schnittstelle kann also Befehle auf stark typisierte Weise ndern wenn der Befehl auf dem Weg in die Datenstruktur ist Mehr Informationen ber Visitors und Befehle finden Sie im n chsten Abschnitt Interzeptorimplementierungen werden in der InterceptorChain Klasse verkettet die einen Befehl durch die Interzeptorkette hindurch ausgibt Ein spezieller Interzeptor der CallInterceptor befindet sich immer am Ende dieser Kette um den Befehl der durch die Kette geschickt wird auszuf hren indem er die process Methode des Befehls aufruft JBoss Cache wird mit mehreren Interzeptoren ausgeliefert die jeweils f r verschiedene Verhaltensweisen stehen Dazu geh ren TxInterceptor sucht nach laufenden Transaktionen und meldet sich bei Transaktionsmanagern an um an Synchronisierungsereignissen teilzunehmen ReplicationInterceptor repliziert Zust nde ber den Cluster hinweg mit Hilfe der RpcManager Klasse CacheLoaderInterceptor l dt Daten aus einem persistenten Speicher falls die angeforderten Daten nicht im Cache verf gbar sind Die f r Ihre Cache Instanz konfigurierte Interzeptorkette kann durch Aufruf von CacheSPI getInterceptorChain abgerufen und eingesehen werden wodurch eine geordnete Liste mit Interzeptoren in der Reihenfolge ausgegeben wird in de
63. e Bean Aquivalent Configuration 91 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Tabelle 12 14 lt listeners gt Attribute lt listeners gt Attribute Attribut Bean Feld PAT EEI Standard Beschreibung asyncPoolSize listenerAsyncPool Ganzzahl Die Gr e des Size Thread Pools der zur Verteilung von Ereignissen auf Cache Listener genutzt wird die sich als asynchrone Listener registriert haben Ist diese Zahl kleiner als 1 werden alle asynchronen Listener als synchrone Listener behandelt und synchron benachrichtigt asyncQueueSiz listenerAsyncQue positive Ganzzahl 50000 Die Gr e der e ueSize abgegrenzten Queue die vom asynchronen Listener Thread Pool genutzt wird Wird nur ber cksichtigt wenn asyncPoolSize gr er als O ist Vergr ern Sie diese wenn Sie feststellen dass viele Threads sperren beim Versuch Ereignisse zu dieser Queue hinzuzuf gen 92 Tabelle 12 15 Das lt invocationBatching gt Element Das lt invocationBatching gt Element Kapitel 12 Konfigurationsreferenzen Beschreibung Dieses Element spezifiziert das Verhalten des Aufruf Batchings Ubergeordnetes Element Untergeordnete Elemente Bean Aquivalent Configuration Tabelle 12 16 lt invocationBatching gt Attribute lt invocationBa tching gt Attribute Attribut Bean Feld PAT EEI Standard enabled invocationBatching true false Enabled Tabelle 12 17
64. e die bei Erreichen des Schwellenwerts die zuletzt verwendeten Knoten verwirft org jboss cache eviction FIFOPolicy Eine Eviction Richtlinie die eine First in First out Warteschlange erzeugt und bei Erreichen des Schwellenwerts die ltesten Knoten verwirft org jboss cache eviction ExpirationPolicy Eine Eviction Richtlinie die zu verwerfende Knoten auf Grundlage einer Verfallszeit die f r jeden Knoten konfiguriert ist ausw hlt org jboss cache eviction ElementSizePolicy Eine Eviction Richtlinie die zu 18 Kapitel 2 Benutzer API verwerfende Knoten auf Grundlage von im Knoten enthaltenen Schl ssel Wert Paaren ausw hlt Detaillierte Informationen ber die Konfiguration und ber das Implementieren von angepassten Eviction 19 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Kapitel 3 Konfiguration 3 1 Konfigurations berblick Dieorg jboss cache config Configuration Klasse zusammen mit ihren eine Java Bean die die Konfiguration des Caches und aller zugeh rigen Architektur Elemente Cache Loader Eviction Richtlinien etc umfasst Kapiteln wieder aufgegriffen werden Jedes Mal wenn in diesem Handbuch von einer Konfigurationsoption die Rede ist k nnen Sie davon ausgehen dass die Configuration Klasse oder einer ihrer Bestandteile eine einfache Eigenschafts Setter Getter f r diese Konfigurationsoption offenlegt 3 2 Erzeugen einer Konfiguration Configuration Objekt ein Datei
65. e etwa Als Erster rein als Erster raus Diese Richtlinie garantiert eine konstante Reihenfolge O 1 f r Hinzuf gungen Entfernungen und Lookups Aufrufe Sie besitzt folgende Konfigurationsparameter maxNodes Dies ist die maximale in diesem Bereich gestattete Anzahl von Knoten 0 bedeutet sofortigen Ablauf 1 bedeutet keine Beschr nkung 70 Kapitel 10 Eviction minTimeToLive die Mindestzeit die ein Knoten nach Zugriff darauf bestehen bleiben darf bevor er f r die Eviction in Betracht gezogen werden darf 0 bedeutet dass diese Funktion deaktiviert ist dies ist die Standardeinstellung 10 4 3 MRUAlgorithm Most Recently Used Zuletzt verwendet org jboss cache eviction MRUAlgorithm steuert die Eviction basierend auf dem Most Recently Used Zuletzt verwendet Algorithmus Die zuletzt verwendeten Knoten werden mit dieser Richtlinie als Erste ger umt Diese Richtlinie garantiert eine konstante Reihenfolge O 1 f r Hinzuf gungen Entfernungen und Lookups Aufrufe Sie besitzt folgende Konfigurationsparameter maxNodes Dies ist die maximale in diesem Bereich gestattete Anzahl von Knoten 0 bedeutet sofortigen Ablauf 1 bedeutet keine Beschr nkung minTimeToLive die Mindestzeit die ein Knoten nach Zugriff darauf bestehen bleiben darf bevor er f r die Eviction in Betracht gezogen werden darf 0 bedeutet dass diese Funktion deaktiviert ist dies ist die Standardeinstellung 10 4 4 LFUAlgorithm Lea
66. e Application Platform 5 0 JBoss Cache Benutzerhandbuch lt xml version 1 0 encoding UTF 8 gt lt deployment xmlns urn jboss bean deployer 2 0 gt lt First we create a Configuration object for the cache gt lt bean name ExampleCacheConfig class org jboss cache config Configuration gt build up the Configuration lt bean gt lt bean name ExampleCache class org jboss cache jmx CacheJmxWrapper gt lt annotation gt org jboss aop microcontainer aspects jmx JMX name jboss cache service ExampleTreeCache exposedInterface org jboss cache jmx CacheJmxWrapperMBean class registerDirectly true lt annotation gt lt constructor gt lt parameter gt lt inject bean ExampleCacheConfig gt lt parameter gt lt constructor gt lt bean gt lt deployment gt 5 4 3 JBoss Cache Statistiken JBoss Cache zeichnet in seinen Interzeptoren und verschiedenen anderen Komponenten Statistiken auf und legt diese durch eine Reihe von MBeans offen Das Sammeln von statistischen Daten ist standardm ig aktiviert mit Hilfe des Configuration setExposeManagementStatistics Setters kann es jedoch f r eine bestimmte Cache Instanz deaktiviert werden Beachten Sie dass die Mehrheit aller Statistiken durch das CacheMgmtInterceptor MBean bereitgestellt wird so dass in dieser Hinsicht dieser Interzeptor der wichtigste ist Wenn Sie aus Leistungsgr nden alle Statistiken deaktivieren wollen setzen Sie Configuration setExp
67. e Caches replizieren genau wie bei REPL_SYNC oben alle nderungen an alle anderen Caches im Cluster Asynchron bedeutet dass der Aufrufer nicht sperrt bis er Best tigungen der erfolgten Replikation empf ngt INVALIDATION_SYNC Wird ein Cache f r Invalidierung statt Replikation konfiguriert erhalten bei jeder nderung der Daten in einem Cache die anderen Caches im Cluster eine Nachricht die sie dar ber informiert das ihre Daten nun veraltet sind und aus dem Speicher verworfen werden sollten Dies verringert den Overhead f r die Replikation erm glicht aber nach wie vor das Invalidieren veralteter Daten auf entfernten Caches INVALIDATION_ASYNC wie oben nur dass mit diesem Invalidierungs Modus die Invalidierungsnachrichten asynchron versendet werden konfiguriert werden k nnen 2 7 Hinzuf gen eines Cache Listeners Registrieren f r Cache Ereignisse JBoss Cache bietet ein bequemes Verfahren zum Registrieren f r Benachrichtigungen ber Cache Ereignisse Object myListener new MyCacheListener cache addCacheListener myListener hnliche Methoden existieren zum Entfernen oder zum Abrufen von registrierten Listenern Werfen Sie einen Blick auf die Javadocs ber die Cache Schnittstelle f r weitere Einzelheiten Grunds tzlich kann jede ffentliche Klasse als Listener benutzt werden vorausgesetzt sie ist mit der CacheListener Annotation annotiert Au erdem muss die Klasse eine oder mehrere Methoden mit
68. e Funktion verf gbar ist werden wir eine Wiki Seite zu diesem Thema hinzuf gen 5 4 Informationen zur Verwaltung w hrend der Laufzeit JBoss Cache beinhaltet JMX MBeans zur Offenlegung von Cache Funktionalit t und der Bereitstellung von Statistiken die zur Analyse von Cache Operationen verwendet werden k nnen JBoss Cache kann Cache Ereignisse auch als MBean Benachrichtigungen zur Handhabung via JMX Monitoring T ools senden 5 4 1 JBoss Cache MBeans JBoss Cache stellt eine MBean bereit die beim JMX Server Ihrer Umgebung registriert werden kann um Zugriff auf die Cache Instanz via JMX zu erm glichen Diese MBean ist der org jboss cache jmx CacheJmxWrapper Es handelt sich dabei um eine StandardMBean ihre Schnittstelle ist also org jboss cache jmx CacheJmxWrapperMBean Diese MBean kann verwendet werden Um eine Referenz zum zugrunde liegenden Cache zu erhalten Um Lebenszyklus Operationen wie create start stop destroy auf dem zugrunde liegenden Cache aufzurufen Um verschiedene Details ber den aktuellen Zustand des Caches einzusehen z B Anzahl an Knoten Informationen ber Sperren etc Um zahlreiche Details ber die Konfiguration des Caches einzusehen und um diejenigen Konfigurationselemente die im laufenden Betrieb des Caches ver nderbar sind bei Bedarf abzu ndern Weitere Informationen finden Sie im Cache JmxWrapperMBean Javadoc Ist ein Cache JmxWrapper registriert bietet JBoss Cache zudem MBeans f r mehrere
69. e commit Methode weist den Cache Loader an die Transaktion festzuschreiben und die rollback Methode weist den Cache Loader an die mit dieser Transaktion assoziierten nderungen zu verwerfen Werfen Sie einen Blick auf die Javadocs dieser Schnittstelle f r eine detaillierte Erl uterung jeder Methode und des Vertrages den Implementierungen erf llen m ssten 9 2 Konfiguration Cache Loader werden folgenderma en in der JBoss Cache XML Datei konfiguriert Beachten Sie dass Sie mehrere Cache Loader in einer Kette definieren k nnen Der Cache schaut alle Cache Loader in deren Konfigurationsreihenfolge durch bis er ein g ltiges Datenelement findet das nicht Null ist Bei der Durchf hrung von Schreibvorg ngen wird in alle Cache Loader geschrieben es sei denn das ignoreModifications Element wurde f r einen bestimmten Cache Loader auf true eingestellt Einzelheiten entnehmen Sie bitte dem Konfigurationsabschnitt unten lt Cache loader config block gt lt if passivation is true only the first cache loader is used the rest are ignored gt lt loaders passivation false shared false gt lt preload gt lt Fans to preload gt lt node fqn some stuff gt lt preload gt lt if passivation is true only the first cache loader is used the rest are ignored gt lt loader class org jboss cache loader JDBCCacheLoader async false fetchPersistentState true ignoreModifications false purgeOnStar
70. e node altogether rootNode removeChild peterGriffinFqn asser tFalse rootNode hasChild peterGriffinFqn Die Cache Schnittstelle legt au erdem put get remove Operationen offen die ganz einfach einen Fqn Fan peterGriffinFqn Fqn fromString griffin peter cache put peterGriffinFgn isCartoonCharacter Boolean TRUE cache put peterGriffinFgn favoriteDrink new Beer assertTrue peterGriffin get peterGriffinFgn isCartoonCharacter asser tTrue cache getRootNode hasChild peterGriffinFgqn cache remove peterGriffinFqn favoriteDrink assertNull cache get peterGriffinFqn favoriteDrink cache removeNode peterGriffinFqn asser tFalse cache getRootNode hasChild peterGriffinFqn 2 3 1 Organisieren Ihrer Daten und verwenden der Knotenstruktur Betrachten Sie einen Knoten als eine benannte logische Gruppe von Daten Ein Knoten sollte verwendet werden um die Daten eines einzelnen Datensatzes zu speichern z B Informationen Uber eine 13 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch bestimmte Person oder einen bestimmten Account Sie sollten sich immer vor Augen f hren dass alle Aspekte des Cachens Sperren Cache Loading Replikation und Eviction auf Basis einzelner Knoten stattfinden Infolgedessen wird alles was durch Speicherung in einem einzelnen Knoten zusammengruppiert ist auch als eine einzelne atomische Einheit behandelt 2 4 Die Fqn Klasse Im vorangegange
71. e sind spezifisch f r den in algorithmClass spezifizierten Algorithmus Werfen Sie f r weitere Details bitte einen Blick auf den Abschnitt ber den jeweiligen Algorithmus 10 3 2 Befehlsorientierte Konfiguration Die Konfiguration der Eviction mit Hilfe des Configuration Objekts erfordert die Verwendung der 69 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch org jboss cache config EvictionConfig Bean die an Informationen Uber das befehlsorientierte Erzeugen einer Configuration Durch die Verwendung einfacher POJO Beans um alle Elemente in einer Cache Konfiguration zu reprasentieren ist es auch relativ einfach nach dem Start des Caches noch befehlsorientiert Eviction Bereiche hinzuzuf gen Nehmen wir beispielsweise an wir haben einen vorhandenen Cache konfiguriert mittels XML mit dem oben gezeigten Eviction Konfigurationselement Nun m chten wir w hrend der Laufzeit einen neuen Eviction Bereich namens org jboss fifo hinzuf gen unter Verwendung von LRUAlgorithm aber einer anderen Anzahl von maxNodes Fan fqn Fan fromString org jboss fifo Create a configuration for an LRUPolicy LRUAlgorithmConfig lruc new LRUAlgorithmConfig lruc setMaxNodes 10000 Create an eviction region config EvictionRegionConfig erc new EvictionRegionConfig fqn lruc Create the region and set the config Region region cache getRegion fqn true region setEvictionRegionConfig erc 10 4 Enth
72. e von Bibliotheken und wurde entwickelt und getestet auf Sun s JDK 5 0 und JDK 6 Bibliotheken von denen JBoss Cache abhangt werden mitgeliefert sowie mehrere optionale JARs fir optionale Funktionen 1 4 Lizenz Bei JBoss Cache handelt es sich um ein Open Source Projekt das die Unternehmens und OEM 10 Kapitel 2 Benutzer API Kapitel 2 Benutzer API 2 1 API Klassen Die Cache Schnittstelle ist der wichtigste Weg zur Interaktion mit JBoss Cache Sie wird konstruiert und optional gestartet mit Hilfe der CacheFactory Die CacheFactory erm glicht Ihnen das Erzeugen eines Caches entweder mittels eines Configuration Objekts oder einer XML Datei Der Cache organisiert Daten in einer Baumstruktur die sich aus Knoten zusammensetzt Sobald Sie eine Referenz auf einen Cache haben k nnen Sie diese nutzen um in der Baumstruktur Node Objekte Knoten zu suchen oder Daten im Baum abzulegen Public API Beachten Sie dass das oben gezeigte Diagramm nur einige der h ufiger verwendeten API Methoden darstellt Um die API zu lernen ist der beste Weg das Lesen der Javadocs f r die oben gezeigten Schnittstellen Nachfolgend behandeln wir einige wichtige Aspekte 2 2 Instanziierung und Start des Caches Eine Instanz der Cache Schnittstelle kann nur mit Hilfe einer CacheFactory erzeugt werden Darin unterscheidet sie sich von JBoss Cache 1 x wo eine Instanz der alten TreeCache Klasse direkt instanziiert werden konnte Die Ca
73. eicher des Empf ngers persistiert Persistente Zustands bertragung wird durch Einstellung des fetchPersistentState Attributs des Cache Loaders auf true aktiviert Sind mehrere Cache Loader in einer Kette konfiguriert so kann diese Eigenschaft nur bei einem auf true eingestellt sein da andernfalls beim Start eine Ausnahme gemeldet wird Persistente Zustands bertragung mit einem gemeinsam verwendeten Cache Loader macht keinen Sinn da derselbe persistente Speicher der die Daten bereitstellt diese am Ende auch empf ngt Wird also ein Cache Loader gemeinsam verwendet so gestattet der Cache keine persistente Zustands bertragung selbst wenn bei einem Cache Loader fetchPersistentState auf true eingestellt ist Welche Art von Zustands bertragung am besten geeignet ist h ngt von der Verwendung des Caches ab 1 Wird ein Write Through Cache Loader verwendet so wird der aktuelle Cache Zustand vollst ndig durch den persistenten Zustand repr sentiert Daten k nnten aus dem transienten Speicher entfernt worden sein befinden sich aber nach wie vor im persistenten Speicher In diesem Fall wird falls der Cache Loader nicht gemeinsam verwendet wird persistente 47 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Zustands bertragung verwendet um sicherzustellen dass der neue Cache den korrekten Zustand besitzt Der speicherinterne Zustand kann auch bertragen werden wenn Sie einen Hot Cache m chten
74. eichnen damit diese nunmehr bei der Eviction ber cksichtigt werden 10 3 Konfiguration der Eviction 10 3 1 Grundlegende Konfiguration Das grundlegende Eviction Konfigurationselement sieht folgenderma en aus lt eviction wakeUpInterval 500 eventQueueSize 100000 gt lt default algorithmClass org jboss cache eviction LRUAlgorithm gt lt property name maxNodes value 5000 gt lt property name timeToLive value 1000 gt lt default gt lt eviction gt wakeUpInterval dieser erforderliche Parameter legt in Millisekunden fest wie oft der Eviction Thread ausgef hrt werden soll eventQueueSize dieser optionale Parameter legt die Gr e der Queue fest die Eviction Ereignisse enth lt Wenn Ihr Eviction Thread nicht h ufig genug l uft kann sich u U die Ereignis Queue f llen In diesem Fall kann es n tig sein Ihren Eviction Thread h ufiger auszuf hren oder Ihre Ereignis Queue zu vergr ern Diese Konfiguration ist nur die standardm ige Gr e der Ereignis Queue und kann in einzelnen Eviction Bereichen au er Kraft gesetzt werden Falls nicht spezifiziert lautet der Standard 200000 algorithmClass dies ist erforderlich es sei denn Sie legen individuelle algorithmClass Attribute f r jeden einzelnen Bereich fest Dies definiert den standardm igen Eviction Algorithmus der verwendet werden soll falls keiner gesondert f r den Bereich definiert ist Algorithmus Konfigurationsattribute dies
75. einer der Annotationen auf Methodenebene imorg jboss cache notifications annotation Paket annotiert haben Derart annotierte Methoden m ssen ffentlich sein einen leeren R ckgabetyp haben und einen einzelnen Parameter vom Typorg jboss cache notifications event Event oder einen seiner Untertypen akzeptieren CacheStarted derart annotierte Methoden erhalten eine Benachrichtigung wenn der Cache gestartet wird Methoden m ssen einen Parametertyp akzeptieren der von CacheStartedEvent zuweisbar ist 15 Pe O JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch CacheStopped derart annotierte Methoden erhalten eine Benachrichtigung wenn der Cache gestoppt wird Methoden m ssen einen Parametertyp akzeptieren der von CacheStoppedEvent zuweisbar ist NodeCreated derart annotierte Methoden erhalten eine Benachrichtigung wenn ein Knoten erzeugt wird Methoden m ssen einen Parametertyp akzeptieren der von NodeCreatedEvent zuweisbar ist NodeRemoved derart annotierte Methoden erhalten eine Benachrichtigung wenn ein Knoten entfernt wird Methoden m ssen einen Parametertyp akzeptieren der von NodeRemovedEvent zuweisbar ist NodeModified derart annotierte Methoden erhalten eine Benachrichtigung wenn ein Knoten ver ndert wird Methoden m ssen einen Parametertyp akzeptieren der von NodeModifiedEvent zuweisbar ist NodeMoved derart annotierte Methoden erhalten eine Benachrichtigung wenn ein Knote
76. el 2 Benutzer APl 20 6 naana 2 1 API Klassen 2 2 Instanziierung und Start des Caches 2 3 Cachen und Abrufen von Daten 2 3 1 Organisieren Ihrer Daten und verwenden der Knotenstruktur 2 4 Die Fqn Klasse 2 5 Stoppen und Zerst ren des Caches 2 6 Cache Modi 2 7 Hinzuf gen eines Cache Listeners Registrieren f r Cache Ereignisse 2 7 1 Synchrone und asynchrone Benachrichtigungen 2 8 Verwenden von Cache Loadern 2 9 Verwenden von Eviction Richtlinien Kapitel 3 Konfiguration 0 ccc tenets 3 1 Konfigurations berblick 3 2 Erzeugen einer Konfiguration 3 2 1 Analyse einer XML basierten Konfigurationsdatei 3 2 2 berpr fen von Konfigurationsdateien 3 2 3 Befehlsorientierte Konfiguration 3 2 4 Verwenden eines IOC Frameworks 3 3 Zusammensetzung eines Configuration Objekts 3 4 Dynamische Rekonfiguration 3 4 1 berschreiben der Konfiguration mittels der Option API Kapitel 4 Batching APl u 4 2 pected cece 8 200 ee wie ee ee Oe eS 4 1 Einf hrung 4 2 Batching Konfiguration 4 3 Batching API Kapitel 5 Implementierung von JBoss Cache 2 00055 5 1 Eigenst ndiger Einsatz Befehlsorientierte Implementierung 5 2 Via JBoss Microcontainer JBoss AS 5 x 5 3 Automatisches Binden an JNDI in JBoss AS 5 4 Informationen zur Verwaltung w hrend der Laufzeit 5 4 1 JBoss Cache MBeans 5 4 2 CacheJmxWrapper beim MBeanServer registrieren 5 4 2 1 Befehlsorientierte
77. en Anders ausgedr ckt findet hier so etwas wie eine lazy bertragung der Daten statt bei der Daten nur dann bertragen werden wenn andere Knoten diese abfragen Diese Strategie verhindert einen regelrechten Datensturm im Netzwerk wenn gro e Datenmengen auf gesunden Knoten hin und her bertragen werden nur weil wenige oder sogar nur ein Knoten ausgefallen ist Werden die Daten nicht im prim ren Bereich eines Knotens gefunden so w rde der anfragende Knoten optional andere Instanzen aufgefordern ihre f r andere Caches gespeicherten Backup Daten auf diese Daten hin zu berpr fen Das bedeutet dass selbst wenn der Cache ausf llt der Ihre Session Daten enth lt andere Instanzen nach wie vor auf diese Daten zugreifen k nnen indem sie den Cluster auffordern seine Backups nach den Daten zu durchsuchen Nach Auffinden der Daten werden diese an die Instanz bertragen die sie angefragt hat und werden dort dem Datenbaum dieser Instanz hinzugef gt Anschlie end werden sie optional von allen anderen Instanzen und Backups entfernt so dass bei Verwendung von Session Affinit t die Affinit t zu dieser neuen Cache Instanz existiert die diese Daten gerade in Besitz genommen hat Datengravitation wird als Interzeptor implementiert Die folgenden Konfigurationseigenschaften alle optional stehen in Zusammenhang mit der Datengravitation dataGravitationRemoveOnFind zwingt alle entfernten Caches die die Daten besitzen oder Backup
78. en REPEATABLE_READ und READ_COMMITTED die unterst tzten alle f nf Datenbank Isolationsebenen und wenn eine nicht unterst tzte Isolationsebene konfiguriert wird wird diese auf die n chsth here oder niedrigere Ebene angepasst REPEATABLE_READ ist die standardm ige Isolationsebene um die Kompatibilit t mit lteren Versionen von JBoss Cache zu bewahren READ_COMMITTED bietet zwar nur eine geringf gig schw chere Isolation daf r jedoch eine deutlich bessere Leistung im Vergleich zu REPEATABLE_READ 11 1 1 2 2 Nebenl ufige Schreibvorg nge und Write Skews Obwohl MVCC Schreibvorg nge dazu zwingt eine Schreibsperre zu beziehen kann es beim Einsatz von REPEATABLE_READ dennoch zu einem Ph nomen namens Write Skews kommen n Begin transaction Begin transaction Read Node Read Node IA value 1 JA value 1 hold ref in context hold ref in context Acquire exclusive lock on A to start writing Blocks until Copy A for writing Transaction 1 releases the lock 4 A Update A 2 5 4 value value 1 IA is copied using Release exclusive lock N Acquire exclusive lock on A gt _ Jon JA to start writing Copy A for writing End transaction Update A value value 1 A WRONG Incorrect state read and updated Dies passiert wenn nebenl ufige Transaktionen zun chst einen Lese und anschlie end einen Schreibvorgang aus
79. en zwar verwendet werden davon wird jedoch abgeraten isolationLevel Transaktions Isolationsebene Standardm ig REPEATABLE_READ falls nicht anders angegeben writeSkewCheck standardm ig true falls nicht anders angegeben concurrencyLevel standardm ig 500 falls nicht anders angegeben lockAcquisitionT imeout nur relevant f r Schreibvorg nge wenn MVCC eingesetzt wird Standardm ig 10000 falls nicht anders angegeben 11 1 2 Pessimistische und optimistische Sperrschemata Ab JBoss Cache 3 x wurde das pessimistische und optimistische Sperrschema zugunsten von MVCC existierenden Applikationen diese veralteten Sperrschemata aufzugeben da diese in zuk nftigen Versionen irgendwann nicht mehr unterst tzt werden Eine Dokumentation dieser veralteten Sperrschemata ist in diesem Benutzerhandbuch nicht enthalten eingesehen werden 11 2 JTA Unterst tzung wenn Transaktionsunterst tzung deaktiviert ist ist es gleichwertig zur AutoCommit Einstellung bei der potenziell nach jeder nderung repliziert wird falls Replikation aktiviert ist Bei jedem eingehenden Aufruf unternimmt JBoss Cache Folgendes 1 Er bezieht die aktuelle javax transaction Transaction die mit dem Thread verkn pft ist 2 Falls nicht schon erfolgt registriert er eine javax transaction Synchronization beim Transaktionsmanager um dar ber benachrichtigt zu werden wenn eine Transaktion 75 JBoss Enterprise Application Platform 5 0 JBos
80. entierung Welche Konfigurationselemente offengelegt werden h ngt von den Anforderungen der BuddyLocator Implementierung ab Allgemeine Eviction Konfigurationsoptionen Muss enthalten mindestens eine EvictionRegionConf ig eine pro Eviction Bereich benennt den Bereich etc Muss enthalten EvictionAlgorithmConfig Implementierungsspezifisches Konfigurationsobjekt f r die verwendete EvictionAlgorithm Implementierung Welche Konfigurationselemente offengelegt werden h ngt von den Anforderungen der EvictionAlgorithm Implementierung ab werden Allgemeine Cache Loader Konfigurationsoptionen Muss enthalten mindestens eine IndividualCacheLoaderConf ig Implementierungsspezifisches Konfigurationsobjekt f r die verwendete CacheLoader Implementierung Welche Konfigurationselemente offengelegt werden h ngt von den Anforderungen der CacheLoader Implementierung ab RuntimeConfig legt Cache Clients bestimmte Informationen Uber die Laufzeitumgebung des Caches offen z B Mitgliedschaft in Buddy Replikationsgruppen falls Buddy Replikation siehe ben tigten externen Diensten wie einem JTA TransactionManager oder einer JGroups ChannelFactory in den Cache 3 4 Dynamische Rekonfiguration Ein dynamisches ndern der Konfiguration einiger Optionen im laufenden Betrieb des Caches wird unterst tzt indem befehlsorientiert das Configuration Objekt vom laufenden Cache bezogen wird und Werte ge ndert werden z B Configuration liveConfig cache get
81. enz zu bieten JBoss Cache ist zudem ein geclusterter Cache und kann in einem Cluster dazu verwendet werden Zust nde zu replizieren um somit eine hohe Ausfallsicherheit zu bieten Eine Vielzahl an Replikationsmodi werden unterst tzt einschlie lich Invalidierung und Buddy Replikation und Netzwerkkommunikation kann entweder synchron oder asynchron erfolgen Wird der Cache im geclusterten Modus eingesetzt kann dadurch sehr effektiv Hochverf gbarkeit Fehlertoleranz und Lastverteilung in benutzerdefinierte Applikationen und Frameworks integriert werden 1 1 1 Und was ist ein POJO Cache POJO Cache ist eine Erweiterung der Kern JBoss Cache API POJO Cache bietet zus tzliche Funktionalit t wie z B bewahren von Objektreferenzen selbst nach Replikation oder Persistierung feingranulare Replikation bei der nur ver nderte Objektfelder repliziert werden API loses Clustering Modell in dem POJOs einfach als geclustert annotiert werden F r den POJO Cache steht eine eigene umfassende Reihe von Dokumentationen einschlie lich Daher wird auf POJO Cache in diesem Handbuch nicht n her eingegangen 1 2 Kurzfassung der Features 1 2 1 Cachen von Objekten JBoss Cache stellt eine einfache und unkomplizierte Programmierschnittstelle bereit ber die Daten einfache Java Objekte im Cache abgelegt werden k nnen Basierend auf den gew hlten Konfigurationsoptionen werden diese Daten eine oder mehrere Aussagen k nnen zutreffen
82. er ausscheidet oder ein neuer n herer Buddy eintritt Methoden m ssen einen Parametertyp akzeptieren der von BuddyGroupChangedEvent zuweisbar ist In den Javadocs ber die Annotationen und ber den Event Untertyp finden Sie detaillierte Informationen dar ber was in Ihre Methode bergeben wird und wann Beispiel CacheListener public class MyListener CacheStarted CacheStopped public void cacheStartStopEvent Event e switch e getType case CACHE_STARTED System out println Cache has started break case CACHE_STOPPED System out println Cache has stopped break NodeCreated NodeRemoved NodeVisited NodeModified NodeMoved public void logNodeEvent NodeEvent ne log An event on node ne getFqn has occured 2 7 1 Synchrone und asynchrone Benachrichtigungen Standardm ig sind alle Benachrichtigungen insofern synchron als diese auf dem Thread des Aufrufers erfolgen der das Ereignis generiert hat Infolgedessen ist es ratsam sicherzustellen dass Cache Listener Implementierungen den Thread nicht in langlaufenden Aufgaben festhalten Alternativ k nnen Sie das CacheListener sync Attribut auf false setzen so dass Sie nicht im aufrufenden ber das Optimieren dieses Thread Pools und der Gr e der Sperr Queue 2 8 Verwenden von Cache Loadern Cache Loader sind ein wichtiger Teil von JBoss Cache Sie erm glichen das Persistieren von Knoten auf 17 JBoss Enterprise Applicat
83. etzen JBoss Cache bietet selbst speicherinternes Caching Ihrer Daten so dass die Anzahl der Remote Aufrufe reduziert wird um damit auch die Latenz und den Aufwand des Datenabrufs von Amazon S3 zu verringern Mit Cache Replikation k nnen Sie dar berhinaus Daten von Ihrem lokalen Cluster laden ohne jedesmal von Remote aus darauf zugreifen zu m ssen Beachten Sie dass Amazon S3 keine Transaktionen unterst tzt Wenn in Ihrer Applikationen Transaktionen eingesetzt werden besteht bei der Verwendung dieses Cache Loaders das Risiko inkonsistenter Zust nde Schreibvorg nge sind jedoch atomisch das hei t falls ein Schreibvorgang fehlschl gt wird der gesamte Schreibvorgang r ckg ngig gemacht und die Daten werden somit nie verf lscht Daten werden in Schl sseln basierend auf dem Fan des Knotens gespeichert und Knotendaten werden als eine java util Map unter Verwendung der CacheSPI getMarshaller Instanz serialisiert In den Javadocs finden Sie weitere Informationen ber die Strukturierung und Speicherung von Daten Daten 57 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch werden unter Verwendung der Java Serialisierung gespeichert Beachten Sie dass dadurch die Daten nicht einfach ber HTTP f r nicht JBoss Cache Clients zur Verf gung stehen Wir w rden uns Uber Ihre R ckmeldung und Hilfe freuen um diesen Cache Loader dahingehend zu erweitern Bei diesem Cache Loader sind einzelne Schl sseloperationen wie
84. f hren basierend auf dem gelesenen Wert Da f r Lesevorg nge eine Referenz auf den Zustand im Transaktionskontext bewahrt wird wird ein nachfolgender Schreibvorgang auf Grundlage dieses gelesenen Originalzustands durchgef hrt der mittlerweile jedoch unter Umst nden nicht mehr g ltig ist 74 Kapitel 11 Transaktionen und Nebenl ufigkeit Standardm ig wird bei Auftreten eines Write Skews eine DataVersioningException ausgegeben sobald der Fehler beim Kopieren des Zustands f r das Schreiben entdeckt wird Allerdings stellt ein Write Skew in den meisten Applikationen kein Problem dar z B falls der geschriebene Zustand in keiner Beziehung zum gelesenen Originalzustand steht und sollte erlaubt werden Falls Ihrer Applikation Write Skews egal sind k nnen Sie diese erlauben indem Sie das writeSkewCheck Konfigurationsattribut Beachten Sie dass Write Skews beim Einsatz von READ_COMMITTED nicht auftreten k nnen da Threads immer mit festgeschriebenen Zust nden arbeiten 11 1 1 3 Konfiguration von Sperren Zur Konfiguration von MVCC wird das lt locking gt Konfigurations Tag verwendet und zwar folgenderma en lt locking isolationLevel REPEATABLE_READ lockAcquisitionTimeout 10234 nodeLockingScheme mvcc writeSkewCheck false concurrencyLevel 1000 gt nodeLockingScheme das verwendete Knoten Sperrschema Standardm ig MVCC falls nicht anders angegeben Veraltete Schemata wie pessimistisch oder optimistisch k nn
85. garantiert eingehalten wird Die offengelegten ffentlichen APIs andererseits sind garantiert 7 3 Methodenaufrufe auf Knoten Da der Cache im Grunde genommen eine Gruppe von Knoten ist m ssen Aspekte wie Clustering Persistenz Eviction etc auf diese Knoten angewendet werden wenn Operationen auf dem Cache als Ganzes oder auf einzelnen Knoten aufgerufen werden Um dies auf eine saubere modulare und erweiterbare Weise zu erreichen wird eine Interzeptorkette verwendet Die Kette ist aus einer Reihe von Interzeptoren aufgebaut von denen jeder einen bestimmten Aspekt oder eine bestimmte Funktionalit t hinzuf gt Die Kette wird bei Erzeugung des Caches angelegt basierend auf der verwendeten Konfiguration Sie sollten wissen dass die NodeSPTI einige Methoden bietet wie z B die xxxDirect JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Methodenfamilie die direkt auf einem Knoten operieren ohne den Interzeptorstapel zu durchlaufen Plugin Autoren sollten sich dar ber im Klaren sein dass die Verwendung solcher Methoden Auswirkungen auf die Aspekte des Caches hat die ggf angewendet werden m ssen wie z B Sperren Replikation etc Kurzum verwenden Sie diese Methoden nur dann wenn Sie wirklich wissen was Sie da tun 7 3 1 Interzeptoren JBoss Cache ist im Wesentlichen eine Kerndatenstruktur eine Implementierung von DataContainer und Aspekte und Funktionen werden mit Hilfe von Interzeptoren vor
86. gesetzt werden sollte Falls Ihre Applikation es jedoch erfordert spricht nichts dagegen die XML basierte Konfiguration f r den Gro teil der Attribute zu nutzen und dann auf das Configuration Objekt zuzugreifen um einigen Elementen andere Werte als die Standards zuzuweisen einen Eviction Bereich hinzuzuf gen etc Beachten Sie dass Konfigurationswerte nicht befehlsorientiert ver ndert werden d rfen wenn der Cache l uft Ausgenommen sind solche Werte die als Dynamic annotiert sind Dynamische markiert Der Versuch eine nicht dynamische Eigenschaft zu ver ndern wird eine ConfigurationException verursachen 3 2 4 Verwenden eines IOC Frameworks Konfigurationselemente mittels einfacher Setter und Getter offenlegen Deshalb sollte jedes gute IOC Framework wie z B JBoss Microcontainer eine Configuration aus einer XML Datei im eigenen 3 3 Zusammensetzung eines Configuration Objekts Eine Configuration setzt sich aus einer Reihe von Unterobjekten zusammen 21 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch EvictionPolicy Config Nachfolgend sehen Sie eine kurze bersicht ber die Komponenten einer Configuration Siehe Javadoc und verkn pfte Kapitel dieses Handbuchs f r eine ausf hrlichere Erkl rung der mit diesen Komponenten verkn pften Konfigurationen Muss enthalten BuddyLocatorConfig Implementierungsspezifisches Konfigurationsobjekt f r die verwendete BuddyLocator Implem
87. ibung Dieses Element spezifiziert das transaktionale Verhalten des Caches bergeordnetes Element Untergeordnete Elemente Bean quivalent Configuration 87 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Tabelle 12 6 lt transaction gt Attribute lt transaction gt Attribute Attribut transactionMan agerLookupClas erLookupClass s syncCommitPha se 88 Bean Feld transactionManag syncCommitPhase dynamisch PAT EERI Eine g ltige Klasse die im Klassenpfad verf gbar ist true false Standard keiner false Beschreibung Legt die TransactionMa nagerLookupCl ass Implementierung fest mit Hilfe derer ein Transaktionsman ager bezogen werden soll Falls nicht spezifiziert und kein TransactionMa nager mittels RuntimeConfig setTransacti onManager injiziert wird wird der Cache an keiner Transaktion teilnehmen k nnen Falls aktiviert werden die im Cluster versendeten Festschreibungsn achrichten auf synchrone Weise verschickt Dies ist in der Regel kaum von Vorteil denn nach Entdecken eines Fehler bei der bertragung der Festschreibung kann nichts weiter unternommen werden als eine entsprechende Meldungs ins Protokoll zu schreiben da einige Knoten im Cluster wom glich Kapitel 12 Konfigurationsreferenzen bereits festgeschrieben haben und nicht mehr zur cksetzen k nnen syncRollbackPh syncRollbackPhas true fal
88. ication Platform 5 0 JBoss Cache Benutzerhandbuch 1 Memory A Disk 2 Memory A B Disk 3 Memory B Disk A 4 Memory A B Disk 5 Memory A Disk B 6 Memory A Disk 9 5 Strategien Dieser Abschnitt behandelt verschiedene Muster zur Kombination unterschiedlicher Cache Loader Typen und Konfigurationsoptionen um bestimmte Ergebnisse zu erzielen 9 5 1 Lokaler Cache mit Speicher Dies ist der einfachste Fall Wir haben eine JBoss Cache Instanz deren Cache Modus LOCAL ist weshalb keine Replikation stattfindet Der Cache Loader ladt einfach nicht vorhandene Elemente aus dem Speicher und speichert nderungen wieder im Speicher Wird der Cache gestartet k nnen abh ngig vom preload Element bestimmte Daten vorab geladen werden so dass der Cache einen Warmstart hat 9 5 2 Replizierte Caches bei dem alle Knoten denselben Speicher verwenden Die folgende Abbildung zeigt zwei JBoss Cache Instanzen die sich denselben Backend Speicher teilen Ei fe Seer REPLICATION Abbildung 9 2 Zwei Nodes teilen sich einen Backend Speicher Beide Knoten haben einen Cache Loader der auf einen gemeinsam verwendeten Backend Speicher zugreift Dies k nnte beispielsweise ein freigegebenes Dateisystem sein mittels FileCacheLoader oder eine gemeinsam verwendete Datenbank Da beide Knoten auf denselben Speicher zugreifen ist eine Zustands bertragung beim Start nicht unbedingt notwendig menu UT Nat rlich ist es m
89. ication shutdown jmxManager unregisterAllMBeans cache stop 5 4 2 2 Befehlsorientierte Registrierung mit einer Konfigurationsinstanz Erzeugen Sie alternativ ein Configuration Objekt und bergeben dies an den CacheJmxWrapper Der Wrapper wird den Cache f r Sie erzeugen Configuration config buildConfiguration whatever it does CacheJmxWrapperMBean wrapper new CacheJmxwrapper config MBeanServer server getMBeanServer however you do it ObjectName on new ObjectName jboss cache service TreeCache server registerMBean wrapper on Call to wrapper create will build the Cache if one wasn t injected wrapper create wrapper start Now that it s built created and started get the cache from the wrapper Cache cache wrapper getCache use the cache on application shutdown wrapper stop wrapper destroy 5 4 2 3 JMX basiertes Deployment in JBoss AS JBoss AS 5 x Der Cache JmxWrapper ist ein POJO der Microcontainer kann also problemlos einen erzeugen Der Trick ist nun ihn dazu zu bringen Ihre Bean in JMX zu registrieren Spezifizieren Sie dazu die 28 Kapitel 5 Implementierung von JBoss Cache org jboss aop microcontainer aspects jmx JMX Annotation auf der Cache JmxWrapper Bean lt xml version 1 0 encoding UTF 8 gt lt deployment xmlns urn jboss bean deployer 2 0 gt lt First we create a Configuration object for the cache gt lt bean name E
90. idationInterceptor Invalidierungen Passivationinterceptor Passivierungen Txinterceptor Prepares Commits Rollbacks numberOfSyncsRegistered geschriebener Knoten Anzahl von gecachten Knoten die f r ung ltig erkl rt wurden Anzahl gecachter Knoten die passiviert wurden Anzahl von durch diesen Interzeptor durchgef hrten Transaktions prepare Operationen Anzahl von durch diesen Interzeptor durchgef hrten Transaktions commit Operationen Anzahl von durch diesen Interzeptor durchgef hrten Transaktions rollback Operationen Anzahl der beim Transaktionsmanager registrierten Synchronisationen deren Abschluss und Entfernung noch aussteht 13 2 JBoss MBean Benachrichtigungen Die folgende Tabelle zeigt die verf gbaren JMX Benachrichtigungen f r JBoss Cache sowie die zugeh rigen Cache Ereignisse Diese Benachrichtigungen k nnen ber das CacheJmxWrapper MBean empfangen werden Jede Benachrichtigung repr sentiert ein einzelnes von JBoss Cache ver ffentlichtes Ereignis und liefert Benutzerdaten die mit den Parametern des Ereignisses korrespondieren 122 Tabelle 13 2 JBoss Cache MBean Benachrichtigungen Benachrichtigungstyp org jboss cache CacheStarted org jboss cache CacheStopped org jboss cache NodeCreated org jboss cache NodeEvicted org jooss cache NodeLoaded org jooss cache NodeModifed org jboss cache NodeRemoved org jooss cache NodeVisited org jooss cache ViewChanged org j
91. igenschaften die von einer java util Properties Instanz gelesen werden k nnen Dieser Tag hat keine Attribute und die Inhalte dieses Tags werden von Properties load analysiert bergeordnetes Element Tabelle 12 32 Das lt loader gt Element Untergeordnete Elemente Bean quivalent IndividualCacheLoaderConfig setProperties Tabelle 12 35 Das lt singletonStore gt Element Das lt singletonStore gt Element Beschreibung Dieses Element konfiguriert den umgebenden Ubergeordnetes Element Untergeordnete Elemente Bean Aquivalent SingletonStoreConfig Tabelle 12 36 lt singletonStore gt Attribute lt singletonSto re gt Attribute Attribut Bean Feld PAT EEI Standard Beschreibung className Eine g ltige SingletonStoreCac Eine zu Klasse die im heLoader verwendende Klassenpfad Singleton Store verf gbar ist Wrapper Implementierung enabled enabled true false Falls true ist der Singleton Store Cache Loader aktiviert 104 Kapitel 12 Konfigurationsreferenzen Tabelle 12 37 Das lt customInterceptors gt Element Das lt customInterceptors gt Element Beschreibung Ubergeordnetes Element Untergeordnete Elemente Bean Aquivalent Tabelle 12 38 Das lt interceptor gt Element Das lt interceptor gt Element Beschreibung Ubergeordnetes Element Untergeordnete Elemente Bean Aquivalent Dieses Element erm glicht Ihnen das Definieren angepasster Interzeptoren
92. igurierte Cache Loader f r das Lesen aus dem Datenspeicher und das Schreiben in den Datenspeicher verwendet Wenn eine Eviction Richtlinie tatsachlich einen Knoten aus dem Cache raumt und Passivierung aktiviert ist wird eine Benachrichtigung ber die Passivierung des Knotens an die Cache Listener herausgegeben und der Knoten und dessen untergeordneten Elemente werden im Cache Loader Speicher gespeichert Wenn ein Benutzer versucht einen zuvor aus dem Cache ger umten Knoten abzurufen wird der Knoten aus dem Cache Loader Speicher in den speicherinternen Cache geladen sog lazy load Laden bei Bedarf Nachdem der Knoten und dessen untergeordneten Elemente geladen wurden werden diese aus dem Cache Loader entfernt und eine Benachrichtigung ber die Aktivierung des Knotens wird an die Cache Listener herausgegeben Um die Cache Passivierung Aktivierung zu aktivieren k nnen Sie passivation auf true setzen Die Standardeinstellung lautet false Wird Passivierung verwendet so wird nur der erste konfigurierte Cache Loader benutzt Alle anderen werden ignoriert 9 4 1 Cache Loader Verhalten mit aktivierter bzw deaktivierter Passivierung Ist Passivierung deaktiviert wird wann immer ein Element ver ndert hinzugef gt oder entfernt wird diese Ver nderung im Backend Speicher via dem Cache Loader persistiert Es gibt keinen direkten Zusammenhang zwischen Eviction und Cache Loading Wenn Sie Eviction nicht einsetzen ist der Inhalt des persis
93. il Da es sich hierbei um ein Passwort handelt gehen Sie vorsichtig damit um geben Sie diesen geheimen Schl ssel nicht weiter und binden Sie ihn nicht in in erzeugte Software ein cache s3 secure Der Standard lautet false Daten werden unverschl sselt ber das ffentliche Internet gesendet Setzen Sie es auf true um HTTPS zu verwenden Beachten Sie dass unverschl sselte Uploads und Downloads die CPU weniger beanspruchen cache s3 bucket Name des Buckets zur Speicherung von Daten Verwenden Sie f r unterschiedliche Caches die denselben Zugriffsschl ssel nutzen unterschiedliche Bucket Namen In der S3 Dokumentation finden Sie die Definition eines Buckets Der Standardwert lautet jboss cache cache s3 callingFormat Entweder PATH SUBDOMAIN oder VANITY In der S3 Dokumentation finden Sie Informationen Uber den Aufruf von Domains Der Standard lautet SUBDOMAIN cache s3 optimize Der Standard lautet false Falls true ersetzen put Map Operationen die an einem Fan gespeicherten Daten statt zu versuchen diese abzurufen und zusammenzuf hren Diese Option ist derzeit noch experimentell cache s3 parentCache Der Standard lautet true Setzen Sie diesen Wert auf false wenn 58 Kapitel 9 Cache Loader Sie mehrere Caches nutzen die denselben S3 Bucket verwenden die Ubergeordnete Knoten der Knoten entfernen die in anderen Caches erzeugt wurden Dies ist kein Ublicher Anwendungsfall JBoss Cache speichert Kn
94. inTimeToLive value 4000 gt lt region gt lt eviction gt lt Cache loaders If passivation is enabled state is offloaded to the cache loaders ONLY when evicted Similarly when the state is accessed again it is removed from the cache loader and loaded into memory Otherwise state is always maintained in the cache loader as well as in memory Set shared to true if all instances in the cluster use the same cache loader instance e g are talking to the same database gt lt loaders passivation false shared false gt lt preload gt lt node fqn org jboss gt lt node fqn org tempdata gt JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch lt preload gt lt a we can have multiple cache loaders which get chained gt lt loader class org jboss cache loader JDBCCacheLoader async true fetchPersistentState true ignoreModifications true purgeOnStartup true gt lt properties gt cache jdbc table name jbosscache cache jdbc table create true cache jdbc table drop true lt properties gt lt singletonStore enabled true class org jboss cache loader SingletonStoreCacheLoader gt lt properties gt pushStatewhenCoordinator true pushStatewhenCoordinatorTimeout 20000 lt properties gt lt singletonStore gt lt loader gt lt loaders gt lt Define custom interceptors All custom interceptors need to extend org jboss cache interceptors base Command
95. ion Platform 5 0 JBoss Cache Benutzerhandbuch Festplatte oder auf entfernte Cache Cluster und erm glichen das Passivieren wenn Caches nicht mehr gen gend Speicherplatz haben Dar ber hinaus erlauben Cache Loader es JBoss Cache sog Warmstarts durchzuf hren wobei speicherinterne Zust nde aus persistentem Speicher vorgeladen werden JBoss Cache wird mit einer Reihe von Cache Loader Implementierungen geliefert org jboss cache loader FileCacheLoader ein einfacher dateisystembasierter Cache Loader der Daten auf Festplatte persistiert Nicht transaktional und nicht sehr leistungsf hig aber eine sehr einfache L sung Wird haupts chlich eingesetzt zum Testen und ist nicht zum Produktionseinsatz empfohlen org jboss cache loader JDBCCacheLoader nutzt eine JDBC Verbindung zum Speichern von Daten Verbindungen sollten in einem internen Pool verwendet die c3p0 Pooling Bibliothek erzeugt und verwaltet werden oder von einer konfigurierten Datenquelle Die Datenbank mit der dieser Cache Loader verbindet kann entweder lokal oder entfernt sein org jboss cache loader BdbjeCacheLoader nutzt Oracle s BerkeleyDB dateibasierte transaktionale Datenbank zum Persistieren von Daten Transaktional und sehr performant aber eine m glicherweise einschr nkende Lizenz org jboss cache loader JdbmCacheLoader eine Open Source Alternative zur BerkeleyDB org jboss cache loader tcp TcpCacheLoader nutzt einen TCP Socket zum Persistieren org jbos
96. it der RuntimeConfig verwendet werden in der Sie mit Hilfe von RuntimeConfig setMuxChanne lFactory eine JGroups ChannelFactor y Instanz bergeben Wird dieses Attribut verwendet werden alle JGroups Elemente die Protokolle repr sentieren innerhalb dieses Tags ignoriert Stattdessen wird der JGroups Channel mit Hilfe 117 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch 118 der Ubergebenen Factory erzeugt Beachten Sie dass dies nicht zusammen mit dem configFile Attribut verwendet werden kann Kapitel 13 JMX Referenzen Kapitel 13 JMX Referenzen 13 1 JBoss Cache Statistiken Eine Fille von Informationen werden gesammelt und via JMX zur Uberwachung des Caches bereitgestellt Einige davon sind nachfolgend beschrieben 119 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Tabelle 13 1 JBoss Cache JMX MBeans DataContainerlmpl RPCManagerlmpl RegionManagerlmpl BuddyManager TransactionT able MVCCLockManager 120 Attribut Operationsname getNumberOfAttributes getNumberOfNodes printDetails localAddress String members String statistics Enabled replicationCount replicationFailures successRatio dumpRegions numRegions buddyGroup buddyGroups ParticipateIn numberOfRegisteredT ransactio ns transactionMap concurrencyLevel numberOfLocks Available numberOfLocksHeld testHashing String fq
97. le 12 21 Das lt default gt Element Das lt default gt Element Beschreibung Dieses Element definiert den standardm igen Eviction Bereich bergeordnetes Element Tabelle 12 19 Das lt eviction gt Element Untergeordnete Elemente Bean quivalent EvictionRegionConfig Kapitel 12 Konfigurationsreferenzen Tabelle 12 22 lt default gt Attribute lt default gt Attribute Attribut Bean Feld PAT EEK Standard Beschreibung algorithmClass evictionAlgorithmC Eine g ltige keiner Dieses Attribut onfig Klasse die im muss spezifiziert Klassenpfad werden falls verf gbar ist dieser Tag verwendet wird Beachten Sie dass Sie bei der befehlsorientierte n Konfiguration die dem Eviction Algorithmus entsprechende EvictionAlgor ithmConfig Datei benutzen sollten Wenn Sie beispielsweise LRUAlgorithm in XML verwenden w rden Sie befehlsorientiert eine Instanz von LRUAlgorithmc onfig nutzen actionPolicyCla evictionActionPolic Eine g ltige DefaultEvictionActi Die ss yClassName Klasse die im onPolicy Richtlinienklasse Klassenpfad der Eviction verf gbar ist Aktion definiert was geschehen soll wenn ein Knoten ger umt werden muss eventQueueSiz eventQueueSize Ganzzahl 200000 Die Gr e der e dynamisch abgegrenzten Eviction Ereignis Queue 97 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Tabelle 12 23 Das lt region gt Element Das lt region gt
98. ller Schnittstelle Die Marshaller Schnittstelle erweitert RocDispatcher Marshaller von JGroups Diese Schnittstelle hat zwei Hauptimplementierungen eine delegierende VersionAwareMarshaller und eine konkrete CacheMarshaller300 Der Marshaller kann durch Aufruf von CacheSPI getMarshaller bezogen werden und ist standardm ig der VersionAwareMarshaller Benutzer k nnen auch ihre eigenen Marshaller schreiben indem sie die Marshaller Schnittstelle implementieren oder die AbstractMarshaller Klasse erweitern und diese in Ihre Konfiguration mit Hilfe des Configuration setMarshallerClass Setters einf gen 7 5 2 VersionAwareMarshaller Wie der Name schon andeutet f gt dieser Marshaller beim Schreiben einen Versions Short am Anfang eines jeden Datenstroms hinzu so dass hnliche VersionAwareMarshaller Instanzen diesen Versions Short lesen k nnen und dadurch wissen an welche spezifische Marshaller Implementierung der Aufruf zu delegieren ist Beispielsweise ist CacheMarshaller200 der Marshaller f r JBoss 40 Kapitel 7 Architektur Cache 2 0 x JBoss Cache 3 0 x wird mit CacheMarshaller300 mit einem verbesserten Wire Protokoll ausgeliefert Der Einsatz eines VersionAwareMarshaller hilft dabei die Kompatibilitat von Wire Protokollen zwischen Nebenversionen zu bewahren und erlaubt gleichzeitig die Flexibilitat das Wire Protokoll zwischen Neben und Microversionen zu optimieren und zu verbessern 7 6 Klassenladen und Bereiche We
99. ltet me pessimistisch Zu verwendende optimistisch Knoten Sperrschema writeSkewChec writeSkewCheck true false false Legt fest ob auf k Write Skews hin berpr ft werden soll Wird nur 85 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch useLockStriping concurrencyLev 86 useLockStriping concurrencyLevel true false Jeder positive true 500 verwendet wenn nodeLockingSc heme auf mvcc und isolationLeve 1 auf REPEAT ABLE_RE AD gesetzt ist Siehe f r weitere Einzelheiten Legt fest ob Lock Striping angewendet wird Wird nur verwendet wenn nodeLockingSc heme auf mvcc gesetzt ist Lock Striping bietet in der Regel bessere Leistung und Speicherverbrauc h kann jedoch unter gewissen Umstanden gegenseitige Sperren verursachen wenn mehrere FONs auf dieselbe gemeinsam verwendete Sperre verweisen Durch Erh hen Ihrer Nebenl ufigkeitse bene kann dieses Problem gelindert werden vollst ndig abstellen l sst es sich jedoch nur durch Deaktivieren von Lock Striping Spezifiziert die Kapitel 12 Konfigurationsreferenzen el ganzzahlige Wert Anzahl 0 ist unzul ssig gemeinsamer Sperren die f r erhaltene Schreibsperren zu verwenden sind Wird nur verwendet wenn nodeLockingSc heme auf mvcc gesetzt ist Siehe f r n here Erl uterungen Tabelle 12 5 Das lt transaction gt Element Das lt transaction gt Element Beschre
100. m ssen wie z B jdbm jar abh ngig von Ihrer Cache Konfiguration Nachfolgend sehen Sie ein Beispiel einer beans xm1 Datei Im server all deploy Verzeichnis einer JBoss AS 5 Installation finden Sie noch einige weitere Beispiele 25 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch lt xml version 1 0 encoding UTF 8 gt lt deployment xmlns urn jboss bean deployer 2 0 gt lt First we create a Configuration object for the cache gt lt bean name ExampleCacheConfig class org jboss cache config Configuration gt lt Externally injected services gt lt property name runtimeConfig gt lt bean class org jboss cache config RuntimeConfig gt lt property name transactionManager gt lt inject bean jboss service TransactionManager property TransactionManager gt lt property gt lt property name muxChannelFactory gt lt inject bean JChannelFactory gt lt property gt lt bean gt lt property gt lt property name multiplexerStack gt udp lt property gt lt property name clusterName gt Example EntityCache lt property gt lt property name isolationLevel gt REPEATABLE_READ lt property gt lt property name cacheMode gt REPL_SYNC lt property gt lt property name stateRetrievalTimeout gt 15000 lt property gt lt property name syncReplTimeout gt 20000 lt property gt lt property name lockAcquisitionTimeout gt 15000 lt property gt lt property
101. mentierungen Die derzeit mit JBoss Cache mitgelieferten Implementierungen sind 9 3 1 Dateibasierte Cache Loader JBoss Cache wird mit mehreren Cache Loadern geliefert die das Dateisystem als Datenspeicher nutzen Sie alle erfordern dass das lt loader gt lt properties gt Konfigurationselement eine location Eigenschaft enth lt die auf ein Verzeichnis verweist das als persistenter Speicher verwendet werden soll z B location tmp myDataStore Dies wird haupts chlich zu Testzwecken verwendet und ist nicht f r den Einsatz in Produktionsumgebungen empfohlen FileCacheLoader eine einfache dateisystembasierte Implementierung Standardm ig pr ft dieser Cache Loader hinsichtlich m glicher Probleme mit der Portabilit t von Zeichen in Speicher oder Baumknotennamen z B wegen ung ltiger Zeichen und gibt Warnmeldungen aus Diese berpr fung kann deaktiviert werden indem Sie die check character portability Eigenschaft zum lt properties gt Element hinzuf gen und diese auf false einstellen z B check character portability false Der FileCacheloader hat einige wesentliche Nachteile die ihn f r den Einsatz in einer Produktionsumgebung nur eingeschr nkt brauchbar machen M chten Sie ihn dennoch in einer Produktionsumgebung einsetzen sollten Sie sich dieser Einschr nkungen unbedingt bewusst sein und entsprechend Vorsicht walten lassen Aufgrund der Art und Weise wie der FileCacheLoader eine Baumstruktur auf der Festplatte repr
102. mit Hilfe des 20 Kapitel 3 Konfiguration Djbosscache config schemaLocation ur1 Parameters spezifizieren Standardm ig werden Konfigurationsdateien jedoch anhand des JBoss Cache Konfigurationsschemas berpr ft das in der jbosscache core jar enthalten ist oder unter http ww jboss org jbosscache jbosscache config 3 0 xsd Die meisten XML Bearbeitungstools k nnen mit diesem Schema verwendet werden um sicherzustellen dass die von Ihnen erstellte Konfigurationsdatei fehlerfrei und g ltig ist 3 2 3 Befehlsorientierte Konfiguration Zus tzlich zur XML basierten Konfiguration oben kann die Configuration auch befehlsorientiert erzeugt werden unter Verwendung der einfachen Eigenschafts Mutators die von Configuration und deren Komponenten offen gelegt werden Bei der Erzeugung des Configuration Objekts wird dieses mit den JBoss Cache Standardwerten voreingestellt und kann f r einen schnellen Start unver ndert eingesetzt werden Configuration config new Configuration config setTransactionManagerLookupClass GenericTransactionManagerLookup class getName config setIsolationLevel IsolationLevel READ_COMMITTED config setCacheMode CacheMode LOCAL config setLockAcquisitionTimeout 15000 CacheFactory factory new DefaultCacheFactory Cache cache factory createCache config Selbst das recht einfache Beispiel oben bedeutet ziemlich m hseliges Programmieren weshalb die XML basierte Konfiguration bevorzugt ein
103. n Beschreibung Gibt die Anzahl aller Attribute in allen Knoten im Datencontainer aus Gibt die Anzahl an Knoten im Datencontainer aus Zeigt Details des Datencontainers an Stringdarstellung der lokalen Adresse Stringdarstellung der Cluster Ansicht Ob RPC Statistiken gesammelt werden Anzahl erfolgreicher Replikationen Anzahl fehlgeschlagener Replikationen Erfolgsrate von RPC Aufrufen Auszug einer Stringdarstellung aller registrierten Bereiche einschlie lich Eviction Bereiche samt Gr e zugeh riger Ereignis Queues Anzahl registrierter Bereiche Eine Stringdarstellung der Buddy Gruppe des Caches Stringdarstellungen aller Buddy Gruppen an denen der Cache teilnimmt Anzahl registrierter laufender Transaktionen Eine Stringdarstellung aller derzeit registrierten Transaktionen die mit internen GlobalTransaction Instanzen verkn pft sind Die konfigurierte Nebenl ufigkeitsebene Anzahl nicht verwendeter Sperren im gemeinsam verwendeten Sperr Pool Anzahl verwendeter Sperren im gemeinsam verwendeten Sperr Pool Testet die Verteilung von Sperren in den Fans F r einen ActivationInterceptor Cacheloaderlnterceptor CacheMgmtinterceptor CacheStorelnterceptor Aktivierungen CacheLoaderLoads CacheLoaderMisses Hits Misses Stores Evictions NumberOfAttributes NumberOfNodes ElapsedT ime TimeSinceReset AverageReadT ime AverageWriteT ime HitMiss Ratio Read
104. n verschoben wird Methoden m ssen einen Parametertyp akzeptieren der von NodeMovedEvent zuweisbar ist NodeVisited derart annotierte Methoden erhalten eine Benachrichtigung wenn ein Knoten gestartet wird Methoden m ssen einen Parametertyp akzeptieren der von NodeVisitedEvent zuweisbar ist NodeLoaded derart annotierte Methoden erhalten eine Benachrichtigung wenn ein Knoten von einem CacheLoader geladen wird Methoden m ssen einen Parametertyp akzeptieren der von NodeLoadedEvent zuweisbar ist NodeEvicted derart annotierte Methoden erhalten eine Benachrichtigung wenn ein Knoten aus dem Speicher verworfen wird Methoden m ssen einen Parametertyp akzeptieren der von NodeEvictedEvent zuweisbar ist NodeInvalidated derart annotierte Methoden erhalten eine Benachrichtigung wenn ein Knoten aus dem Speicher aufgrund eines entfernten Invalidierungsereignisses verworfen wird Methoden m ssen einen Parametertyp akzeptieren der von NodeInvalidatedEvent zuweisbar ist NodeActivated derart annotierte Methoden erhalten eine Benachrichtigung wenn ein Knoten aktiviert wird Methoden m ssen einen Parametertyp akzeptieren der von NodeActivatedEvent zuweisbar ist NodePassivated derart annotierte Methoden erhalten eine Benachrichtigung wenn ein Knoten passiviert wird Methoden m ssen einen Parametertyp akzeptieren der von NodePassivatedEvent zuweisbar ist TransactionRegistered derart annotierte Methoden erhalten eine
105. n einen Zustands Reader und einen OutputStream an einen Zustands Writer OutputStream und InputStream Abstraktionen erm glichen die Zustands bertragung in kleineren Byte Segmenten haben also geringere Speicheranforderungen Falls beispielsweise der Applikationszustand als Baum mit einer Gesamtgr e von 1 GB repr sentiert ist muss nicht ein 1 GB gro es Byte Array bertragen werden sondern wird durch Streaming der Zustand stattdessen als Segmente von N Bytes Gr e bertragen wobei N benutzerdefinierbar ist Byte Array und Streaming basierte Zustands bertragung sind vollst ndig API transparent austauschbar und werden statisch konfiguriert durch eine standardm ige Cache Konfigurations XML Datei Entnehmen Sie bitte der JGroups Dokumentation wie Sie von einer Art bertragung zur anderen wechseln 8 3 3 Vollst ndige und teilweise Zustands bertragung Ist entweder in memory speicherinterne oder persistente Zustands bertragung aktiviert so wird zu verschiedenen Zeiten eine vollst ndige oder teilweise Zustands bertragung durchgef hrt je nachdem auf welche Weise der Cache verwendet wird Vollst ndige Zustands bertragung bedeutet die bertragung des gesamten Baumzustandes d h des Wurzelknotens und s mtlicher Knoten darunter Bei einer teilweisen Zustands bertragung wird nur ein Teil des Baums bertragen d h ein Knoten an einem bestimmten Fan und alle Knoten darunter Wenn die speicherinterne oder die persiste
106. nKeyName Dies ist der Knoten Schl sselname der im Eviction Algorithmus verwendet wird Der Konfigurationsstandard lautet expiration maxNodes Dies ist die maximale in diesem Bereich gestattete Anzahl von Knoten 0 bedeutet sofortigen Ablauf 1 bedeutet keine Beschr nkung Das folgende Listing zeigt wie das Verfallsdatum gekennzeichnet wird und wie die Richtlinie angewendet wird Cache cache DefaultCacheFactory createCache Fan fqni Fan fromString node 1 Long future new Long System currentTimeMillis 2000 sets the expiry time for a node cache getRoot addChild fqn1 put ExpirationCconfiguration EXPIRATION_KEY future assertTrue cache getRoot hasChild fqn1 Thread sleep 5000 after 5 seconds expiration completes assertFalse cache getRoot hasChild fqn1 Beachten Sie dass die Verfallszeit von Knoten nur berpr ft wird wenn der Bereichsmanager alle in wakeUpIntervalSeconds festgelegten Sekunden aufwacht die Eviction kann also ein paar Sekunden sp ter als angegeben erfolgen 10 4 6 ElementSizeAlgorithm Eviction basierend auf der Anzahl von Schl ssellWert Paaren in einem Knoten org jboss cache eviction ElementSizeAlgorithm steuert die Eviction basierend auf der Anzahl von Schl ssel Wert Paaren in einem Knoten Die zuletzt verwendeten Knoten werden mit dieser Richtlinie als erste ger umt Sie besitzt folgende Konfigurationsparameter 72 maxNodes Dies ist die maximale in diesem
107. nachrichtigungen f r eine Liste der Benachrichtigungen die Sie mit Hilfe des CacheJmxWrapper empfangen k nnen Nachfolgend sehen Sie ein Beispiel wie in einer JBoss Applikationsserver Umgebung befehlsorientiert Cache Benachrichtigungen empfangen werden k nnen In diesem Beispiel verwendet der Client einen Filter um zu bestimmen welche Ereignisse von Interesse sind MyListener listener new MyListener NotificationFilterSupport filter null get reference to MBean server Context ic new InitialContext MBeanServerConnection server MBeanServerConnection ic lookup jmx invoker RMIAdaptor get reference to CacheMgmtInterceptor MBean String cache_service jboss cache service TomcatClusteringCache ObjectName mgmt_name new ObjectName cache_service configure a filter to only receive node created and removed events filter new NotificationFilterSupport filter disableAllTypes filter enableType CacheNotificationBroadcaster NOTIF_NODE_CREATED filter enableType CacheNotificationBroadcaster NOTIF_NODE_REMOVED register the listener with a filter leave the filter null to receive all cache events server addNotificationListener mgmt_name listener filter null on completion of processing unregister the listener server removeNotificationListener mgmt_name listener filter null Folgendes ist die einfache Implementierung des im vorherigen Beispiel verwendeten Benachrichtigungs
108. name oder ein Eingabe Stream zur Analyse einer Configuration von XML zur Verf gung gestellt werden bevor ein Cache erzeugt werden kann Die folgenden Abschnitte beschreiben das n tige Vorgehen 3 2 1 Analyse einer XML basierten Konfigurationsdatei Der bequemste Weg zur Konfiguration des JBoss Cache ist mittels einer XML Datei Die JBoss Cache Distribution enth lt eine Reihe von Konfigurationsdateien f r h ufige Anwendungsf lle Wir empfehlen Ihnen diese Dateien als Ausgangspunkt zu verwenden und entsprechend Ihren Bed rfnissen anzupassen Das einfachste Beispiel einer Konfigurations XML Datei ein Cache zur Ausf hrung im LOCAL Modus sieht folgenderma en aus lt xml version 1 0 encoding UTF 8 gt lt jbosscache xmins xsi http www w3 org 2001 XMLSchema instance xmlns urn jboss jbosscache core config 3 1 gt lt jbosscache gt Diese Datei verwendet sinnvolle Standardwerte f r die Isolationsebene Zeit berschreitungen f r Beispiel einer XML Konfiqurationsdatei Abschnitt dieses Handbuchs zusammen mit Abschnitt 12 2 a 3 2 2 berpr fen von Konfigurationsdateien Standardm ig berpr ft JBoss Cache Ihre XML Konfigurationsdatei anhand eines XML Schemas und gibt eine Ausnahme aus falls die Konfiguration ung ltig ist Dies kann mit dem Djbosscache config validate false JVM Parameter au er Kraft gesetzt werden Alternativ k nnen Sie Ihr eigenes Schema das zur berpr fung herangezogen werden soll
109. nen Abschnitt wurde die Fqn Klasse schon in den Beispielen verwendet lassen Sie uns nun n her auf diese Klasse eingehen Ein vollqualifizierter Name fully qualified name oder Fqn umfasst eine Liste mit Namen die einen Pfad zu einem bestimmten Speicherort in der Baumstruktur des Caches darstellen Die Elemente in der Liste sind normalerweise Strings k nnen grunds tzlich aber jede Art von Objekt oder eine Mischung verschiedener Typen sein Dieser Pfad kann absolut sein d h relativ zum Root Knoten oder relativ zu einem beliebigen Knoten im Cache Der Dokumentation f r jeden API Aufruf der Fqn verwendet k nnen Sie entnehmen ob die API einen relativen oder absoluten Fqn erwartet Die Fqn Klasse liefert eine F lle von Factory Methoden siehe Javadoc f r alle M glichkeiten Sehen Sie im Folgenden die am h ufigsten verwendeten Herangehensweisen zur Erzeugung eines Fan Create an Fan pointing to node Joe under parent node Smith under the people section of the tree Parse it from a String Fan abc Fqn fromString people Smith Joe Here we want to use types other than String Fqn acctFqn Fqn fromElements accounts NY new Integer 12345 Beachten Sie dass Fan f Fqn fromElements a b c dasselbe ist wie Fan f Fan fromString a b c 2 5 Stoppen und Zerst ren des Caches Es empfiehlt sich Ihren Cache zu stoppen und zu zerst ren sobald Sie ihn nicht mehr brauchen insbesondere
110. nen nicht einen Cache Loader als shared definieren und gleichzeitig singletonStore aktiviert haben Der Standardwert f r enabled lautet false Optional k nnen Sie innerhalb des singletonStore Elements ein class Element definieren das die Implementierungsklasse spezifiziert die die Singleton Store Funktionalit t liefert Diese Klasse muss org jboss cache loader AbstractDelegatingCacheLoader erweitern und ist falls nicht vorhanden standardm ig org jboss cache loader SingletonStoreCacheLoader Das properties Unterelement definiert Eigenschaften die es erlauben das Verhalten der Klasse zu ver ndern die die Singleton Store Funktionalit t bereitstellt Standardm ig wurden die pushStatewhenCoordinator und pushStatewhenCoordinatorTimeout Eigenschaften definiert aber es k nnen bei Bedarf mehr hinzugef gt werden durch die benutzerdefinierte Klasse die Singleton Store Funktionalit t bereitstellt pushStatewhenCoordinator erlaubt das aktive Schreiben des speicherinternen Zustands in den Cache Speicher wenn ein Knoten aufgrund einer Ver nderung in der Cluster Topologie und der Neuwahl eines Koordinators selbst zum Koordinator wird Dies kann sehr hilfreich sein in Situationen in denen der Koordinator abst rzt und ein neuer Koordinator erst nach einer gewissen Verz gerung gew hlt wird Falls diese Eigenschaft auf auf false gesetzt w re und der Cache aktualisiert wird w rden diese nderungen w hrend dieser Zeit nie persis
111. ng einer Datei deren Name auf jboss beans xml endet Ein POJO Dienst ist ein Dienst dessen Implementierung via eines Plain Old Java Object erfolgt d h eine einfache Java Bean die nicht zur Implementierung besonderer Schnittstellen oder zur Erweiterung bestimmter Superklassen erforderlich ist Ein Cache ist ein POJO Dienst und alle Komponenten in einer Configuration sind ebenfalls POJOs weshalb die Implementierung eines Caches auf diese Weise nahe liegt Die Implementierung des Caches erfolgt mit Hilfe des JBoss Microcontainers der das Herzst ck von JBoss AS bildet JBoss Microcontainer ist ein hochentwickeltes IOC Framework vergleichbar mit Spring Eine jboss beans xm1 Datei ist im Grunde genommen ein Deskriptor der dem IOC Framework mitteilt wie die verschiedenen Beans aus denen ein POJO Dienst besteht zusammengesetzt werden F r jede konfigurierbare Option die durch die Configuration Komponenten offengelegt wird muss ein Getter Setter in der Konfigurationsklasse definiert werden Dies ist notwendig damit der JBoss Microcontainer auf typische IOC Art diese Methoden aufrufen kann wenn die entsprechenden Eigenschaften konfiguriert wurden Sie sollten sicherstellen dass die jbosscache core jar und jgroups jar Bibliotheken im lib Verzeichnis Ihres Servers vorhanden sind Dies ist normalerweise der Fall wenn Sie JBoss AS in der all Konfiguration ausf hren Beachten Sie dass Sie gegebenenfalls notwendige optionale JARs einf gen
112. nmitgliedern aktiviert Auch die teilweise Zustands bertragung nach einem Aufruf zur Bereichsaktivierung unterscheidet sich etwas im Fall der Buddy Replikation Statt den Teilzustand von einer Cache Instanz abzufragen und alle Instanzen auszuprobieren bis eine antwortet fordert bei der Buddy Replikation die Instanz die einen Bereich aktiviert den Teilzustand von jeder Instanz an der sie als Backup dient 8 3 4 Transiente in memory oder speicherinterne und persistente Zustands bertragung Der erhaltene und integrierte Zustand kann aus zwei grundlegenden Typen bestehen 1 Transienter auch in memory oder speicherinterner Zustand Bestehend aus dem tats chlichen speicherinternen Zustand einer anderen Cache Instanz die Inhalte verschiedener speicherinterner Knoten in dem Cache der den Zustand liefert werden serialisiert und bertragen der Empf nger deserialisiert die Daten erstellt entsprechende Knoten in seinem eigenem speicherinternen Baum und f llt diese mit den bertragenen Daten In memory Zustands bertragung wird durch Einstellung des FetchInMemoryState Konfigurationsattributs des Caches auf true aktiviert 2 Persistenter Zustand Gilt nur wenn ein nicht gemeinsam verwendeter Cache Loader verwendet wird In dem Cache der den Zustand liefert wird der gespeicherte Zustand deserialisiert und bertragen der Empf nger leitet die Daten an seinen eigenen Cache Loader weiter der diese Daten im persistenten Sp
113. nn die in der Applikation implementierten Applikationen zum Clustern von Zustanden von Applikationsservern verwendet werden neigen sie dazu Instanzen von Objekten im Cache oder in einem HttpSession Objekt abzulegen die spezifisch fur ihre Applikation sind und die repliziert werden m ssten Es ist blich dass Applikationsserver separate ClassLoader Instanzen f r jede implementierte Applikation zuweisen die JBoss Cache Bibliotheken jedoch vom ClassLoader des Applikationsservers referenziert werden Um erfolgreich Marshalling und Unmarshalling von Objekten von solchen Klassenladern durchzuf hren nutzen wir ein Konzept namens Bereiche auch Regionen Ein Bereich ist ein Teil des Caches der einen gemeinsamen Klassenlader verwendet Bereiche dienen auch anderen Zwecken siehe Ein Bereich wird erzeugt mit Hilfe der Cache getRegion Fqn fqn boolean createIfNotExists Methode die eine Implementierung der Region Schnittstelle zur ckgibt Sobald ein Bereich eingerichtet wurde kann ein Klassenlader f r diesen Bereich eingestellt werden und der Bereich kann aktiviert bzw deaktiviert werden Standardm ig sind Bereiche aktiv es sei denn das InactiveOnStartup Konfigurationsattribut ist auf true gesetzt 41 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Kapitel 8 Cache Modi und Clustering Dieses Kapitel behandelt Aspekte rund um das Clustering von JBoss Cache 8 1 Cache Replikationsmodi Der JBoss Cache ka
114. nn entweder lokal eigenstandig oder geclustert konfiguriert werden Falls in einem Cluster kann der Cache zur Replikation oder zur Invalidierung von Anderungen konfiguriert werden Eine ausf hrliche Erl uterung diesbez glich folgt 8 1 1 Lokaler Modus Lokale Caches schlie en sich keinem Cluster an und kommunizieren nicht mit anderen Knoten in einem Cluster Die Abh ngigkeit von der JGroups Bibliothek besteht nach wie vor obwohl kein JGroups Channel gestartet wird 8 1 2 Replizierte Caches Replizierte Caches replizieren alle nderungen an einige oder alle anderen Cache Instanzen im Cluster Replikation kann entweder nach jeder nderung stattfinden keine Transaktionen oder Batches oder aber nach Transaktions bzw Batch Ende Die Replikation kann synchron oder asynchron erfolgen Die Verwendung der jeweiligen Optionen ist abh ngig von der Applikation Synchrone Replikation sperrt den Aufrufer z B nach einem put bis die nderungen erfolgreich auf allen Knoten im Cluster repliziert wurden Asynchrone Replikation f hrt die Replikation im Hintergrund durch das put kehrt sofort zur ck JBoss Cache bietet auch eine Replikationswarteschlange wo nderungen periodisch repliziert werden d h in bestimmten Intervallen oder wenn die Gr e der Warteschlange eine bestimmte Anzahl von Elementen berschreitet oder eine Kombination aus beidem Eine Replikationswarteschlange bietet eine sehr viel bessere Leistung denn die eigen
115. nt Das lt buddy gt Element Beschreibung Ist dieser Tag vorhanden wird der Zustand nicht ber den gesamten Cluster repliziert Stattdessen wird Buddy Replikation eingesetzt um auf ausgew hlten Cache Instanzen Backups zu bewahren Siehe Abschnitt 8 1 2 2 Buddy nur dann verwendet wird wenn der Clustering Modus replication ist nicht aber bei invalidation Ubergeordnetes Element Untergeordnete Elemente Bean Aquivalent BuddyReplicationConfig Tabelle 12 49 lt buddy gt Attribute lt buddy gt Attribute Attribut Bean Feld TAEI Standard Beschreibung true false Falls true ist die Buddy Replikation aktiviert communicationT buddyCommunicat positive Ganzzahl 10000 Dies ist die imeout ionT imeout maximale Zeit in Millisekunden die auf Kommunikation zur Buddy Gruppenorganisat ion von Buddy Caches gewartet wird poolName buddyPoolName String Dies wird als Mittel eingesetzt um Cache Instanzen zu identifizieren und um Hinweise an die Algorithmen zur Buddy Replikation zu geben Mehr dazu im 113 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Tabelle 12 50 Das lt dataGravitation gt Element Das lt dataGravitation gt Element Beschreibung Dieser Tag konfiguriert wie Datengravitation Ubergeordnetes Element Untergeordnete Elemente Bean Aquivalent BuddyReplicationConfig 114 Tabelle 12 51 lt dataGravitation gt Attribute lt dataGravi
116. nt r ge xmins xsi http www w3 org http www w3 org Definiert die XML 2001 XMLSchema 2001 XMLSchema Schemainstanz instance instance f r die Konfiguration Tabelle 12 3 Das lt locking gt Element Das lt locking gt Element Beschreibung Dieses Element spezifiziert das Sperrverhalten des Caches Ubergeordnetes Element Untergeordnete Elemente Bean Aquivalent Configuration Kapitel 12 Konfigurationsreferenzen Tabelle 12 4 lt locking gt Attribute lt locking gt Attribute Attribut Bean Feld FAN ELITE Standard Beschreibung isolationLevel isolationLevel READ_COMMITT REPEATABLE RE Die f r ED AD Transaktionen REPEAT ABLE_RE verwendete AD lsolationsebene lockParentForC lockParentForChil true false false Legt fest ob hildInsertRemov dinsertRemove bergeordnete e Knoten gesperrt werden wenn untergeordnete Knoten eingef gt oder entfernt werden Dies kann auch je Knoten konfiguriert werden siehe Node setLockF orChildInsert Remove lockAcquisition lockAcquisitionTim Jeder positive 10000 Zeitin Timeout eout dynamisch Long Wert Millisekunden die ein Thread versucht eine Sperre zu erhalten In der Regel wird eine TimeoutExcept ion ausgegeben wenn in dieser Zeit keine Sperre erhalten werden kann Kann f r einzelne Aufrufe mittels Option setLoc kAcquisitionT imeout au er Kraft gesetzt werden nodeLockingSc nodelockingSche mvcc mvcc Spezifiziert das heme vera
117. nte Zustands bertragung aktiviert ist erfolgt die Zustands bertragung zu folgenden Zeiten 1 Erstmalige Zustands bertragung Diese erfolgt wenn der Cache erstmals gestartet wird als Teil der Verarbeitung der start Methode Es handelt sich um eine vollst ndige Zustands bertragung Der Zustand wird von der am l ngsten laufenden Cache Instanz abgerufen H Kommt es beim Empfang oder bei der Integration des Zustands zu einem Problem so startet der Cache nicht Die erstmalige Zustands bertragung erfolgt es sei denn a Die InactiveOnStartup Eigenschaft des Caches ist true Diese Eigenschaft wird in Verbindung mit bereichsbasiertem Marshalling verwendet mehr dazu finden Sie weiter unten b Buddy Replikation wird verwendet Weiter unten finden Sie weitere Informationen zur Zustands bertragung mit Buddy Replikation 2 Teilweise Zustands bertragung nach Bereichsaktivierung Wenn bereichsbasiertes Marshalling verwendet wird muss die Applikation einen spezifischen Klassenlader beim Cache registrieren Dieser Klassenlader wird zum Unmarshalling des Zustands f r einen bestimmten Bereich Unterbaum des Caches verwendet Nach der Registrierung ruft die Applikation cache getRegion fqn true activate auf was die teilweise Zustands bertragung des relevanten Unterbaums iniziiert Diese Anfrage wird zun chst an die lteste Cache Instanz im Cluster gestellt Falls diese Instanz jedoch mit keinem Zustand antwortet wird die Anfrage der
118. nterval 30000 min_interval 10000 gt lt FD_SOCK gt lt FD timeout 10000 max_tries 5 shun true gt lt VERIFY_SUSPECT timeout 1500 gt lt pbcast NAKACK use_mcast_xmit false gc_lag 0 retransmit_timeout 300 600 1200 2400 4800 discard_delivered_msgs true gt lt UNICAST timeout 300 600 1200 2400 3600 gt lt pbcast STABLE stability _delay 1000 desired_avg_gossip 50000 max_bytes 400000 gt lt pbcast GMS print_local_addr true join_timeout 5000 shun false view_bundling true view_ack_collection_timeout 5000 gt lt FRAG2 frag_size 60000 gt lt pbcast STREAMING_STATE_TRANSFER use_reading_thread true gt lt pbcast FLUSH timeout 0 gt gt lt jgroupsConfig gt lt clustering gt lt Eviction configuration WakeupInterval defines how often the eviction thread runs in milliseconds means the eviction thread will never run gt lt eviction wakeUpInterval 500 gt lt default algorithmClass org jboss cache eviction LRUAlgorithm eventQueueSize 200000 gt lt property name maxNodes value 5000 gt lt property name timeToLive value 1000 gt lt default gt lt region name org jboss data1 gt lt property name timeToLive value 2000 gt lt region gt lt region name org jboss data2 algorithmClass org jboss cache eviction FIFOAlgorithm eventQueueSize 100000 gt lt property name maxNodes value 3000 gt lt property name m
119. okumentation finden Sie Anweisungen dazu wie auf MBeans die im MBean Container eines Servers laufen zugegriffen wird Zus tzlich kann mit Hilfe des jconsole Tools Ihres JDKs auf JBoss Cache MBeans zugegriffen werden wenn sie in einer Umgebung au erhalb eines Servers laufen L uft ein eigenst ndiger Cache au erhalb eines Applikationsservers k nnen Sie wie folgt auf die MBeans des Caches zugreifen 1 Setzen Sie die Systemeigenschaft Dcom sun management jmxremote beim Start der JVM in der der Cache laufen soll 2 Sobald die JVM l uft starten Sie das jeonsole Dienstprogramm das sich in JDK s bin Verzeichnis befindet 3 Wenn das Dienstprogramm geladen ist k nnen Sie Ihre JVM w hlen und sich damit verbinden Die JBoss Cache MBeans sind im MBeans Fenster verf gbar 32 Kapitel 5 Implementierung von JBoss Cache Beachten Sie dass das jconsole Dienstprogramm sich automatisch als Listener fur Cache Benachrichtigungen registriert wenn es mit einer JVM verbunden wird die JBoss Cache Instanzen ausf hrt 33 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Kapitel 6 Versionskompatibilitat und Interoperabilitat 6 1 API Kompatibilit t Innerhalb einer Hauptversion sollten JBoss Cache Releases kompatibel und interoperabel sein Kompatibel in dem Sinne dass es m glich sein sollte eine Anwendung von einer Version zu einer anderen durch Austauschen der JARs zu aktualisieren Interoperabel in dem
120. oneinander getrennt enth lt und bergeben diesen an CacheLoaderCo nfig setPrelo ad Tabelle 12 32 Das lt loader gt Element Das lt loader gt Element Beschreibung Dieses Element definiert einen Cache Loader Es k nnen mehrere Elemente verwendet werden um Cache Loader Ketten zu erzeugen Ubergeordnetes Element Tabelle 12 27 Das lt loaders gt Element Untergeordnete Elemente Bean quivalent IndividualCacheLoaderConfig 102 Kapitel 12 Konfigurationsreferenzen Tabelle 12 33 lt loader gt Attribute lt loader gt Attribute Attribut Bean Feld PATEE Standard Beschreibung className Eine g ltige keiner Eine zu Klasse die im verwendende Klassenpfad Cache Loader verf gbar ist Implementierung true false Alle Ver nderungen an diesem Cache Loader erfolgen asynchron auf einem separaten Thread fetchPersistent fetchPersistentSta true false Wenn ein Cache State te startet rufe den persistenten Zustand von den Cache Loadern anderer Caches im Cluster ab Nur ein Loader Element darf dies auf true setzen Zudem ist dies nur dann sinnvoll wenn der vorhanden ist purgeOnStartup purgeOnStartup true false Bereinigt diesen Cache Loader beim Start 103 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Tabelle 12 34 Das lt properties gt Element Das lt properties gt Element Beschreibung Dieses Element enth lt eine Reihe von E
121. onflikten sog Dirty Reads da alle Schreibvorg nge asynchron durchgef hrt werden und es daher unm glich ist zu garantieren wann und ob ein Schreibvorgang erfolgreich abgeschlossen wird Bei der Einstellung des async Elements auf true sollte dies ber cksichtigt werden ignoreModifications legt fest ob write Methoden zum spezifischen Cache Loader weitergereicht werden In manchen Situationen sollten sich transiente Applikationsdaten nur in einem dateibasierten Cache Loader auf demselben Server wie der speicherinterne Cache befinden zum Beispiel mit einem weiteren gemeinsam verwendeten JDBCCacheLoader der von allen Servern im Netzwerk verwendet wird Dieses Feature gestattet es Ihnen in den lokalen Datei Cache Loader zu schreiben aber nicht in den gemeinsamen JDBCCacheLoader Standardeinstellung dieser Eigenschaft ist false so dass Schreibvorg nge an alle konfigurierten Cache Loader weitergereicht werden purgeOnStatup leert den angegebenen Cache Loader falls ignoreModifications auf false eingestellt ist wenn dieser startet shared zeigt an dass dieser Cache Loader von verschiedenen Cache Instanzen gemeinsam verwendet wird z B wenn alle Instanzen in einem Cluster dieselben JDBC Einstellungen nutzen um mit 51 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch derselben entfernten Datenbank zu kommunizieren Die Einstellung auf true verhindert wiederholte unn tige Schreibvorg nge derselben Daten
122. ooss cache NodeActivated org jboss cache NodeMoved org jboss cache NodePassivate d Benachrichtigungsdaten String cache service name String cache service name String fqn boolean isPre boolean isOriginLocal String fqn boolean isPre boolean isOriginLocal String fqn boolean isPre String fqn boolean isPre boolean isOriginLocal String fqn boolean isPre boolean isOriginLocal String fqn boolean isPre String view String fqn String fromFgn String toFqn boolean isPre String fqn Kapitel 13 JMX Referenzen CacheListener Ereignis CacheStarted CacheStopped NodeCreated NodeEvicted NodeLoaded NodeModifed NodeRemoved NodevVisited ViewChanged NodeActivated NodeMoved NodePassivated 123
123. oseManagementStatistics false so wird verhindert dass der CacheMgmtInterceptor in den Interzeptorstapel des Caches eingef gt wird wenn der Cache gestartet wird Wenn ein CacheJmxWrapper bei JMX registriert ist stellt der Wrapper zudem sicher dass f r jeden Interzeptor und jede Komponente der die Statistiken offenlegt eine MBean in JMX registriert ist Beachten Sie dass falls der Cache JmxWrapper nicht in JMX registriert ist auch die Interz eptor MBeans nicht registriert werden Die JBoss Cache 1 4 Releases enthielten Code der versuchte einen MBeanServer Zu finden und bei diesem automatisch die Interzeptor MBeans Zu registrieren Fur JBoss Cache 2 x haben wir entschieden dass diese Art der Discovery der JMX Umgebung Uber den normalen Rahmen einer Caching Bibliothek hinaus geht weshalb wir diese Funktionalit t nunmehr entfernt haben Verwaltungs Tools k nnen anschlie end auf diese MBeans zugreifen um die Statistiken auszuwerten Statistiken behandelt 30 Kapitel 5 Implementierung von JBoss Cache 5 4 4 Erhalt von JMX Benachrichtigungen JBoss Cache Benutzer k nnen einen Listener zum Empfang von Cache Ereignissen registrieren wie im Benutzer k nnen alternativ die Informationsinfrastruktur der Cache Verwaltung nutzen um diese Ereignisse ber JMX Benachrichtigungen zu empfangen Sie k nnen Benachrichtigungen f r Cache Ereignisse erhalten indem Sie ein NotificationListener f r den CacheJmxWrapper registrieren Be
124. oten in einem Baumformat und erzeugt dabei automatisch Ubergeordnete Knoten wo n tig Der S3 Cache Loader muss diese bergeordneten Knoten ebenfalls erzeugen damit Operationen wie getChildrenNames ordnungsgem funktionieren k nnen Das berpr fen ob f r jede put Operation alle bergeordneten Knoten existieren ist ziemlich ressourcenintensiv weshalb der Cache Loader standardm ig das Vorhandensein dieser bergeordneten Knoten cacht cache s3 location Dies w hlt einen prim ren Speicherort f r Ihre Daten um die Latenz beim Abrufen und Laden zu verringern Setzen Sie dies auf EU um Daten in Europa zu speichern Der Standard ist null um Daten in den Vereinigten Staaten zu speichern 9 3 5 TcpDelegatingCacheLoader Dieser Cache Loader gestattet das Delegieren von Lade und Speichervorgangen an eine andere Instanz von JBossCache die sich a im selben Adressbereich b in einem anderen Prozess im selben Host oder c in einem anderen Prozess in einem anderen Host befindet Ein TcpDelegatingCacheLoader kommuniziert mit einem entfernten org jboss cache loader tcp TcpCacheServer der ein von der Befehlszeile aus gestarteter eigenst ndiger Prozess sein kann oder aber als ein MBean in JBoss AS eingebettet sein kann Der TcpCacheServer besitzt eine Referenz zu einer anderen JBoss Cache Instanz die er selbst erstellen kann oder die ihm zur Verf gung gestellt wird z B von JBoss mittels Abh ngigkeitsinjektion Ab JBoss Cache 2 1
125. r Festschreibung Wenn ein neuer Cache erzeugt wird kann dieser optional beim Start die Inhalte eines anderen vorhandenen Caches beziehen 7 2 SPI Schnittstellen Zus tzlich zu den Cache und Node Schnittstellen legt JBoss Cache die leistungsst rkeren CacheSPI und NodeSPI Schnittstellen offen die ein h heres Ma an Kontrolle ber die JBoss Cache Interna erlauben Diese Schnittstellen sind nicht zum allgemeinen Gebrauch vorgesehen sondern richten sich an Entwickler die den JBoss Cache erweitern oder verbessern m chten oder angepasste Interceptor oder CacheLoader Instanzen schreiben m chten 36 Kapitel 7 Architektur Abbildung 7 2 SPI Schnittstellen Die CacheSPI Schnittstelle kann nicht erzeugt werden sondern wird durch die setCache CacheSPI cache Methoden auf diesen Schnittstellen in die Interceptor und CacheLoader Implementierungen injiziert CacheSPTI erweitert Cache s mtliche Funktionen der einfachen API sind also ebenso verf gbar Ebenso kann auch eine NodeSPI Schnittstelle nicht erzeugt werden Stattdessen erhalten Sie eine indem Sie Operationen auf CacheSPI ausf hren wie oben Zum Beispiel wird Cache getRoot Node als CacheSPI getRoot NodeSPI berschrieben Es ist wichtig zu wissen dass ein direktes Konvertieren eines Cache oder Node zu deren SPI quivalenten nicht empfohlen wird und als schlechtes Vorgehen betrachtet wird da die Schnittstellenvererbung kein Vertrag ist der
126. r sie von einem Befehl angetroffen w rden 7 3 1 1 Schreiben angepasster Interzeptoren Sie k nnen angepasste Interzeptoren schreiben um bestimmte Aspekte oder Funktionen hinzuzuf gen indem Sie CommandInterceptor erweitern und die relevanten visitXXX Methoden berschreiben basierend auf den Befehlen die Sie abfangen m chten Es gibt andere abstrakte Interzeptoren die Sie stattdessen erweitern k nnten wie z B den PrePostProcessingCommandInterceptor und den SkipCheckChainedInterceptor In den entsprechenden Javadocs finden Sie weitere Einzelheiten ber die zus tzlich gebotenen Funktionen Der angepasste Interzeptor muss mit Hilfe der Ccache addInterceptor Methoden zur Interzeptorkette hinzugef gt werden Werfen Sie f r Einzelheiten einen Blick auf die Javadocs dieser Methoden 7 3 2 Commands Befehle und Visitors Besucher Intern nutzt JBoss Cache ein Command Visitor Muster zur Ausf hrung von API Aufrufen Sobald eine 38 Kapitel 7 Architektur Methode auf der Cache Schnittstelle aufgerufen wird erzeugt CacheInvocationDelegate das die Cache Schnittstelle implementiert eine Instanz von VisitableCommand und leitet diesen Befehl durch die Interzeptorkette Interzeptoren die die Visitor Schnittstelle implementieren k nnen VisitableCommands verarbeiten an denen sie interessiert sind und eine Verhaltensweise zum Befehl hinzuf gen Jeder Befehl enth lt s mtliche Details ber den ausgef hrten Befehl wie z B ve
127. rPoolSize asynchron durchgef hrten Replikation erfolgt sogar die Serialisierung der Inhalte f r die Replikation in einem separaten Thread damit der Aufrufer so schnell wie m glich zur ckkehren kann Diese Einstellung steuert die Gr e des Thread Pools zur Serialisierung Die Einstellung auf einen Wert kleiner als 1 bedeutet dass die Serialisierung nicht asynchron erfolgt serializationExe serializationExecu positive Ganzzahl 50000 Hiermit wird die cutorQueueSize torQueueSize Gr e der abgegrenzten Queue definiert die Aufgaben f r den Serialization Executor enth lt Dies wird ignoriert falls kein Serialization Executor verwendet wird wenn also z B serialization ExecutorPoolS ize kleiner als 1 ist useRepIQueue useReplQueue true false false Falls true zwingt dies alle asynchrone Kommunikation in 110 Kapitel 12 Konfigurationsreferenzen eine Warteschlange die dann regelm ig geb ndelt versendet wird replQueuelnterv replQueuelnterval positive Ganzzahl 5000 Ist al useRep1Queue auf true gesetzt steuert dieses Attribut wie oft der anynchrone Thread der zum Leeren der Replikations Queue genutzt wird ausgef hrt wird Dies sollte eine positive Ganzzahl sein welche die Thread Wakeup Zeit in Millisekunden darstellt replQueueMaxE replQueueMaxEle positive Ganzzahl 1000 Ist lements ments useRep1Queue auf true gesetzt kann dieses Attribut dazu verwendet wer
128. rd Beschreibung regionsinactive inactiveOnStartup true false Sind Bereiche OnStartup siehe aktiviert steuert dieses Attribut ob neu erzeugte Bereiche beim Start aktiv sind Tabelle 12 11 Das lt shutdown gt Element Das lt shutdown gt Element Beschreibung Dieses Element spezifiziert das Verhalten beim Beenden des Caches bergeordnetes Element Untergeordnete Elemente Bean quivalent Configuration 90 Kapitel 12 Konfigurationsreferenzen Tabelle 12 12 lt shutdown gt Attribute lt shutdown gt Attribute Attribut Bean Feld PAT EEI Standard Beschreibung hookBehavior shutdownHookBe DEFAULT DEFAULT Dieses Attribut havior DONT_REGISTE bestimmt ob der R REGISTER Cache einen JVM Shutdown Hook registrieren soll damit Ressourcen bereinigt werden k nnen falls die JVM ein Shutdown Signal empf ngt Standardm ig ist ein Shutdown Hook registriert falls kein MBean Server au er dem JDK Standard entdeckt wird REGISTER zwingt den Cache zur Registrierung eines Shutdown Hooks selbst wenn ein MBean Server gefunden wird und DONT_REGISTE R zwingt den Cache KEINEN Shutdown Hook zu registrieren selbst wenn kein MBean Server gefunden wird Tabelle 12 13 Das lt listeners gt Element Das lt listeners gt Element Beschreibung Dieses Element spezifiziert das Verhalten von registrierten Cache Listenern Ubergeordnetes Element Untergeordnete Element
129. renzen erm glicht wiederholbare Lese Semantiken selbst wenn sich der eigentliche Zustand gleichzeitig ver ndert Schreibende Threads hingegen m ssen eine Sperre beziehen bevor der Schreibvorgang beginnen kann Derzeit verwenden wir Lock Striping um die Speicherleistung des Caches zu verbessern Die Gr e des gemeinsam verwendeten Sperr Pools kann mit Hilfe des concurrencyLevel Attributs des dann den zu ver ndernden Zustand ebenfalls in einen Container ganz wie auch die Lese Threads und 73 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch kopiert anschlie end diesen Zustand zum Schreiben Beim Kopieren wird im Container eine Referenz zur Originalversion bewahrt f r eventuelle Rollbacks das Zur cksetzen des Zustands nderungen werden dann an der Kopie vorgenommen und sobald der Schreibvorgang abgeschlossen ist wird die Kopie schlie lich wieder in die Datenstruktur zur ckgeschrieben Auf diese Weise sehen nachfolgende Leser die neue Version w hrend derzeitige Leser noch immer eine Referenz auf die Originalversion in ihrem Kontext besitzen Kann ein Schreibvorgang nach einer gewissen Zeit immer noch keine Schreibsperre erhalten wird eine TimeoutException geworfen Diese Zeit berschreitung beim Erhalt der Sperre ist standardm ig 10000 Millisekunden und kann mit Hilfe des lockAcquisitionTimeout Attributs des locking 11 1 1 2 1 Isolationsebenen JBoss Cache 3 x unterst tzt zwei Isolationseben
130. rwendete Parameter und Verarbeitungsverhalten eingekapselt in einer process Methode Zum Beispiel wird der RemoveNodeCommand erzeugt und durch die Interzeptorkette geschickt wenn Cache removeNode aufgerufen wird und RemoveNodeCommand process verf gt ber notwendige Informationen dar ber wie ein Knoten aus der Datenstruktur entfernt wird Neben visitable sind Befehle auch replizierbar Die JBoss Cache Marshaller wissen wie Befehle effizient geordnet werden und wie sie auf entfernten Cache Instanzen aufgerufen werden mit Hilfe eines internen RPC Verfahrens basierend auf JGroups 7 3 3 InvocationContexts InvocationContext enth lt f r die Dauer eines einzelnen Aufrufs einen Zwischenzustand und wird angelegt und zerst rt durch den InvocationContextInterceptor der sich am Anfang der Interzeptorkette befindet InvocationContext enth lt wie der Name schon sagt Kontextinformationen im Zusammenhang mit einem einzelnen Cache Methodenaufruf Kontextinformationen umfassen zugeh rige javax transaction Transaction oder org jboss cache transaction GlobalTransaction den Ursprung des Methodenaufrufs gesperrt wurden etc Der InvocationContext kann abgefragt werden durch Aufruf von Cache getInvocationContext 7 4 Manager f r Untersysteme Manche Aspekte und Funktionen werden von mehr als einem einzelnen Interzeptor verwendet Einige davon wurden in Manager eingekapselt zur Verwendung durch verschiedene Interzeptoren und werden
131. rz NBST die es Sendern erlaubt Zust nde zu generieren und zu streamen ohne dabei die Verarbeitung ihrer normalen Transaktionen zu unterbrechen Dies ist insbesondere wichtig bei umfangreichen Zust nden bei denen das Generieren und Streamen einige Zeit in Anspruch nehmen kann w hrend der laufende Transaktionen auf dem Sender unter Umst nden einen Timeout erreichen und fehlschlagen k nnten Um dies zu erreichen sollte NBST aktiviert werden siehe Konfigurationsreferenzen und Sie m ssen MVCC als Knoten Sperrschema einsetzen Zus tzlich m ssen Sie JGroups STREAMING_STATE_TRANSFER Protokoll in Ihren Cluster Eigenschaften einsetzen 8 3 6 Konfiguration der Zustands bertragung Um sicherzustellen dass die Zustands bertragung wie erwartet funktioniert ist es wichtig dass alle Knoten im Cluster mit denselben Einstellungen f r persistente und transiente Zust nde konfiguriert sind Denn Byte Array basierte bertragungen verlassen sich einzig auf die Konfiguration des Anfragers w hrend Stream basierte bertragungen sich sowohl auf die Konfiguration des Anfragers als auch die des Senders verlassen und dabei davon ausgehen dass diese identisch sind 1 Die am l ngsten laufende Cache Instanz ist in JBoss Begriffen immer auch der Koordinator 48 Kapitel 9 Cache Loader Kapitel 9 Cache Loader JBoss Cache kann einen Cache Loader f r das Backup des speicherinternen Caches zu einem Backend Datenspeicher verwenden Wird
132. s Cache Benutzerhandbuch festgeschrieben oder zur ckgesetzt wird Hierf r muss dem Cache eine Referenz zum javax transaction TransactionManager der Umgebung zur Verf gung gestellt werden In der Regel geschieht dies indem der Cache mit dem Klassennamen einer Implementierung der TransactionManagerLookup Schnittstelle konfiguriert wird Wenn der Cache startet wird er eine Instanz dieser Klasse erzeugen und deren getTransactionManager Methode aufrufen die mit einer Referenz auf den TransactionManager antwortet TransactionLookup JBoss Cache wird mit JBossTransactionManagerLookup und GenericTransactionManagerLookup geliefert Der JBossT ransactionManager Lookup kann an eine laufende JBoss AS Instanz anbinden und einen TransactionManager abrufen wahrend der GenericTransactionManagerLookup an die am haufigsten verwendeten Java EE Application Server anbinden und dieselbe Funktionalit t bereitstellen kann Eine Dummy Implementierung DummyT ransactionManager Lookup wird ebenfalls zum Testen geliefert Wie der Name schon andeutet wird diese Implementierung nicht f r den Einsatz in Produktionsumgebungen empfohlen und hat einige schwerwiegende Einschr nkungen hinsichtlich nebenl ufiger Transaktionen und Recovery Als Alternative zur Konfiguration eines TransactionManagerLookup k nnen Sie auch befehlsorientiert eine Referenz auf den TransactionManager in das RuntimeConfig Element des Configuration Objekts injizieren Tran
133. s bzw Speichern in einem anderen lokalen Cache in derselben VM ClusteredCacheLoader gestattet die Abfrage von speicherinternen Daten anderer Caches im selben Cluster ber dieselben Clustering Protokolle die auch zur Replikation von Daten verwendet werden Schreibvorg nge werden jedoch nicht gespeichert da sich die Replikation um eventuell n tige Aktualisierungen k mmern w rde Sie m ssen eine Eigenschaft namens timeout festlegen einen Long Wert der dem Cache Loader mitteilt wieviele Millisekunden auf Antwort vom Cluster gewartet werden soll ehe von einem Nullwert ausgegangen wird Zum Beispiel w rde timeout 3000 einen Timeout Wert von 3 Sekunden festlegen 9 3 3 JDBCCacheLoader JBossCache wird mit einer JDBC basierten Cache Loader Implementierung vertrieben die die Zust nde der Knoten in einer relationalen Datenbank speichert l dt Die implementierende Klasse ist org jboss cache loader JDBCCacheLoader Die aktuelle Implementierung verwendet nur eine Tabelle Jede Reihe in der Tabelle steht f r einen Knoten und umfasst drei Spalten Spalte f r Fqn gleichzeitig eine Prim rschl sselspalte Spalte f r Knoteninhalte Attribut Wertpaare Spalte f r bergeordneten Fqn Fans werden als Zeichenketten gespeichert Knoteninhalte werden als BLOB gespeichert A wann a JBoss Cache erlegt den in Fan verwendeten Objekttypen keine Einschr nkungen auf aber diese Cache Loader Implementierung erfordert dass Fqn nur Objekte
134. s cache loader ClusteredCacheLoader wird als schreibgesch tzter Cache verwendet wobei von anderen Knoten im Cluster der Zustand abgerufen wird N tzlich wenn vollst ndige Zustandsreplikation zu ressourcenintensiv ist und der Zustand nur bei Bedarf geladen werden soll Diese Cache Loader werden zusammen mit weiterf hrenden Aspekten und Optimierungsm glichkeiten 2 9 Verwenden von Eviction Richtlinien Eviction Richtlinien sind das Gegenst ck zu Cache Loadern Sie sind n tig um sicherzustellen dass der Cache ber gen gend Speicherplatz verf gt Sobald der Speicherplatz knapp wird wird in einem separaten Thread ein Eviction Algorithmus ausgef hrt der Zust nde aus dem Speicher verweist und so Speicherplatz freimacht Falls zusammen mit einem Cache Loader konfiguriert k nnen diese Zust nde anschlie end bei Bedarf vom Cache Loader abgerufen werden Eviction Richtlinien k nnen pro Region konfiguriert werden so dass verschiedene Unterb ume im Cache ber verschiedene Eviction Einstellungen verf gen k nnen JBoss Cache wird mit mehreren Eviction Richtllinien geliefert org jboss cache eviction LRUPolicy Eine Eviction Richtlinie die bei Erreichen des Schwellenwerts die am l ngsten nicht verwendeten Knoten verwirft org jboss cache eviction LFUPolicy Eine Eviction Richtlinie die bei Erreichen des Schwellenwerts die am wenigsten verwendeten Knoten verwirft org jboss cache eviction MRUPolicy Eine Eviction Richtlini
135. s enthalten diese Daten zu l schen wodurch der anfragende Cache zum neuen Besitzer der Daten wird Falls auf false eingestellt wird ein evict r umen statt eines remove entfernen gesendet so dass im Cache Loader persistierte Zust nde verbleiben Dies ist von Nutzen wenn ein gemeinsam verwendeter Cache Loader konfiguriert ist Standardm ig true dataGravitationSearchBackupTrees Teilt entfernten Instanzen mit dass sie ihre Backups 44 Kapitel 8 Cache Modi und Clustering sowie die Hauptdatenb ume durchsuchen sollen Standardm ig true Wenn true k nnen infolgedessen auch die Backup Knoten zus tzlich zu Dateneigent mern auf Anfragen zur Datengravitation reagieren autoDataGravitation Ob Datengravitation f r jeden Cache Fehlschlag erfolgt Die Standardeinstellung lautet false um unn tige Netzwerkaufrufe zu vermeiden Die meisten Anwendungsf lle wissen wenn die Gravitation von Daten notwendig ist und und liefern eine Option um Datengravitation f r einen einzelnen Aufruf zu aktivieren Falls autoDataGravitation auf true gesetzt ist so ist diese Option unn tig 8 1 2 2 4 Konfiguration 8 2 Invalidierung Wird ein Cache f r Invalidierung statt Replikation konfiguriert erhalten bei jeder nderung der Zeitdaten in einem Cache die anderen Caches im Cluster eine Nachricht die sie dar ber informiert das ihre Daten nun veraltet sind und aus dem Speicher ger umt werden sollten Invalidierung w rde bei Verwend
136. sactionManager tm getTransactionManager magic method cache getConfiguration getRuntimeConfig setTransactionManager tm N Das Injizieren des TransactionManager ist sogar die empfohlene Vorgehensweise wenn die Configuration von einer Art IOC Container erzeugt wurde der bereits eine Referenz auf den TransactionManager besitzt Wenn die Transaktion festschreibt wird entweder das Ein Phasen oder das Zwei Phasen Einzelheiten 76 Teil Ill JBoss Cache Konfigurationsreferenzen Teil Ill JBoss Cache Konfigurationsreferenzen Dieser Abschnitt enh lt technische Referenzen zum schnellen Nachschlagen 77 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Kapitel 12 Konfigurationsreferenzen 12 1 Beispiel einer XML Konfigurationsdatei Nachfolgend sehen Sie eine typische XML Konfigurationsdatei Wir empfehlen Ihnen eine der mit der JBoss Cache Distribution mitgelieferten Konfigurationen als Ausgangspunkt fur kleinere Anpassungen zu verwenden statt eine Konfigurationsdatei ganz neu zu schreiben 78 lt xml version 1 0 encoding UTF 8 gt lt jbosscache xmins xsi http www w3 org 2001 XMLSchema instance xmilns urn jboss jbosscache core config 3 1 gt lt isolation levels supported READ_COMMITTED and REPEATABLE_READ nodeLockingSchemes mvcc pessimistic deprecated optimistic deprecated gt lt locking isolationLevel REPEATABLE_READ lockParentForChildInser tRemove
137. se false Falls aktiviert ase e dynamisch werden die im Cluster versendeten Zur cksetzungsn achrichten Rollback auf synchrone Weise verschickt Dies ist in der Regel kaum von Vorteil denn nach Entdecken eines Fehler bei der bertragung des Rollbacks kann nichts weiter unternommen werden als eine entsprechende Meldungs ins Protokoll zu schreiben da einige Knoten im Cluster wom glich bereits festgeschrieben haben und nicht mehr zur cksetzen k nnen Tabelle 12 7 Das lt jmxStatistics gt Element Das lt jmxStatistics gt Element Beschreibung Dieses Element spezifiziert ob Cache Statistiken gesammelt und via JMX berichtet werden bergeordnetes Element Untergeordnete Elemente Bean quivalent Configuration 89 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Tabelle 12 8 lt jmxStatistics gt Attribute lt jmxStatistic s gt Attribute Attribut Bean Feld PATER Standard Beschreibung enabled exposeManageme true false Steuert ob ntStatistics Cache Statistiken gesammelt und via JMX berichtet werden Tabelle 12 9 Das lt startup gt Element Das lt startup gt Element Beschreibung Dieses Element spezifiziert das Verhalten beim Start des Caches bergeordnetes Element Untergeordnete Elemente Bean quivalent Configuration Tabelle 12 10 lt startup gt Attribute lt startup gt Attribute Attribut Bean Feld PATEE Standa
138. st dass Lesevorg nge weiterhin die freigegebenen Zust nde lesen w hrend Schreibvorg nge die freigegebenen Zust nde kopieren eine Versions ID erh hen und anschlie end den Zustand zur ckschreiben nachdem sichergestellt wurde dass die Version noch g ltig ist d h kein anderer nebenl ufiger Schreibvorgang hat den Zustand in der Zwischenzeit ver ndert Dies erlaubt es Lesevorg ngen weiterhin zu lesen w hrend Schreibvorg nge nicht am Schreiben gehindert werden und wiederholbare Lesesemantiken werden bewahrt indem Lesern erm glicht wird die alte Version des Zustands zu lesen 11 1 1 2 MVCC Implementierung JBoss Cache s Implementierung von MVCC basiert auf einigen wenigen Features Lesevorg nge erhalten keine Sperren Nur eine zus tzliche Version wird f r den gemeinsam genutzten Zustand bewahrt f r einen einzigen Schreibvorgang Alle Schreibvorg nge erfolgen sequenziell um schnelle Ausfall Semantiken zu bieten Die extrem hohe Leistung von JBoss Cache s MVCC Implementierung f r lesende Threads wird erreicht da f r Lesevorg nge keine Synchronisation oder Sperre erforderlich ist F r jeden lesenden Thread h llt der MVCCLockingInterceptor den Zustand in ein schlankes Containerobjekt das in den InvocationContext oder den TransactionContext falls in einer Transaktion des Threads platziert wird Alle nachfolgenden Operationen auf dem Zustand finden ber das Containerobjekt statt Ein derartiger Einsatz von Java Refe
139. st Frequently Used Am wenigsten verwendet org jboss cache eviction LFUAlgorithm steuert die Eviction basierend auf dem Least Frequently Used Am wenigsten verwendet Algorithmus Die am wenigsten verwendeten Knoten werden mit dieser Richtlinie als erste ger umt Die Z hlung der Knotenverwendung startet bei 1 wenn ein Knoten erstmals hinzugef gt wird Bei jedem Zugriff erh ht sich der Knotenverwendungsz hler um 1 Diese Zahl wird dann zur Bestimmung der am seltensten verwendeten Knoten herangezogen LFU ist auch ein sortierter Eviction Algorithmus Die zugrunde liegende Eviction Queue Implementierung und der Algorithmus werden in aufsteigender Reihenfolge des Knotenverwendungsz hlers sortiert Diese Klasse garantiert eine konstante Reihenfolge 0 1 f r Hinzuf gungen Entfernungen und Lookups Aufrufe Wird jedoch eine Anzahl von Knoten der Queue hinzugef gt oder f r einen bestimmten Bearbeitungsgang verwendet wird eine einzelne quasilineare 0 n log n Operation verwendet um die Queue wieder in korrekter LFU Reihenfolge zu sortieren Auf hnliche Weise ist bei Entfernung oder R umung von Knoten eine einzelne lineare 0 n Pruning Operation zur Bereinigung der Eviction Queue n tig LFU besitzt folgende Konfigurationsparameter maxNodes Dies ist die maximale in diesem Bereich gestattete Anzahl von Knoten 0 bedeutet sofortigen Ablauf 1 bedeutet keine Beschr nkung minNodes Dies ist die Mindestanzahl von Knoten
140. stimmte Bereiche registriert wurden version replicationVersion G ltiger JBoss Aktuelle Version Verwendet vom Cache Versions VersionAwareM String arshaller beim 94 Kapitel 12 Konfigurationsreferenzen Bestimmen welcher Version Stream Parser standardm ig zu verwenden ist bei der Iniziierung der Kommunikation in einem Cluster N tzlich wenn Sie eine neuere Version von JBoss Cache in einem Cluster einsetzen mussen der noch altere Versionen enthalt und kann zum Durchf hren von Rolling Upgrades verwendet werden objectinputStre objectinputStream Positive Ganzzahl 50 Derzeit nicht amPoolSize PoolSize verwendet objectOutputStr objectOutputStrea Positive Ganzzahl 50 Derzeit nicht eamPoolSize mPoolSize verwendet Tabelle 12 19 Das lt eviction gt Element Das lt eviction gt Element Beschreibung Dieses Element steuert wie Eviction in dem Cache funktioniert Ubergeordnetes Element Untergeordnete Elemente Bean Aquivalent EvictionConfig 95 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Tabelle 12 20 lt eviction gt Attribute lt eviction gt Attribute Attribut Bean Feld PATEE Standard Beschreibung wakeUpinterval wakeupinterval Ganzzahl Die H ufigkeit mit der der Eviction Thread ausgef hrt wird in Millisekunden Falls auf weniger als 1 eingestellt wird der Eviction Thread nie ausgef hrt und ist damit faktisch deaktiviert Tabel
141. stschreibung 8 1 2 1 2 Zwei Phasen Festschreibung 8 1 2 2 Buddy Replikation 8 1 2 2 1 Auswahl von Buddys 8 1 2 2 2 BuddyPools 8 1 2 2 3 Ausfallsicherheit 8 1 2 2 4 Konfiguration 8 2 Invalidierung 8 3 Zustands bertragung 8 3 1 Arten der Zustands bertragung 8 3 2 Byte Array und Streaming basierte Zustands bertragung 8 3 3 Vollst ndige und teilweise Zustands bertragung 8 3 4 Transiente in memory oder speicherinterne und persistente Zustands bertragung 8 3 5 Nicht sperrende Zustands bertragung 8 3 6 Konfiguration der Zustands bertragung Kapitel 9 Cache Loader 2 2 od 2 anne an Bi aa Bev a 9 1 CacheLoader Schnittstelle und Lebenszyklus 9 2 Konfiguration 9 2 1 Singleton Store Konfiguration 9 3 Standardm ig enthaltene Implementierungen 9 3 1 Dateibasierte Cache Loader 28 30 31 32 34 34 34 34 35 36 36 36 37 38 38 38 39 39 39 39 39 40 40 40 41 42 42 42 42 42 43 43 43 44 44 45 45 45 45 46 46 47 48 48 49 50 52 53 53 9 3 2 Cache Loader die an andere Caches delegieren 9 3 3 JDBCCacheLoader 9 3 3 1 JDBCCacheLoader Konfiguration 9 3 3 1 1 Tabellenkonfiguration 9 3 3 1 2 Datenquelle 9 3 3 1 3 JDBC Treiber 9 3 3 1 4 c3p0 Verbindungs Pooling 9 3 3 1 5 Konfigurationsbeis piel 9 3 4 S3Cacheloader 9 3 4 1 Amazon S3 Bibliothek 9 3 4 2 Konfiguration 9 3 5 TcpDelegatingCacheLoader 9 3 6 Umwandlung von Cache Loadern 9 4 Cache Passivierung 9 4
142. t Element Das lt sync gt Element Beschreibung Ist dieses Element vorhanden erfolgt samtliche Kommunikation synchron d h sobald ein Thread eine Nachricht Uber das Netzwerk sendet sperrt dieser bis er eine Bestatigung vom Empfanger erh lt Dieses Element und das Tabelle 12 44 Ubergeordnetes Element Untergeordnete Elemente Bean quivalent Configuration setCacheMode 108 Tabelle 12 43 lt sync gt Attribute Kapitel 12 Konfigurationsreferenzen lt sync gt Attribute Attribut Bean Feld TAER replTimeout syncReplTimeout positive Ganzzahl 15000 Dies ist die Zeit dynamisch Tabelle 12 44 Das lt async gt Element Das lt async gt Element Beschreibung Ubergeordnetes Element Untergeordnete Elemente Bean Aquivalent Standard Beschreibung die bei einem entfernten Aufruf auf eine Bestatigung gewartet wird bevor eine Ausnahme geworfen wird Ist dieses Element vorhanden erfolgt samtliche Kommunikation asynchron d h wenn ein Thread eine Nachricht ber das Netzwerk sendet wartet dieser nicht auf eine Best tigung bevor er zur ckkehrt Dieses Element und das Configuration setCacheMode JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Tabelle 12 45 lt async gt Attribute lt async gt Attribute Attribut Bean Feld AEE Standard Beschreibung serializationExe serializationExecu positive Ganzzahl 25 Zus tzlich zur cutorPoolSize to
143. tarted cache startBatch cache put a key value cache put b key value cache put c key value cache endBatch false This will discard changes made in the batch 24 Kapitel 5 Implementierung von JBoss Cache Kapitel 5 Implementierung von JBoss Cache 5 1 Eigenstandiger Einsatz Befehlsorientierte Implementierung Beim Einsatz in einem eigenstandigen Java Programm muss lediglich der Cache instanziiert werden mit Hilfe der CacheFactory und einer Configuration Instanz oder einer XML Datei wie in Dasselbe Verfahren kann verwendet werden wenn eine Applikation die in einem Applikationsserver ausgef hrt wird befehlsorientiert einen Cache implementieren m chte statt sich auf die Implementierungsfunktion des Applikationsservers zu verlassen Ein Beispiel hierf r w re eine Webapplikation die einen Cache mittels eines javax servlet ServletContextListener implementiert Nach deren Erzeugung k nnen Sie Ihre Cache Instanz f r verschiedene Applikationskomponenten freigeben indem Sie entweder einen IOC Container wie den JBoss Microcontainer verwenden oder indem Sie die Cache Instanz an JNDI binden oder indem Sie einfach eine statische Referenz zum Cache halten Falls Sie nach der Implementierung Ihres Caches eine Verwaltungsschnittstelle darauf in JMX offenlegen 5 2 Via JBoss Microcontainer JBoss AS 5 x Ab AS 5 unterst tzt JBoss AS die Implementierung von POJO Diensten via Implementieru
144. tat ion gt Attribute Attribut removeOnFind searchBackupT rees Bean Feld autoDataGravitatio true false n PAT EEI dataGravitationRe true false moveOnFind dataGravitationSe true false archBackupTrees Standard Kapitel 12 Konfigurationsreferenzen Beschreibung Falls true wird wenn eine get auf einem Cache ausgef hrt wird und dabei nichts gefunden wird die Datengravitation von benachbarten Caches versucht Ist dies false kann eine Gravitation nur erfolgen wenn die Option setFor ceDataGravita tion Option angegeben ist Falls true wird bei der Gravitation die Instanz die die Gravitation anfragt nun zum Besitzer des abgefragten Zustands und fordert alle anderen Instanzen dazu auf diesen Zustand aus ihrem Speicher zu entfernen Falls true werden eingehende Gravitationsanfrag en den Cache dazu veranlassen nicht nur seine prim re Datenstruktur zu durchsuchen sondern auch seine Backup Struktur 115 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Tabelle 12 52 Das lt locator gt Element Das lt locator gt Element Beschreibung Dieser Tag bietet einen zuschaltbaren Mechanismus um Buddy Location Algorithmen bereitzustellen bergeordnetes Element Untergeordnete Elemente Bean quivalent BuddyLocatorConfig Tabelle 12 53 lt locator gt Attribute lt locator gt Attribute Attribut Bean Feld PATEE
145. te eingesetzen Cache Loader Ein Beispiel ist die Verwendung eines dateibasierten Cache Loaders der sich auf demselben Host wie die JVM befindet und als Speicher berlauf verwendet wird Dies gew hrleistet dass Daten einfach verf gbar sind und das zu geringen Kosten Ein zus tzlicher entfernter Cache Loader wie z B ein TcpDelegatingCacheLoader bietet Ausfallsicherheit zwischen Server Neustarts 65 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch SERVER1 SERVER3 Abbildung 9 6 Mehrere Cache Loader in einer Kette Kapitel 10 Eviction Kapitel 10 Eviction Eviction etwa R umung steuert die Speicherverwaltung von JBoss Cache indem die Anzahl und die Verweildauer der Knoten im Speicher beschrankt wird Begrenzter Speicher auf Servern bedeutet dass Caches nicht unbegrenzt wachsen k nnen Eviction ist deshalb notwendig um Fehler aufgrund mangelnden Speicherplatzes zu vermeiden Eviction wird meist zusammen mit Cache Loadern siehe 10 1 Aufbau Eviction in JBoss Cache baut auf vier Aspekten auf 1 Sammeln statistischer Daten 2 Bestimmen der zu r umenden Knoten 3 Art und Weise der Knotenr umung 4 Eviction Threads Au erdem spielen Bereiche eine Schl sselrolle bei der Eviction da Eviction immer pro Bereich konfiguriert wird so dass verschiedene Unterb ume im Cache unterschiedliche Eviction Charakteristiken haben k nnen 10 1 1 Sammeln statistischer Daten Dies erfolgt auf dem
146. ten von Zustands bertragungen auf drei verschiedene Weisen unterscheiden abh ngig von der Betrachtungsweise Erstens Im Kontext einer bestimmten Implementierung der Zustands bertragung der zugrunde liegenden Vernetzung gibt es zwei grunds tzich verschiedene bertragungsarten Byte Array und Streaming basierte Zustands bertragung Zweitens Zustands bertragung kann eine vollst ndige oder eine teilweise Zustands bertragung sein abh ngig vom bertragenen Unterbaum Die bertragung eines kompletten Cache Baums ist eine vollst ndige bertragung w hrend die bertragung eines bestimmten Unterbaums eine teilweise Zustands bertragung ist Drittens Eine Zustands bertragung kann eine in memory oder persistente bertragung sein abh ngig von der Verwendung des Caches 45 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch 8 3 2 Byte Array und Streaming basierte Zustands bertragung Byte Array basierte bertragung war die standardm ige und einzig verf gbare Cache bertragungsmethode in allen Releases bis 2 0 Die Byte Array basierte bertragung l dt den gesamten in ein Byte Array bertragenen Zustand und sendet diesen an das empfangende Mitglied Eine wesentliche Einschr nkung dieser Herangehensweise ist die sehr umfangreiche Gr e der Zustands bertragung gt 1 GB die sehr wahrscheinlich eine OutOfMemoryException verursachen w rde Die Streaming Zustands bertragung liefert einen InputStream a
147. tenten Speichers im Grunde nur eine Kopie der speicherinternen Inhalte Wenn Sie Eviction einsetzen ist der Inhalt des persistenten Speichers eine Obermenge der speicherinternen Inhalte d h es enth lt noch Knoten die speicherintern bereits verworfen wurden Ist Passivierung aktiviert gibt es einen direkten Zusammenhang zwischen Eviction und Cache Loading Schreibvorg nge in den persistenten Speicher via dem Cache Loader erfolgen nur als Teil des Eviction Vorgangs Daten werden aus dem persistenten Speicher gel scht wenn die Applikation diese zur ck in den Arbeitsspeicher einliest In diesem Fall handelt es sich bei den Inhalten des Arbeitsspeichers und den Inhalten des persistenten Speichers jeweils um eine Teilmenge der Gesamtinformationsmenge wobei diese Teilmengen keine gemeinsame Schnittmenge besitzen Sehen Sie nachfolgend ein einfaches Beispiel das veranschaulicht welche Zust nde sich im Verlaufe eines 6 Schritte Vorgangs jeweils im Arbeitsspeicher bzw im persistenten Speicher befinden Einf gen von A Einf gen von B Eviction Thread wird ausgef hrt r umt A Lesen von A Eviction Thread wird ausgef hrt r umt B OO A UNEB Entfernen von B Bei deaktivierter Passivierung 1 Memory A Disk A 2 Memory A B Disk A B 3 Memory B Disk A B 4 Memory A B Disk A B 5 Memory A Disk A B 6 Memory A Disk A Bei aktivierter Passivierung 61 JBoss Enterprise Appl
148. tiert werden Ist diese Eigenschaft dagegen 52 Kapitel 9 Cache Loader auf true gesetzt wird sichergestellt dass jegliche Anderungen wahrend dieses Vorgangs auch im Cache Loader gespeichert werden Sie sollten diese Eigenschaft auch auf true setzen wenn der Cache Loader eines jeden Knotens an einem anderen Speicherort konfiguriert ist Der Standardwert ist true pushStatewhenCoordinatorTimeout ist nur relevant wenn pushStateWhenCoordinator true ist Ist dies der Fall stellt es die maximale Anzahl von Millisekunden ein die der Vorgang den speicherinternen Zustand in den zugrunde liegenden Cache Loader zu schreiben dauern sollte Eine PushStateException wird gemeldet wenn diese Grenze Uberschritten wird Der Standardwert ist 20000 Anmerkung zur Verwendung des singletonStore Elements Das Einrichten eines Cache Loaders als Singleton und das Verwenden von Cache Passivierung mittels Eviction kann zu unerw nschten Ergebnissen f hren Wenn ein Knoten aufgrund einer Eviction passiviert werden soll w hrend der Cluster gerade dabei ist einen neuen Koordinator zu w hlen gehen die Daten verloren Der Grund hierf r ist dass zu diesem Zeitpunkt kein Koordinator aktiv ist und daher keiner der Knoten im Cluster den passivierten Knoten speichern wird Ein neuer Koordinator wird im Cluster gew hlt wenn entweder der bisherige Koordinator den Cluster verl sst er abst rzt oder nicht mehr antwortet 9 3 Standardm ig enthaltene Imple
149. tliche Replikation wird von einem Thread im Hintergrund durchgef hrt Asynchrone Replikation ist schneller kein Sperren des Aufrufers da synchrone Replikation R ckmeldung von allen Knoten in einem Cluster erfordert dass diese die nderung erfolgreich empfangen und angewendet haben Round Trip Zeit Wenn jedoch die synchrone Replikation erfolgreich zur ckkehrt so wei der Aufrufer sicher dass alle nderungen auf allen Knoten angewendet wurden w hrend dies bei asynchroner Replikation nicht unbedingt der Fall sein muss Bei asynchroner Replikation werden Fehler einfach in eine Protokolldatei geschrieben Selbst bei der Verwendung von Transaktionen kann etwa eine Transaktion erfolgreich verlaufen die Replikation aber nicht auf allen Cache Instanzen erfolgreich sein 8 1 2 1 Replizierte Caches und Transaktionen Beim Einsatz von Transaktionen kommt es nur an der Transaktionsgrenze der sog Transaction Boundary zur Replikation d h wenn eine Transaktion festgeschrieben wird Dadurch wird das Ausma des Replikationsdatenverkehrs begrenzt da eine einzelne nderung bertragen wird statt einer Reihe individueller nderungen Dies kann wesentlich effizienter sein als das Nichtverwenden von Transaktionen Ein weiterer Effekt ist dass beim eventuellen Zur cksetzen einer Transaktion keinerlei Daten im Cluster bertragen werden Je nachdem ob Sie Ihren Cluster im asynchronen oder synchronen Modus betreiben verwendet JBoss 8 1 2 1 1
150. tup false gt lt properties gt cache jdbc driver com mysql jdbc Driver cache jdbc url jdbc mysql localhost 3306 jbossdb cache jdbc user root cache jdbc password lt properties gt lt loader gt lt loaders gt Das class Element definiert die Klasse der Cache Loader Implementierung Beachten Sie dass 50 Kapitel 9 Cache Loader aufgrund eines Fehlers im Eigenschaftseditor in JBoss Backslashes in Variablen fur Windows Dateinamen m glicherweise nicht ordnungsgem ersetzt werden daher kann ein replace false n tig sein Beachten Sie dass eine Cache Loader Implementierung einen leeren Konstruktor haben muss Das properties Element definiert eine f r eine bestimmte Implementierung spezifische Konfiguration Die Dateisystem basierte Implementierung etwa definiert dass das root Verzeichnis verwendet werden soll w hrend eine Datenbankimplementierung die Datenbank URL den Namen und ein Passwort zur Herstellung einer Datenbankverbindung definieren k nnte Diese Konfiguration wird der Cache Loader Implementierung mittels CacheLoader setConfig Properties bergeben Beachten Sie dass f r Backspaces m glicherweise ein Maskierungszeichen n tig ist preload gestattet es uns eine Liste von Knoten oder sogar ganzer Unterb ume zu definieren die beim Start des Caches aufgesucht werden um die mit diesen Knoten assoziierten Daten vorab zu laden Der Standard l dt alle im Backend Speicher verf gbaren Daten in den C
151. uddyPools Auch als Replikationsgruppen bekannt handelt es sich bei einem Buddy Pool um ein optionales Konstrukt bei dem jede Instanz in einem Cluster mit einem Buddy Pool Namen konfiguriert werden kann Sie k nnen sich dies als exklusive Clubmitgliedschaft vorstellen wo bei der Auswahl von Buddys der BuddyLocator so er denn Buddy Pools unterst tzt Buddys w hlen w rde die denselben Buddy Pool Namen tragen Dies gestattet Systemadministratoren eine gewisse Flexibilit t und Kontrolle dar ber wie Buddys gew hlt werden Ein Systemadministrator kann zum Beispiel Instanzen auf zwei separaten physischen Servern die sich auf zwei separaten physischen Racks befinden in denselben Buddy Pool platzieren Statt also eine Instanz auf einem anderen Host auf demselben Rack zu w hlen w rden BuddyLocators die Instanz im selben Buddy Pool auf einem separaten Rack w hlen was ein gewisses Ma an Redundanz bietet 8 1 2 2 3 Ausfallsicherheit Falls eine Instanz abst rzt wird angenommen dass der sich mit dem Cache verbindende Client direkt oder indirekt ber einen anderen Dienst wie etwa HTTP Session Replikation die Anfrage an jede andere zuf llig gew hlte Cache Instanz im Cluster weiterleiten kann Hier kommt das Konzept der Datengravitation ins Spiel Beim Konzept der Datengravitation fragt ein Cache an den eine bestimmte Anfrage gestellt wurde Uber deren Daten er jedoch selbst nicht verf gt andere Instanzen im Cluster nach diesen Dat
152. uen Interzeptor eines Interzeptors direkt nach der Instanz des benannten Interzeptors Beachten Sie 106 Kapitel 12 Konfigurationsreferenzen dass dieses Attribut und position before und index sich gegenseitig ausschlie en index Positive Ganzzahl Die Position an der dieser Interzeptor in der Kette platziert wird wobei O die erste Position ist Beachten Sie dass dieses Attribut und position before und after gegenseitig ausschlie en Tabelle 12 40 Das lt clustering gt Element Das lt clustering gt Element Beschreibung Ist dieses Element vorhanden wird der Cache im geclusterten Modus gestartet Attribute und Unterelement definieren die Clustering Charakteristiken bergeordnetes Element Untergeordnete Elemente Bean quivalent Konfiguration 107 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Tabelle 12 41 lt clustering gt Attribute lt clustering gt Attribute Attribut Bean Feld FAN ECHTE Standard Beschreibung cacheMode replication replication invalidation r i Unterschiede zwischen Replikation und Invalidierung Wird die Bean verwendet wird synchrone und asynchrone Kommunikation mit dem Clustering Modus kombiniert um Ihnen die Configuration CacheMode Enumeration zu liefern clusterName clusterName JBossCache Ein Cluster Name cluster um den beizutretenden Cluster zu identifizieren Tabelle 12 42 Das lt sync g
153. ung entfernte Caches auf den gemeinsam verwendeten Cache Loader verweisen und modifizierte Daten abrufen Dies bietet einen doppelten Vorteil Netzwerkverkehr wird minimiert da Invalidierungsnachrichten im Vergleich zur Replikation aktualisierter Daten sehr klein sind und andere Caches im Cluster fragen auf lazy Weise nach modifizierten Daten also nur bei Bedarf Invalidierungsnachrichten werden nach jeder nderung keine Transaktionen oder Batches verschickt oder am Ende einer Transaktion oder eines Batches nach erfolgreicher Festschreibung Dies ist in der Regel effizienter da Invalidierungsnachrichten f r die Transaktion als Ganzes optimiert werden k nnen statt pro nderung Invalidierung kann ebenfalls synchron oder asynchron erfolgen und ganz wie bei der Replikation sperrt synchrone Invalidierung bis alle Caches im Cluster Invalidierungsnachrichten erhalten und die veralteten Daten ger umt sind w hrend asynchrone Invalidierung in einem fire and forget Modus senden und vergessen stattfindet bei dem Invalidierungsnachrichten gesendet werden aber kein Sperren und Warten auf Antworten erfolgt 8 3 Zustands bertragung Zustands bertragung bezeichnet den Vorgang bei dem eine JBoss Cache Instanz sich darauf vorbereitet einen Dienst bereitzustellen indem sie den aktuellen Zustand einer anderen Cache Instanz bezieht und diesen Zustand in ihren eigenen Zustand integriert 8 3 1 Arten der Zustands bertragung Man kann die Ar
154. wendet werden ersteres zur Konfiguration dieser Instanz des CacheLoader Zum Beispiel k nnte hier ein Datenbank Cache Loader eine Verbindung mit der Datenbank herstellen Die CacheLoader Schnittstelle besitzt eine Reihe von Methoden die aufgerufen werden wenn keine Transaktionen eingesetzt werden get put remove und removeData ein 49 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch get set remove abrufen einstellen entfernen des Werts erfolgt dadurch sofort Diese Methoden werden als javadoc Kommentare in der obigen Schnittstelle beschrieben Desweiteren werden drei Methoden mit Transaktionen verwendet prepare commit und rollback Die prepare Methode wird aufgerufen wenn eine Transaktion festgeschrieben werden soll Sie besitzt ein Transaktionsobjekt und eine Liste von nderungen als Parameter Das Transaktionsobjekt kann als ein Schl ssel in eine Hashmap von Transaktionen verwendet werden bei der die Werte die nderungslisten sind Jede Anderungsliste besitzt eine Anzahl von Modification Elementen welche die an einem Cache f r eine betreffende Transaktion vorgenommenen nderungen repr sentiert Wenn prepare erfolgreich zur ckkehrt dann muss der Cache Loader in der Lage sein die Transaktion erfolgreich festzuschreiben oder zur ckzusetzen JBoss Cache tr gt daf r Sorge dass prepare commit und rollback auf den Cache Loadern zur richtigen Zeit aufgerufen werden Di
155. werden residente Knoten f r die Entscheidung ob Knoten aus diesem Bereich ger umt werden m ssen nicht mitgez hlt Au erdem werden residente Knoten nicht f r die R umung in Betracht gezogen wenn die Grenze erreicht ist Um einen Knoten als resident zu kennzeichnen sollte die Node setResident API verwendet werden Standardm ig sind die neu erzeugten Knoten nicht resident Das resident Attribut eines Knotens wird nicht repliziert oder persistiert und ist nicht transaktionsf hig Als Beispiel f r einen Anwendungsfall residenter Knoten k nnte auf diese Weise sichergestellt werden dass Pfadknoten keinen zus tzlichen L rm in einer Eviction Richtlinie verursachen z B 68 Kapitel 10 Eviction Map lotsOfData generateData cache put a b c lotsOfData cache getRoot getChild a setResident true cache getRoot getChild a b setResident true In diesem Beispiel sind die Knoten a und a b Pfade die nur vorhanden sind um die Existenz des Knotens a b c zu erm glichen und sie enthalten selbst keinerlei Daten Als solches sind sie gute Kandidaten zur Kennzeichnung als residente Knoten Dadurch wird die Speicherverwaltung verbessert da keine Eviction Ereignisse generiert werden m ssen wenn auf a und a b zugegriffen wird Amer U Wenn Attribute zu einem residenten Knoten hinzugef gt werden z B cache put a k y im obigen Beispiel macht es Sinn die Knoten wieder als nicht resident zu kennz
156. x verschiedenen Versionen von JBoss Cache JGroups und JBoss Application Server enth lt 34 Teil II JBoss Cache Architektur Teil Il JBoss Cache Architektur Dieser Abschnitt behandelt die JBoss Cache Architektur ausf hrlicher und richtet sich an Entwickler die fortgeschrittenere Cache Funktionen verwenden m chten den Cache erweitern oder verbessern Plugins schreiben oder die ganz einfach gerne einen Blick unter die Haube werfen wollen 35 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Kapitel 7 Architektur 7 1 Datenstrukturen innerhalb des Caches Ein Cache besteht aus einer Gruppe von Node Instanzen Knoten die in einer Baumstruktur angeordnet sind Jeder Node enth lt eine Map welche die zu cachenden Datenobjekte enth lt Es ist wichtig zu verstehen dass die Struktur ein mathematischer Baum ist kein Graph jeder Knoten hat genau ein bergeordnetes Element und der Wurzelknoten wird durch den konstanten vollqualifizierten Namen bezeichnet Fqn ROOT Abbildung 7 1 Daten in Baumstruktur Im obigen Diagramm steht jeder Kasten f r eine JVM Sie sehen 2 Caches in separaten JVMs die ihre Daten zum jeweils anderen replizieren repliziert Selbstverst ndlich k nnen Sie mehr als zwei Caches in einem Cluster haben Abh ngig von den transaktionalen Einstellungen erfolgt diese Replikation entweder nach jeder nderung oder erst nach Abschluss einer Transaktion zum Zeitpunkt de
157. xampleCacheConfig class org jboss cache config Configuration gt build up the Configuration lt bean gt lt Factory to build the Cache gt lt bean name DefaultCacheFactory class org jboss cache DefaultCacheFactory gt lt constructor factoryClass org jboss cache DefaultCacheFactory factoryMethod getInstance gt lt bean gt lt The cache itself gt lt bean name ExampleCache class org jboss cache CacheImp1 gt lt constructor factoryMethod createnewInstance gt lt factory bean DefaultCacheFactory gt lt parameter gt lt inject bean ExampleCacheConfig gt lt parameter gt lt parameter gt false lt parameter gt lt constructor gt lt bean gt lt JMX Management gt lt bean name ExampleCacheJmxWrapper class org jboss cache jmx CacheJmxWrapper gt lt annotation gt org jboss aop microcontainer aspects jmx JMX name jboss cache service ExampleTreeCache exposedInterface org jboss cache jmx CacheJmxWrapperMBean class registerDirectly true lt annotation gt lt constructor gt lt parameter gt lt inject bean ExampleCache gt lt parameter gt lt constructor gt lt bean gt lt deployment gt CacheJmxWrapper das Erzeugen und Starten des Cache bernehmen wenn er mit einer Configuration ausgestattet wurde Dies ist das bevorzugte Verfahren mit dem Microcontainer da es die Boilerplate XML zum Erzeugen der CacheFactory erspart 29 JBoss Enterpris
158. yReplication J Ol Buddylocator org jboss cache buddyreplication lt lt getter gt gt getConfigd BuddyLocatorContig init config BuddyLocatorContig void iocateBuddiest buddyPoolMap Map lt K gt Address V gt String gt currentMem bership List lt E gt Address gt dataQwmer Address List lt E gt Address gt org jboss cache buddyreplication Abbildung 8 1 BuddyLocator Buddy Replikation verwendet eine Instanz eines BuddyLocator der Uber eine Logik zur Auswahl von Buddys in einem Netzwerk verf gt JBoss Cache wird derzeit mit einer einzelnen Implementierung geliefert NextMemberBuddyLocator die standardm ig verwendet wird wenn keine Implementierung angegeben wird Der NextMemberBuddyLocator w hlt wie der Name bereits andeutet das n chste Mitglied im Cluster und gew hrleistet so eine gleichm ige Verteilung f r jede Instanz 43 JBoss Enterprise Application Platform 5 0 JBoss Cache Benutzerhandbuch Der NextMemberBuddyLocator akzeptiert 2 Parameter beide sind optional numBuddies bestimmt wie viele Buddys jede Instanz wahlen sollte um ihre Daten zu sichern Dies ist standardm ig 1 ignoreColocatedBuddies bedeutet dass jede Instanz versucht einen Buddy auf einem anderen physischen Host zu w hlen Falls dies nicht m glich ist so f llt sie auf gemeinsam installierte Instanzen zur ck Die Standardeinstellung hier lautet true 8 1 2 2 2 B
Download Pdf Manuals
Related Search
Related Contents
Samsung 18ppm Imprimante laser mono ML-1860 Manuel de l'utilisateur Lettre d`information n° 1, octobre 2014 Trouver un stage à Rennes : mode d`emploi Samsung K3 1GB Black Benutzerhandbuch 2 - Turmix User Manual - GTX Corporation 取扱説明書 ハンマドリル フラッシュバルブ Guía de inicio rápido Copyright © All rights reserved.
Failed to retrieve file