Cada um desses métodos cria uma instância local de um ObjectGrid.
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");
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.
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. /**
* 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;