JBoss Enterprise Application Platform 5.0 JBoss Cache Übung zum Gebrauch mit der JBoss Enterprise Application Platform 5.0 Ausgabe 2.0 Manik Surtani Galder Zamarreño JBoss Enterprise Application Platform 5.0 JBoss Cache Übung zum Gebrauch mit der JBoss Enterprise Application Platform 5.0 Ausgabe 2.0 Manik Surtani Galder Zamarreño Rechtlicher Hinweis Copyright © 2009 Red Hat, Inc. T his 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 T orvalds in the United States and other countries. Java ® is a registered trademark of Oracle and/or its affiliates. XFS ® 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. T he 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. Z usammenfassung Bei diesem Buch handelt es sich um eine Übung zu T reeCache und JBossCache. Inhaltsverzeichnis Inhaltsverzeichnis .Kapitel . . . . . . . 1. . . .Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3. . . . . . . . . . 1.1. Was Sie im Folgenden lernen werden 3 . . . . . . . . 2. Kapitel . . .Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4. . . . . . . . . . . . . . . . . . 3. Kapitel . . .Skript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5. . . . . . . . . . . . . . . . . . 4. .. .Ausführen Kapitel . . . . . . . . . . .der . . . .Übungs-GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6. . . . . . . . . . .Kapitel . . . . . . . 5. . . .Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7. . . . . . . . . . 5.1. Caches und Knoten 7 5.2. Replikation 8 5.3. T ransaktionen 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9. . . . . . . . . . Versionsgeschichte 1 JBoss Enterprise Application Platform 5.0 JBoss Cache Übung 2 Kapitel 1. Einführung Kapitel 1. Einführung JBoss Cache ist ein speicherinterner, replizierter, transaktionaler und feingranularer Cache. Diese Übungen konzentrieren sich auf die Kern-Cache-API. Bitte werfen Sie einen Blick auf die Übungen zum POJO Cache, wenn Sie stattdessen an der POJO Cache API interessiert sind. Einzelheiten über Konfiguration, Verwendung und Programmierschnittstellen finden Sie im JBoss Cache Benutzerhandbuch für JBoss Enterprise Application Platform 5.0, erhältlich unter http://www.redhat.com/docs/en-US/JBoss_Enterprise_Application_Platform/. 1.1. Was Sie im Folgenden lernen werden Erzeugung und Modifizierung eines Caches Z ustandsreplikation T ransaktionen 3 JBoss Enterprise Application Platform 5.0 JBoss Cache Übung Kapitel 2. Konfiguration Laden Sie zunächst die JBoss Cache 3.x Distribution von der Download-Seite herunter. Sie benötigen die all-Distribution (jbosscache-core-3.X.Y.GA-all.zip). Entpacken Sie die Datei, wodurch ein Verzeichnis angelegt wird, das die Distribution enthält, wie z.B. jbosscache-core-3.X.Y. Im weiteren Verlauf dieser Übung wird dieses Verzeichnis als ${JBOSSCACHE_HOME} bezeichnet. Die Konfigurationsdateien befinden sich im ${JBOSSCACHE_HOME}/etc-Verzeichnis. Sie können das Verhalten des Caches durch Bearbeiten der verschiedenen Konfigurationsdateien verändern. log4 j.xm l: Protokollierungsausgabe. Sie können die Protokollierung aktivieren, Protokollierungsebenen festlegen, oder den Namen oder Pfad der Protokollierungsdatei ändern. config-sam ples/total-replication.xm l: Die für diese Übung verwendete CacheKonfigurationsdatei. 4 Kapitel 3. Skript Kapitel 3. Skript Das einzige für diese Übung erforderliche Skript ist das ${JBOSSCACHE_HOME}/tutorial/build.xm l-Ant-Skript. Außerdem muss Apache Ant installiert sein, um das Übungs-GUI ausführen zu können. 5 JBoss Enterprise Application Platform 5.0 JBoss Cache Übung Kapitel 4. Ausführen der Übungs-GUI Führen Sie das GUI folgendermaßen aus: Wechseln Sie in das ${JBOSSCACHE_HOME}/tutorial-Verzeichnis (z.B. cd ${JBOSSCACHE_HOME}/tutorial) Führen Sie das Ant-Skript aus (z.B. ant run) Dadurch erscheint ein GUI-Fenster, das Ihnen im oberen T eil eine Baumansicht des Caches und im unteren T eil eine BeanShell-Ansicht der JVM zeigt. Die BeanShell-Ansicht ist mit folgenden Variablen voreingestellt: cache: eine Referenz auf die org.jboss.cache.Cache-Schnittstelle, die von der GUI-Instanz verwendet wird. root: eine Referenz auf die Wurzel-org.jboss.cache.Node-Instanz für den obigen Cache. transactionManager: eine Referenz auf die registrierte javax.transaction.T ransactionManager-Instanz. Die Referenzen, die dem BeanShell-Fenster zur Verfügung stehen, verweisen auf dieselbe CacheInstanz, die auch von der Baumansicht im GUI verwendet werden. Um das GUI als replizierte Übung auszuführen, ist es hilfreich, ein neues Befehlszeilenfenster zu öffnen und dort das Ant-Skript erneut wie oben auszuführen. Dadurch erhalten Sie zwei Cache-Instanzen, die in zwei separaten GUIs laufen und ihre Z ustände untereinander replizieren. 6 Kapitel 5. Übungen Kapitel 5. Übungen Wichtig Wir empfehlen Ihnen, für jede der folgenden Übungen zunächst das GUI zu beenden und neu zu starten, um jedesmal mit leeren Caches zu beginnen. 5.1. Caches und Knoten Starten Sie für diese Übung eine einzelne Instanz des GUIs. In dieser Übung werden wir: Knoten unter dem Wurzelknoten erzeugen. Knoten unter dem Wurzelknoten entfernen, sowohl einzeln als auch rekursiv. Daten zu Knoten hinzufügen und aus ihnen entfernen. 1. Richten Sie die erforderlichen Fqns ein. Erzeugen Sie im BeanShell-Fenster drei Fqn-Variablen: childFqn1 = Fqn.fromString("/child1"); childFqn2 = Fqn.fromString("/child2"); childFqn3 = Fqn.fromString("/child2/child3"); 2. Erzeugen Sie untergeordnete Knoten unter dem Wurzelknoten. child1 = root.addChild(childFqn1); child2 = root.addChild(childFqn2); child3 = root.addChild(childFqn3); 3. Fragen Sie die Knoten ab. root.hasChild(childFqn1); // should return true child2.hasChild(childFqn3.getLastElement()); // should return true child3.getParent(); // should return child2 child2.getParent(); // should return root 4. Speichern Sie einige Daten in den Knoten. Durch Klick auf die Knoten in der Baumansicht sollten Sie die Inhalte des jeweiligen Knotens sehen. child1.put("key1", child1.put("key2", child2.put("key3", child2.put("key4", child3.put("key5", child3.put("key6", "value1"); "value2"); "value3"); "value4"); "value5"); "value6"); 5. Rufen Sie einige Daten ab. child1.getKeys(); child2.getData(); 6. Löschen Sie einige Daten in den Knoten. 7 JBoss Enterprise Application Platform 5.0 JBoss Cache Übung child1.remove("key1"); child2.remove("key3"); child3.clearData(); 7. Löschen Sie Knoten. root.removeChild(childFqn1); // will also remove any data held under child1 root.removeChild(childFqn2); // will recursively remove child3 as well 5.2. Replikation Starten Sie für diese Übung zwei Instanzen des GUIs. Wiederholen Sie die Aufgaben der vorherigen Übung, wechseln dabei aber beim Erzeugen/Löschen von Knoten und Hinzufügen/Löschen von Daten zwischen den zwei GUI-Fenstern hin- und her. Dies veranschaulicht, wie die zwei Cache-Instanzen in den beiden GUIs synchron gehalten werden. 5.3. Transaktionen Starten Sie für diese Übung zwei Instanzen des GUIs. Wiederholen Sie die Aufgaben der vorherigen Übung, starten jedoch vor dem Erzeugen/Löschen von Knoten und Hinzufügen/Löschen von Daten einige T ransaktionen. Dies veranschaulicht, dass nur an den T ransaktionsgrenzen Replikation stattfindet. Versuchen Sie auch, einige T ransaktionen zurückzusetzen, um zu sehen, dass in diesen Fällen nichts repliziert wird. Nachfolgend finden Sie den Beispielcode zur Verwaltung von T ransaktionen: tm = cache.getTransactionManager(); tm.begin(); // do operations here tm.commit(); // or tm.rollback(); 8 Versionsgeschichte Versionsgeschichte Version 2.0-4 .4 02 Rebuild with Publican 4.0.0 Fri Oct 25 2013 Rüdiger Landmann Version 2.0-4 .1 2013-06-11 Rebuild for updated legal template Misty Stanley-Jones Version 2.0-4 Rebuild for Publican 3.0 2012-07-18 Anthony T owns Version 1.0-0 Erster Entwurf. T hu Oct 22 2009 Laura Bailey 9