Jede dieser Methoden erstellt eine lokale Instanz eines ObjectGrids.
Das folgende Code-Snippet veranschaulicht, wie eine lokale ObjectGrid-Instanz mit eXtreme Scale erstellt und konfiguriert wird.
// Lokale ObjectGrid-Referenz anfordern
// Sie können ein neues ObjectGrid erstellen oder ein konfiguriertes
// ObjectGrid abrufen, das in der ObjectGrid-XML-Datei definiert ist.
ObjectGridManager objectGridManager =
ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid ivObjectGrid =
objectGridManager.createObjectGrid("objectgridName");
// Dem ObjectGrid einen TransactionCallback hinzufügen.
HeapTransactionCallback tcb = new HeapTransactionCallback();
ivObjectGrid.setTransactionCallback(tcb);
// BackingMap definieren.
// Wenn die BackingMap in der ObjectGrid-XML-Datei
// konfiguriert ist, können Sie sie einfach abrufen.
BackingMap ivBackingMap = ivObjectGrid.defineMap("myMap");
// Der BackingMap einen Loader hinzufügen.
Loader ivLoader = new HeapCacheLoader();
ivBackingMap.setLoader(ivLoader);
// ObjectGrid initialisieren.
ivObjectGrid.initialize();
// Sitzung für den aktuellen Thread anfordern.
// Die Sitzung kann nicht von mehreren Threads gemeinsam genutzt werden.
Session ivSession = ivObjectGrid.getSession();
// ObjectMap vom ObjectGrid-Session-Objekt anfordern.
ObjectMap objectMap = ivSession.getMap("myMap");
Der folgende Code zeigt einen einfachen Fall für die Erstellung eines ObjectGrids, das von vielen Benutzern gemeinsam verwendet werden kann.
import com.ibm.websphere.objectgrid.ObjectGrid;
import com.ibm.websphere.objectgrid.ObjectGridException;
import com.ibm.websphere.objectgrid.ObjectGridManagerFactory;
import com.ibm.websphere.objectgrid.ObjectGridManager;
final ObjectGridManager oGridManager=
ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid employees =
oGridManager.createObjectGrid("Employees",true);
employees.initialize();
employees.
/*sample continues..*/
Das vorherige Java-Code-Snippet erstellt und ObjectGrid "Employees" und stellt es in den Cache. Das ObjectGrid "Employees" wird mit der Standardkonfiguration initialisiert und kann dann verwendet werden. Der zweite Parameter in der Methode "createObjectGrid" wird auf "true" gesetzt. Damit wird ObjectGridManager angewiesen, die erstellte ObjectGrid-Instanz zwischenzuspeichern. Wenn dieser Parameter auf "false" gesetzt wird, wird die Instanz nicht zwischengespeichert. Jede ObjectGrid-Instanz hat einen Namen, und die Instanz kann von vielen Clients oder Benutzern auf der Basis dieses Namens gemeinsam genutzt werden.
Wenn die ObjectGrid-Instanz im Peer-to-Peer-Modus gemeinsam genutzt wird, muss das Caching auf "true" gesetzt werden. Weitere Informationen zur gemeinsamen Nutzung im Peer-to-Peer-Modus finden Sie im Abschnitt zur Verteilung von Änderungen an Peer-JVMs.
WebSphere eXtreme Scale ist hoch konfigurierbar. Das vorherige Beispiel veranschaulicht, wie ein einfaches ObjectGrid ohne Konfiguration erstellt wird. Dieses Beispiel zeigt, wie Sie eine vorkonfigurierte ObjectdGrid-Instanz erstellen, die auf einer XML-Konfigurationsdatei basiert. Sie können eine ObjectGrid-Instanz programmgesteuert oder durch die Verwendung einer XML-basierten Konfigurationsdatei konfigurieren. Sie können ObjectGrid auch über eine Kombination beider Ansätze konfigurieren. Die Schnittstelle "ObjectGridManager" lässt die Erstellung einer ObjectGrid-Instanz auf der Basis der XML-Konfiguration zu. Die Schnittstelle "ObjectGridManager" hat mehrere Methoden, die einen URL als Argument akzeptieren. Jede XML-Datei, die an die Schnittstelle "ObjectGridManager" übergeben wird, muss anhand des Schemas validiert werden. Die XML-Validierung kann nur inaktiviert werden, wenn die Datei zuvor validiert wurde und seit der letzten Validierung keine Änderungen mehr an der Datei vorgenommen wurden. Durch die Inaktivierung kann ein geringer Teil der Kosten eingespart werden, bringt aber das Risiko der Verwendung einer ungültigen XML-Datei mit sich. IBM® Java Developer Kit (JDK) Version 5 enthält Unterstützung für die XML-Validierung. Wenn Sie ein JDK verwenden, das diese Unterstützung nicht besitzt, kann Apache Xerces für die Validierung der XML erforderlich sein.
Das folgende Java-Code-Snippet veranschaulicht, wie eine XML-Konfigurationsdatei zum Erstellen eines ObjectGrids übergeben wird.
import java.net.MalformedURLException;
import java.net.URL;
import com.ibm.websphere.objectgrid.ObjectGrid;
import com.ibm.websphere.objectgrid.ObjectGridException;
import com.ibm.websphere.objectgrid.ObjectGridManager;
import com.ibm.websphere.objectgrid.ObjectGridManagerFactory;
boolean validateXML = true; // XML-Validierung aktivieren
boolean cacheInstance = true; // Instanz zwischenspeichern
String objectGridName="Employees"; // Name des ObjectGrid-URL
allObjectGrids = new URL("file:test/myObjectGrid.xml");
final ObjectGridManager oGridManager=
ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid employees =
oGridManager.createObjectGrid(objectGridName, allObjectGrids,
bvalidateXML, cacheInstance);
Die XML-Datei kann Konfigurationsdaten für mehrere
ObjectGrids enthalten. Das vorherige Code-Snippet gibt das ObjectGrid
"Employees" zurück, vorausgesetzt, dass die Employees-Konfiguration in der Datei definiert ist./**
* Eine einfache Factory-Methode, mit der eine Instanz eines
* ObjectGrids zurückgegeben werden kann. Es wird ein eindeutiger Name zugeordnet.
* Die ObjectGrid-Instanz wird nicht zwischengespeichert.
* Benutzer können anschließend {@link ObjectGrid#setName(String)} verwenden,
* um den ObjectGrid-Namen zu ändern.
*
* @return ObjectGrid Eine ObjectGrid-Instanz mit einem eindeutigen zugeordneten Namen.
* @throws ObjectGridException bei allen Fehlern, die während der Erstellung
* des ObjectGrids auftreten.
*/
public ObjectGrid createObjectGrid() throws ObjectGridException;
/**
* Eine einfache Factory-Methode, mit der eine ObjectGrid-Instanz des angegebenen
* Namens zurückgegeben werden kann. Die ObjectGrid-Instanzen können zwischengespeichert
* werden. Wenn bereits eine ObjectGrid-Instanz mit diesem Namen zwischengespeichert
* ist, wird eine Ausnahme des Typs "ObjectGridException" ausgelöst.
*
* @param objectGridName Der Name der zu erstellenden ObjectGrid-Instanz.
* @param cacheInstance true, wenn die ObjectGrid-Instanz zwischengespeichert werden soll.
* @return Eine ObjectGrid-Instanz.
* @throws ObjectGridException, wenn dieser Name bereits zwischengespeichert wurde oder ein
* Fehler während der ObjectGrid-Erstellung aufgetreten ist.
*/
public ObjectGrid createObjectGrid(String objectGridName, boolean cacheInstance)
throws ObjectGridException;
/**
* ObjectGrid-Instanz mit dem angegebenen ObjectGrid-Namen erstellen. Die
* erstellte ObjectGrid-Instanz wird zwischengespeichert.
* @param objectGridName Der Name der zu erstellenden ObjectGrid-Instanz.
* @return Eine ObjectGrid-Instanz.
* @throws ObjectGridException, wenn bereits ein ObjectGrid mit diesem Namen
* zwischengespeichert wurde oder ein Fehler während der Erstellung des ObjectGrids
* aufgetreten ist.
*/
public ObjectGrid createObjectGrid(String objectGridName)
throws ObjectGridException;
/**
* ObjectGrid-Instanz auf der Basis des angegebenen ObjectGrid-Namens und der
* XML-Datei erstellen. Die in der XML-Datei definierte ObjectGrid-Instanz wird
* mit dem angegebenen ObjectGrid-Namen erstellt und zurückgegeben. Wird ein
* solches ObjectGrid nicht in der XML-Datei gefunden, wird eine Ausnahme ausgelöst.
*
* Diese ObjecGrid-Instanz kann zwischengespeichert werden.
*
* Wenn der URL null ist, wird er einfach ignoriert. In diesem Fall, verhält sich
* diese Methode genauso wie {@link #createObjectGrid(String, boolean)}.
*
* @param objectGridName Der Name der zurückzugebenden ObjectGrid-Instanz. Er
* darf nicht null sein.
* @param xmlFile Der URL einer gemäß ObjectGrid-Schema korrekt formatierten XML-Datei.
* @param enableXmlValidation Wenn true, wird die XML validiert.
* @param cacheInstance Ein boolescher Wert, der anzeigt, ob die ObjectGrid-Instanzen,
* die in der XML definiert sind, zwischengespeichert werden oder nicht. Wenn true,
* werden die Instanzen zwischengespeichert.
*
* @throws ObjectGridException, wenn bereits ein ObjectGrid mit demselben
* Namen zwischengespeichert wurde, kein ObjectGrid-Name in der XML-Datei gefunden
* wird oder ein anderer Fehler während der Erstellung des ObjectGrids auftritt.
* @return Eine ObjectGrid-Instanz.
* @see ObjectGrid
*/
public ObjectGrid createObjectGrid(String objectGridName, final URL xmlFile,
final boolean enableXmlValidation, boolean cacheInstance)
throws ObjectGridException;
/**
* XML-Datei verarbeiten und eine Liste mit ObjectGrid-Objekten auf der Basis
* dieser Datei erstellen.
* Diese ObjecGrid-Instanzen können zwischengespeichert werden.
* Es wird eine Ausnahme des Typs "ObjectGridException" ausgelöst, wenn versucht
* wird, eine neu erstellte ObjectGrid-Instanz zwischenzuspeichern, die
* denselben Namen hat wie eine bereits zwischengespeicherte ObjectGrid-Instanz.
*
* @param xmlFile Die Datei, die ein ObjectGrid oder mehrere
* ObjectGrids definiert.
* @param enableXmlValidation Bei true wird die XML anhand des
* Schemas validiert.
* @param cacheInstances Bei true werden alle auf der Basis dieser Datei
* erstellen ObjectGrid-Instanzen zwischengespeichert.
* @return Eine ObjectGrid-Instanz.
* @throws ObjectGridException, wenn versucht wird, eine ObjectGrid-Instanz
* zu erstellen und zwischenzuspeichern, die denselben Namen wie eine bereits
* zwischengespeicherte ObjectGrid-Instanz hat, oder wenn während der
* Erstellung der ObjectGrid-Instanz ein anderer Fehler auftritt.
*/
public List createObjectGrids(final URL xmlFile, final boolean enableXmlValidation,
boolean cacheInstances) throws ObjectGridException;
/** Alle ObjectGrids erstellen, die in der XML-Datei enthalten sind. Die
* XML-Datei wird anhand des Schemas validiert. Alle erstellten ObjectGrid-Instanzen
* werden zwischengespeichert. Es wird eine Ausnahme des Typs "ObjectGridException"
* ausgelöst, wenn versucht wird, eine neu erstellte ObjectGrid-Instanz zwischenzuspeichern,
* die denselben Namen hat wie eine bereits zwischengespeicherte ObjectGrid-Instanz.
* @param xmlFile Die zu verarbeitende XML-Datei. ObjectGrids werden auf der Basis
* der Angaben in der Datei erstellt.
* @return Eine Liste mit ObjectGrid-Instanzen, die erstellt wurden.
* @throws ObjectGridException, wenn bereits eine ObjectGrid-Instanz zwischengespeichert
* wurde, die einen der in der XML-Datei definierten Namen hat, oder wenn während
* der Erstellung der ObjectGrid-Instanz ein Fehler auftritt.
*/
public List createObjectGrids(final URL xmlFile) throws ObjectGridException;
/**
* XML-Datei verarbeiten und nur dann eine einzige ObjectGrid-Instanz mit dem
* angegebenen ObjectGrid-Namen erstellen, wenn ein ObjectGrid mit diesem Namen
* in der Datei enthalten ist. Wenn kein ObjectGrid mit diesem Namen in der
* XML-Datei vorhanden ist, wird eine Ausnahme des Typs "ObjectGridException"
* ausgelöst. Die erstellte ObjectGrid-Instanz wird zwischengespeichert.
* @param objectGridName Name des erstellenden ObjectGrids. Dieses ObjectGrid
* muss in der XML-Datei definiert sein.
* @param xmlFile Die zu verarbeitende XML-Datei.
* @return Ein neu erstelltes ObjectGrid.
* @throws ObjectGridException, wenn bereits ein ObjectGrid mit demselben
* Namen zwischengespeichert wurde, kein ObjectGrid-Name in der XML-Datei gefunden
* wird oder ein anderer Fehler während der Erstellung des ObjectGrids auftritt.
*/
public ObjectGrid createObjectGrid(String objectGridName, URL xmlFile)
throws ObjectGridException;