Controlando o Ciclo de Vida e um ObjectGrid com a Interface ObjectGridManager

É possível usar a interface ObjectGridManager para controlar o ciclo de vida de uma instância ObjectGrid usando um bean ou um servlet de inicialização.

Gerenciando o Ciclo de Vida com um Bean de Inicialização

Um bean de inicialização é usado para controlar o ciclo de vida de uma instância ObjectGrid. Um bean de inicialização é carregado quando um aplicativo é iniciado. Com um bean de inicialização, o código pode ser executado sempre que um aplicativo for iniciado ou parado conforme o esperado. Para criar um bean de inicialização, utilize a interface home com.ibm.websphere.startupservice.AppStartUpHome e a interface remota com.ibm.websphere.startupservice.AppStartUp. Implemente os métodos start e stop no bean. O método start é chamado sempre que o aplicativo é inicializado. O método stop é chamado quando o aplicativo é encerrado. O método start é usado para criar instâncias do ObjectGrid. O método stop é usado para remover as instâncias do ObjectGrid. A seguir há um fragmento de código que demonstra esse gerenciamento do ciclo de vida do ObjectGrid em um bean de inicialização:
public class MyStartupBean implements javax.ejb.SessionBean {
    private ObjectGridManager objectGridManager;

    /* The methods on the SessionBean interface have been
     * left out of this example for the sake of brevity */

    public boolean start(){
        // Iniciando o bean de inicialização
        // Este método é chamado quando o aplicativo é iniciado
        objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
        try {
            // criar 2 ObjectGrids e armazenar estas instâncias em cache
            ObjectGrid bookstoreGrid = objectGridManager.createObjectGrid("bookstore", true);
            bookstoreGrid.defineMap("book");
            ObjectGrid videostoreGrid = objectGridManager.createObjectGrid("videostore", true);
            // na JVM,
            // estes ObjectGrids agora podem ser recuperados do
            //ObjectGridManager utilizando o método getObjectGrid(String)
        } catch (ObjectGridException e) {
            e.printStackTrace();
            return false;
        }

        return true;
    }

    public void stop()  {
        // Parando o bean de inicialização
        // Este método é chamado quando o aplicativo é parado
        try {
            // remover os ObjectGrids armazenados em cache e destruí-los
            objectGridManager.removeObjectGrid("bookstore", true);
            objectGridManager.removeObjectGrid("videostore", true);
        } catch (ObjectGridException e) {
            e.printStackTrace();
        }
    }
}
Depois que o método start for chamado, as instâncias recém criadas do ObjectGrid serão recuperadas a partir da interface do ObjectGridManager. Por exemplo, se um servlet está incluído no aplicativo, o servlet acessa o eXtreme Scale utilizando o seguinte trecho de código:
ObjectGridManager objectGridManager = 
	ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid bookstoreGrid = objectGridManager.getObjectGrid("bookstore");
ObjectGrid videostoreGrid = objectGridManager.getObjectGrid("videostore");

Gerenciando o Ciclo de Vida com um Servlet

Para gerenciar o ciclo de vida de um ObjectGrid em um servlet, será possível usar o método init para criar uma instância ObjectGrid e o método destroy para remover a instância ObjectGrid. Se a instância do ObjectGrid estiver em cache, ela será recuperada e manipulada no código de servlet. A seguir há um código que mostra a criação, a manipulação e a destruição de um ObjectGrid em um 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 {
            // criar e armazenar em cache um ObjectGrid denominado 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");
        // desempenhar operações no ObjectGrid armazenado em cache
        // ...
	// Close the session (optional in Version 7.1.1 
and later) for improved performance
session.close(); } public void destroy() { super.destroy(); try { // remover e destruir o ObjectGrid bookstore armazenado em cache objectGridManager.removeObjectGrid("bookstore", true); } catch (ObjectGridException e) { e.printStackTrace(); } } }