Contrôle du cycle de vie d'une instance ObjectGrid avec l'interface ObjectGridManager

Vous pouvez utiliser l'interface ObjectGridManager pour contrôler le cycle de vie d'une instance ObjectGrid à l'aide d'un bean de démarrage ou d'un servlet.

Gestion du cycle de vie à l'aide d'un bean de démarrage

Un bean de démarrage permet de contrôler le cycle de vie d'une instance ObjectGrid. Un bean de démarrage est chargé au démarrage d'une application. Avec un bean de démarrage, le code peut être exécuté chaque fois qu'une application démarre ou s'arrête de manière imprévue. Pour créer un bean de démarrage, utilisez l'interface home com.ibm.websphere.startupservice.AppStartUpHome et l'interface éloignée com.ibm.websphere.startupservice.AppStartUp. Implémentez les méthodes start et stop sur le bean. La méthode start est appelée chaque fois que l'application démarre. La méthode stop est appelée à l'arrêt de l'application. La méthode start permet de créer des instances ObjectGrid. La méthode stop permet de supprimer des instances ObjectGrid. Voici un fragment de code illustrant cette gestion du cycle de vie d'ObjectGrid dans un bean de démarrage :
public class MyStartupBean implements javax.ejb.SessionBean {
    private ObjectGridManager objectGridManager;

    /* Les méthodes de l'interface SessionBean ont été retirées
     * de cet exemple afin de limiter la taille de ce dernier */

    public boolean start(){
        // Démarrage du bean de démarrage
        // Cette méthode est appelée au démarrage de l'application
        objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
        try {
            // créez 2 instances ObjectGrid et placez-les en cache
            ObjectGrid bookstoreGrid = objectGridManager.createObjectGrid("bookstore", true);
            bookstoreGrid.defineMap("book");
            ObjectGrid videostoreGrid = objectGridManager.createObjectGrid("videostore", true);
            // dans la machine virtuelle Java.
            // Ces instances ObjectGrid peuvent maintenant être extraite
            //de l'ObjectGridManager à l'aide de la méthide getObjectGrid(String)
        } catch (ObjectGridException e) {
            e.printStackTrace();
            return false;
        }

        return true;
    }

    public void stop(){
        // Arrêt du bean de démarrage
        // Cette méthode est appelée à l'arrêt de l'application
        try {
            // Supprimez et détruisez les instances ObjectGrid en cache
            objectGridManager.removeObjectGrid("bookstore", true);
            objectGridManager.removeObjectGrid("videostore", true);
        } catch (ObjectGridException e) {
            e.printStackTrace();
        }
    }
}
Une fois que la méthode start a été appelée, les instances ObjectGrid nouvellement créées sont extraites de l'interface ObjectGridManager. Par exemple, si un servlet est inclus dans l'application, il accède à eXtreme Scale à l'aide du fragment de code suivant :
ObjectGridManager objectGridManager = 
	ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid bookstoreGrid = objectGridManager.getObjectGrid("bookstore");
ObjectGrid videostoreGrid = objectGridManager.getObjectGrid("videostore");

Gestion du cycle de vie à l'aide d'un servlet

Pour gérer le cycle de vie d'une instance ObjectGrid dans un servlet, vous pouvez utiliser la méthode init afin de créer une instance ObjectGrid et la méthode destroy afin de supprimer l'instance ObjectGrid. Si l'instance ObjectGrid est placée en cache, elle est extraite et manipulée dans le code du servlet. Vous trouverez ci-après un exemple de code illustrant la création, la manipulation et la destruction d'une instance ObjectGrid dans un servlet :
public class MyObjectGridServlet extends HttpServlet implements Servlet {
    private ObjectGridManager objectGridManager;

    public MyObjectGridServlet() {
        super();
    }

    public void init(ServletConfig arg0) throws ServletException {
        super.init();
        objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
        try {
            // créez et placez en cache une instance ObjectGrid intitulée bookstore
            ObjectGrid bookstoreGrid = 
						objectGridManager.createObjectGrid("bookstore", true);
            bookstoreGrid.defineMap("book");
        } catch (ObjectGridException e) {
            e.printStackTrace();
        }
    }

    protected void doGet(HttpServletRequest req, HttpServletResponse res)
        throws ServletException, IOException {
        ObjectGrid bookstoreGrid = objectGridManager.getObjectGrid("bookstore");
        Session session = bookstoreGrid.getSession();
        ObjectMap bookMap = session.getMap("book");
        // effectuez des opérations sur l'instance ObjectGrid en cache
        // ...
	// Fermer la session (facultatif dans les versions 7.1.1 et ultérieures) pour améliorer les performances
	session.close();
	 }
    public void destroy() {
        super.destroy();
        try {
            // supprimez et détruisez l'instance ObjectGrid bookstore mise en cache
            objectGridManager.removeObjectGrid("bookstore", true);
        } catch (ObjectGridException e) {
            e.printStackTrace();
        }
    }
}