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