Criando Instâncias do ObjectGrid com a Interface ObjectGridManager

Cada um desses métodos cria uma instância local de um ObjectGrid.

Instância na Memória Local

O trecho de código a seguir ilustra como obter e configurar uma instância de ObjectGrid local com o 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");

Configuração Compartilhada Padrão

O código a seguir é um caso simples de como criar um ObjectGrid para compartilhar entre muitos usuários.

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..*/

O trecho de código Java precedente cria e armazena em cache o Employees ObjectGrid. O Employees ObjectGrid é inicializado com a configuração padrão e já está pronto para uso. O segundo parâmetro no método createObjectGrid é configurado como true, o que instrui o ObjectGridManager a armazenar em cache a instância do ObjectGrid que ele cria. Se este parâmetro for configurado como false, a instância não é armazenada em cache. Cada instância do ObjectGrid possui um nome e a instância pode ser compartilhada entre vários clientes ou usuários com base em tal nome.

Se a instância do objectGrid for utilizada no compartilhamento ponto a ponto, o armazenamento em cache deve ser configurado como true. Para obter informações adicionais sobre o compartilhamento ponto a ponto, consulte Distribuição de alterações entre as Java Virtual Machines de peer.

Configuração XML

O WebSphere eXtreme Scale é altamente configurável. O exemplo anterior demonstra como criar um ObjectGrid simples sem nenhuma configuração. Este exemplo mostra como criar uma instância do ObjectdGrid pré-configurada que é baseada em um arquivo de configuração XML. É possível configurar uma instância do ObjectGrid programaticamente ou utilizando um arquivo de configuração baseado em XML. Também é possível configurar o ObjectGrid utilizando uma combinação de duas abordagens. A interface ObjectGridManager permite a criação de uma instância do ObjectGrid baseada na configuração XML. A interface ObjectGridManager possui vários métodos que utilizam uma URL como argumento. Cada arquivo XML transmitido para o ObjectGridManager deve ser validado no esquema. A validação XML pode ser desativada apenas quando o arquivo está previamente validado e nenhuma alteração foi feita no arquivo desde sua última validação. A desativação da validação poupa uma pequena quantidade de sobrecarga, mas introduz a possibilidade de utilizar um arquivo XML inválido. O IBM® Java Developer Kit (JDK) Versão 5 possui suporte para validação de XML. Ao utilizar um JDK que não tem este suporte, o Apache Xerces pode ser requerido para validar o XML.

O trecho de código Java a seguir demonstra como transmitir um arquivo de configuração XML para criar um 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; // ativar a validação XML
boolean cacheInstance = true; // Armazenar a instância em cache
String objectGridName="Employees"; // Nome da URL do Object Grid
allObjectGrids = new URL("file:test/myObjectGrid.xml");
final ObjectGridManager oGridManager= 
	ObjectGridManagerFactory.getObjectGridManager();
 ObjectGrid employees = 
	oGridManager.createObjectGrid(objectGridName, allObjectGrids, 
		bvalidateXML, cacheInstance);
O arquivo XML pode conter informações de configuração para vários ObjectGrids. O trecho de código anterior retorna especificamente o ObjectGrid Employees, supondo que a configuração de Employees esteja definida no arquivo.

Métodos createObjectGrid

.
/**
 * Um método de depósito de informações do provedor simples para retornar uma instância de um
 * Object Grid. É designado um nome exclusivo.
 * A instância do ObjectGrid não é armazenada em cache.
 * Os usuários podem então utilizar {@link ObjectGrid#setName(String)} para alterar o
 * nome do ObjectGrid.
 *
 * @return ObjectGrid uma instância do ObjectGrid com um nome exclusivo designado
 * @throws ObjectGridException qualquer erro encontrado durante a 
 * criação do ObjectGrid
 */
public ObjectGrid createObjectGrid() throws ObjectGridException;

/**
 * Um método de depósito de informações do provedor simples para 
 retornar uma instância de um ObjectGrid com
 * o nome especificado. As instâncias do ObjectGrid podem ser 
 armazenadas em cache. Se um ObjectGrid
 * com este nome já tiver sido armazenado em cache, será emitida uma
 * ObjectGridException.
 *
 * @param objectGridName o nome do ObjectGrid a ser criado.
 * @param cacheInstance true, se a instância do ObjectGrid tiver que ser armazenada em cache
 * @return an ObjectGrid instance
 * @this o nome já foi armazenado em cache ou
 * qualquer erro durante a criação do ObjectGrid.
 */
public ObjectGrid createObjectGrid(String objectGridName, boolean cacheInstance) 
		throws ObjectGridException;

/**
 * Crie uma instância do ObjectGrid com o nome do ObjectGrid especificado. The
 * instância do ObjectGrid criada será armazenada em cache.
 * @param objectGridName o Nome da instância do ObjectGrid a ser criada.
 * @return an ObjectGrid instance
 * @throws ObjectGridException se um ObjectGrid com este nome já tiver sido
 * armazenado em cache ou algum erro encontrado durante a criação do ObjectGrid
 */
public ObjectGrid createObjectGrid(String objectGridName) 
		throws ObjectGridException;

/**
 * Crie uma instância do ObjectGrid com base no nome do ObjectGrid e no
 * XML do cluster. A instância do ObjectGrid definida no arquivo XML com o nome do
 * ObjectGrid especificado será criada e retornada. Se tal ObjectGrid
 * não puder ser localizado no arquivo xml, será emitida uma exceção.
 *
 * Esta instância do ObjecGrid não pode ser armazenada em cache.
 *
 * Se a URL for nula, ela simplesmente será ignorada. Neste caso, este método se comportará
 * igual a {@link #createObjectGrid(String, boolean)}.
 *
 * @param objectGridName o Nome da instância do ObjectGrid a ser retornada. Ela
 * não deve ser nula.
 * @param xmlFile uma URL para um arquivo xml bem formado baseado no esquema do ObjectGrid.
 * @param enableXmlValidation se true o XML será validado
 * @param cacheInstance um valor booleano que indica se a(s) instância(s) do
 * ObjectGrid
 * definida(s) no arquivo XML será(ão) ou não armazenada(s) 
em cache. Se true, a(s) instância(s) será(ão) * armazenada(s) em cache. * * @throws ObjectGridException se um ObjectGrid com o mesmo nome * tiver sido armazenado em cache anteriormente, nenhum nome do
ObjectGrid poderá ser localizado no arquivo xml * ou qualquer outro erro durante a criação do ObjectGrid. * @return an ObjectGrid instance * @see ObjectGrid */ public ObjectGrid createObjectGrid(String objectGridName, final URL xmlFile, final boolean enableXmlValidation, boolean cacheInstance) throws ObjectGridException; /** * Processar um arquivo XML e criar uma Lista de objetos do ObjectGrid com base * no arquivo. * Estas instâncias do ObjecGrid podem ser armazenadas em cache. * Será emitida uma ObjectGridException ao tentar armazenar em cache * um ObjectGrid recém-criado que * tenha o mesmo nome que um ObjectGrid já armazenado em cache. * * @param xmlFile o arquivo que define um ObjectGrid ou vários * ObjectGrids * @param enableXmlValidation a configuração como true validará o arquivo XML * no esquema * @param cacheInstances configurado como true para armazenar em
cache todas as instâncias do ObjectGrid * criadas com base no arquivo * @return an ObjectGrid instance * @throws ObjectGridException ao tentar criar e armazenar em cache um * ObjectGrid com o mesmo nome que um * ObjectGrid já armazenado em cache ou qualquer outro erro * ocorrido durante a * criação do ObjectGrid */ public List createObjectGrids(final URL xmlFile, final boolean enableXmlValidation, boolean cacheInstances) throws ObjectGridException; /** Criar todos os ObjectGrids localizados no arquivo XML. O arquivo XML será validado * no esquema. Cada instância do ObjectGrid criada será * armazenada(s) em cache. Será emitida uma ObjectGridException ao
tentar armazenar em cache um * ObjectGrid recém-criado com o mesmo nome que um ObjectGrid * já armazenado em cache. * @param xmlFile O arquivo XML a ser processado. Os ObjectGrids serão criados com base * no conteúdo do arquivo. * @return Uma Lista de instâncias do ObjectGrid que foram criadas. * @throws ObjectGridException se um ObjectGrid que tenha o mesmo nome que qualquer um dos * localizados no XML já tiver sido armazenado em cache ou * qualquer outro erro encontrado durante a criação do ObjectGrid. */ public List createObjectGrids(final URL xmlFile) throws ObjectGridException; /** * Processar o arquivo XML e criar uma única instância do ObjectGrid com o * objectGridName especificado apenas se um ObjectGrid com esse nome for localizado * no arquivo. Se não houver nenhum ObjectGrid com este nome definido no arquivo XML, * será emitida uma * ObjectGridException. A instância do ObjectGrid criada será armazenada em cache. * @param objectGridName nome do ObjectGrid a ser criado. Este ObjectGrid * deve ser definido no arquivo XML. * @param xmlFile o arquivo XML a ser processado * @return Um ObjectGrid recém-criado * @throws ObjectGridException se um ObjectGrid com o mesmo nome tiver sido * armazenado em cache anteriormente, nenhum nome do ObjectGrid poderá
ser localizado no arquivo xml * ou qualquer outro erro durante a criação do ObjectGrid. */ public ObjectGrid createObjectGrid(String objectGridName, URL xmlFile) throws ObjectGridException;