Chacune de ces méthodes crée une instance locale d'ObjectGrid.
Le fragment de code qui suit montre comment obtenir et configurer une instance ObjectGrid locale avec eXtreme Scale.
// Obtain a local ObjectGrid reference
// you can create a new ObjectGrid, or get configured ObjectGrid
// defined in ObjectGrid xml file
ObjectGridManager objectGridManager =
ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid ivObjectGrid =
objectGridManager.createObjectGrid("objectgridName");
// Add a TransactionCallback into ObjectGrid
HeapTransactionCallback tcb = new HeapTransactionCallback();
ivObjectGrid.setTransactionCallback(tcb);
// Define a BackingMap
// if the BackingMap is configured in ObjectGrid xml
// file, you can just get it.
BackingMap ivBackingMap = ivObjectGrid.defineMap("myMap");
// Add a Loader into BackingMap
Loader ivLoader = new HeapCacheLoader();
ivBackingMap.setLoader(ivLoader);
// initialize ObjectGrid
ivObjectGrid.initialize();
// Obtain a session to be used by the current thread.
// Session can not be shared by multiple threads
Session ivSession = ivObjectGrid.getSession();
// Obtaining ObjectMap from ObjectGrid Session
ObjectMap objectMap = ivSession.getMap("myMap");
Le code qui suit est un exemple simple montrant comment créer un ObjectGrid devant être partagé entre un grand nombre d'utilisateurs.
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..*/
Ce fragment de code Java code créait et mettait en cache l'ObjectGrid Employees. Cet ObjectGrid était initialisé avec la configuration par défaut et était prêt à l'emploi. Le second paramètre de la méthode createObjectGrid avait la valeur true, ce qui obligeait l'ObjectGridManager à mettre en cache l'instance ObjectGrid qu'il créait. Avec une valeur false pour ce paramètre, l'instance ne serait pas mise en cache. Chaque instance ObjectGrid a un nom et l'instance peut être partagée entre un grand nombre de clients à partir de ce nom.
Si l'instance ObjectGrid est utilisé en partage d'égal à égal, la mise en cache doit être égale à true. Pour plus d'informations sur le partage d'égal à égal, voir Répartition de modifications entre des machines virtuelles Java homologues.
WebSphere eXtreme Scale est extrêmement configurable. L'exemple qui précède montre comment créer un simple ObjectGrid sans aucune configuration. L'exemple qui vient montre comment créer une instance ObjectGrid préconfigurée à partir d'un fichier XML de configuration. Il existe deux manières de configurer une instance ObjectGrid : par programmation ou à partir d'un fichier XML de configuration. Il est également possible de configurer ObjectGrid en combinant les deux approches. L'interface ObjectGridManager autorise la création d'une instance ObjectGrid à partir de la configuration XML. L'interface ObjectGridManager comporte plusieurs méthodes qui acceptent une URL comme argument. Chaque fichier XML qui est passé à ObjectGridManager doit être validé par rapport au schéma. La validation XML ne peut être désactivée que lorsque le fichier a été précédemment validé et qu'aucune modification n'est intervenue depuis la dernière validation du fichier. Désactiver la validation fait certes gagner un peu de temps système, mais au prix du risque d'utiliser un fichier XML non valide. IBM® Java Developer Kit (JDK) Version 5 prend en charge la validation XML. Si l'on utilise un JDK qui n'intègre pas la validation XML, il peut être nécessaire d'utiliser Apache Xerces pour valider le code XML.
Le fragment de code Java qui suit montre comment passer un fichier XML de configuration afin de créer un ObjectGrid.
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; // turn XML validation on
boolean cacheInstance = true; // Cache the instance
String objectGridName="Employees"; // Name of Object Grid URL
allObjectGrids = new URL("file:test/myObjectGrid.xml");
final ObjectGridManager oGridManager=
ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid employees =
oGridManager.createObjectGrid(objectGridName, allObjectGrids,
bvalidateXML, cacheInstance);
Le fichier XML peut contenir
des informations de configuration de plusieurs ObjectGrids. Le fragment de code précédent
retournait spécifiquement un ObjectGrid Employees, en présupposant
que la configuration d'Employees était définie dans le fichier. /**
* Méthode de fabrique simple permettant de retourner une instance
* d'Object Grid. Attribution d'un nom exclusif.
* L'instance n'est pas mise en cache.
* Les utilisateurs peuvent se servir de {@link ObjectGrid#setName(String)} pour modifier
* le nom de l'ObjectGrid.
*
* @return ObjectGrid instance d'ObjectGrid portant le nom exclusif attribué
* @throws ObjectGridException toute erreur rencontrée pendant
* la création de l'ObjectGrid
*/
public ObjectGrid createObjectGrid() throws ObjectGridException;
/**
* Méthode de fabrique simple permettant de retourner une instance
* du nom spécifié. Les instances peuvent être mises en cache. Si un ObjectGrid
* de ce nom a déjà été mis en cache, une ObjectGridException
* sera levée.
*
* @param objectGridName le nom de l'ObjectGrid à créer
* @param cacheInstance true, si l'instance doit être mise en cache
* @return an ObjectGrid instance
* @this le nom a déjà été mis en cache
* ou toute erreur survenue durant la création de l'ObjectGrid
*/
public ObjectGrid createObjectGrid(String objectGridName, boolean cacheInstance)
throws ObjectGridException;
/**
* Crée une instance ObjectGrid du nom ObjectGrid spécifié. L'instance
* ObjectGrid créée sera mise en cache
* @param objectGridName le nom de l'instance ObjectGrid à créer
* @return an ObjectGrid instance
* @throws ObjectGridException si un ObjectGrid de ce nom a déjà
* été mis en cache ou si une erreur a été rencontrée pendant la création de ObjectGrid
*/
public ObjectGrid createObjectGrid(String objectGridName)
throws ObjectGridException;
/**
* Crée une instance ObjectGrid à partir du nom ObjectGrid
* et du fichier XML spécifiés. L'instance ObjectGrid définie dans le fichier XML
* avec le nom ObjectGrid spécifié sera créée et retournée. Si cet ObjectGrid
* est introuvable dans le fichier XML, une exception sera levée.
*
* Cette instance ObjectGrid peut être mise en cache.
*
* Si l'URL est null, elle sera tout bonnement ignorée. Dans ce cas, cette méthode se comporte
* exactement comme {@link #createObjectGrid(String, boolean)}.
*
* @param objectGridName le nom de l'instance ObjectGrid à retourner. Ce nom
* ne doit pas être null.
* @param xmlFile URL vers un fichier XML correctement formé basé sur le schéma ObjectGrid.
* @param enableXmlValidation si true, le XML est validé
* @param cacheInstance valeur booléenne indiquant
* si la ou les instances
* définies dans le XML seront ou non mises en cache. Si true, la ou les instances
* seront mises en cache.
*
* @throws ObjectGridException si un ObjectGrid de ce nom
* a déjà été mis en cache ou si aucun nom d'ObjectGrid n'a été trouvé dans le fichier XML
* ou si une erreur quelconque est survenue durant la création de l'ObjectGrid
* @return an ObjectGrid instance
* @see ObjectGrid
*/
public ObjectGrid createObjectGrid(String objectGridName, final URL xmlFile,
final boolean enableXmlValidation, boolean cacheInstance)
throws ObjectGridException;
/**
* Traite un fichier XML et crée une liste d'objets
* à partir de ce fichier.
* Ces instances ObjectGrid peuvent être mises en cache.
* Une ObjectGridException sera levée pour toute tentative de mettre en cache
* un nouvel ObjectGrid
* qui aura le même nom qu'un an ObjectGrid déjà présent dans le cache.
*
* @param xmlFile le fichier qui définit un ou plusieurs
* ObjectGrids
* @param enableXmlValidation si true, le XML est validé
* par rapport au schéma
* @param cacheInstances si true, mise en cache de toutes les instances ObjectGrid
* créées à partir du fichier
* @return an ObjectGrid instance
* @throws ObjectGridException si tentative de créer et de mettre en cache
* un ObjectGrid du même nom
* qu'un ObjectGrid déjà mis en cache ou pour toute autre erreur
* survenue pendant
* la création de l'ObjectGrid
*/
public List createObjectGrids(final URL xmlFile, final boolean enableXmlValidation,
boolean cacheInstances) throws ObjectGridException;
/** Crée tous les ObjectGrids trouvés dans le fichier XML. Celui-ci sera
* validé par rapport au schéma. Chaque instance ObjectGrid créée sera
* mise en cache. Une ObjectGridException sera levée pour toute tentative de mettre en cache
* un nouvel ObjectGrid qui aura le même nom qu'un ObjectGrid
* déjà présent dans le cache.
* @param xmlFile Le fichier XML à traiter. Les ObjectGrids seront créés
* à partir du contenu de ce fichier.
* @return liste des instances ObjectGrid qui ont été créées
* @throws ObjectGridException si un ObjectGrid de même nom
* que l'un de ceux trouvés dans le XML a déjà été mis en cache
* ou si une autre erreur est survenue durant la création de l'ObjectGrid
*/
public List createObjectGrids(final URL xmlFile) throws ObjectGridException;
/**
* Traite le fichier XML et crée une seule instance ObjectGrid
* avec l'objectGridName spécifié uniquement si un ObjectGrid de ce nom est trouvé
* dans le fichier. S'il n'existe aucun ObjectGrid de ce nom défini dans le fichier XML,
* une ObjectGridException
* sera levée. L'instance ObjectGrid créée sera mise en cache.
* @param objectGridName nom de l'ObjectGrid à créer. Cet ObjectGrid
* doit être défini dans le fichier XML.
* @param xmlFile Le fichier XML à traiter.
* @return Nouvel objet ObjectGrid créé
* @throws ObjectGridException si un ObjectGrid de ce nom
* a déjà été mis en cache ou si aucun nom d'ObjectGrid n'a été trouvé dans le fichier XML
* ou si une erreur quelconque est survenue durant la création de l'ObjectGrid
*/
public ObjectGrid createObjectGrid(String objectGridName, URL xmlFile)
throws ObjectGridException;