Exemplo: Aplicativo grade de dados Simples

Este exemplo usa a API ObjectMap para executar operações de criação, recuperação, atualização e exclusão simples em grade de dados.

Aplicativo de Exemplo

SimpleGrid.java
import java.net.URL;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.io.File;
import java.io.PrintWriter;
import java.io.FileWriter;
import java.io.IOException;
import com.ibm.websphere.objectgrid.ClientClusterContext;
import com.ibm.websphere.objectgrid.ObjectGrid;
import com.ibm.websphere.objectgrid.ObjectMap;
import com.ibm.websphere.objectgrid.ObjectGridException;
import com.ibm.websphere.objectgrid.ObjectGridManager;
import com.ibm.websphere.objectgrid.ObjectGridManagerFactory;
import com.ibm.websphere.objectgrid.ObjectGridRuntimeException;
import com.ibm.websphere.objectgrid.Session;
import com.ibm.websphere.objectgrid.plugins.TransactionCallbackException;
import com.ibm.websphere.objectgrid.security.config.ClientSecurityConfiguration;
import com.ibm.websphere.objectgrid.security.config.ClientSecurityConfigurationFactory;
import com.ibm.websphere.objectgrid.security.plugins.CredentialGenerator;
import com.ibm.websphere.objectgrid.security.plugins.builtins.UserPasswordCredentialGenerator;

public class SimpleGrid {

	static String gridName = "test";
	static String mapName = gridName;
	static String username = "xcadmin";
	static String password = "xcadmin";
	static String hostName = "localhost";
	static ObjectGrid clientGrid = null;
	static ConcurrentLinkedQueue<Session> sessions = new ConcurrentLinkedQueue<Session>();
	static String ogXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
		+ "<objectGridConfig xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
xsi:schemaLocation=\"http://ibm.com/ws/objectgrid/config ../objectGrid.xsd\""
		+ " xmlns=\"http://ibm.com/ws/objectgrid/config\">"
		+ "<objectGrids>"
		+ "<objectGrid name=\"GRIDNAME\">"
		+ "<backingMap name=\"MAPNAME\" readOnly=\"false\"  lockStrategy=\"NONE\" ttlEvictorType=\"NONE\"
copyMode=\"COPY_TO_BYTES\" numberOfBuckets=\"0\" />"
		+ "</objectGrid>" + "</objectGrids>" + "</objectGridConfig>";

	static synchronized public ObjectGrid getObjectGrid() {
		if (clientGrid == null) {
			ClientClusterContext ccc = null;
			try {
				new java.io.File(System.getProperty("java.io.tmpdir")).mkdirs();
			} catch (Throwable t) {
				t.printStackTrace();
			}
			ObjectGridManager ogm = ObjectGridManagerFactory
			.getObjectGridManager();
			ClientSecurityConfiguration clientSC = getAdminClientConfig();

			URL ogOverrideURL = null;
			File ogxml = null;
			try {
				ogxml = File.createTempFile("loadtest", ".xml");
				FileWriter fw = new FileWriter(ogxml);
				PrintWriter bw = new PrintWriter(fw);
				bw.println(ogXml.replaceAll("GRIDNAME", gridName).replaceAll(
						"MAPNAME", mapName));
				bw.flush();
				bw.close();
				ogOverrideURL = ogxml.toURL();
			} catch (IOException ioe) {
				ioe.printStackTrace();
			}

			try {
				ccc = ogm.connect(hostName + ":2809", clientSC, ogOverrideURL);
			} catch (Throwable e) {
				e.printStackTrace();
			}
			if (ogxml != null)
				ogxml.delete();
			if (ccc != null) {
				try {
					clientGrid = ogm.getObjectGrid(ccc, gridName);
				} catch (ObjectGridRuntimeException ogre) {
					ogre.printStackTrace();
				}
			}
		}
		return clientGrid;
	}

	static public Session getSession() throws TransactionCallbackException, ObjectGridException {
		Session session = sessions.poll();
		if (session == null && getObjectGrid() != null) {
			session = getObjectGrid().getSession();
		}
		if (session == null)
			throw new IllegalStateException(
			"unable to initialize connection to objectgrid");
		return session;
	}

	static public void putSession(Session session) {
		if (session.isTransactionActive()) {
			try {
				session.rollback();
			} catch(Exception e) {
			}
		}
		sessions.add(session);
	}

	public static ClientSecurityConfiguration getAdminClientConfig() {
		// Creates a ClientSecurityConfiguration object using the specified file
		ClientSecurityConfiguration clientSC = ClientSecurityConfigurationFactory
		.getClientSecurityConfiguration();
		clientSC.setSecurityEnabled(true);
		// Creates a CredentialGenerator using the passed-in user and password.
		CredentialGenerator credGen = new UserPasswordCredentialGenerator(
				username, password);
		clientSC.setCredentialGenerator(credGen);
		return clientSC;
	}

	public static void main(String args[]) throws Exception {
		for (int i = 0; i < args.length; i++) {
			if (args[i].startsWith("-username:")) {
				username = args[i].substring(args[i].indexOf(":") + 1);
			} else if (args[i].startsWith("-password:")) {
				password = args[i].substring(args[i].indexOf(":") + 1);
			} else if (args[i].startsWith("-gridname:")) {
				gridName = args[i].substring(args[i].indexOf(":") + 1);
			} else if (args[i].startsWith("-mapname:")) {
				mapName = args[i].substring(args[i].indexOf(":") + 1);
			} else if (args[i].startsWith("-hostname:")) {
				hostName = args[i].substring(args[i].indexOf(":") + 1);
			} else {
				System.out.println("usage: SimpleGrid [optional args]");
				System.out.println("       -username:<username>");
				System.out.println("       -password:<password>");
				System.out.println("       -gridname:<gridname>");
				System.out.println("       -mapname:<mapname>");
				System.out.println("       -hostname:<hostname>");
				System.exit(1);
			}
		}
		System.out.println("------------------------------------------");
		System.out.println("Simple Grid Test");
		System.out.println("------------------------------------------");
		System.out.println("username     : " + username);
		System.out.println("password     : " + password);
		System.out.println("gridname     : " + gridName);
		System.out.println("mapname      : " + mapName);
		System.out.println("hostname     : " + hostName);
		System.out.println("------------------------------------------");

		if (getObjectGrid() == null) {
			System.out.println("ERROR: unable to connect to objectgrid at "	+ hostName);
			System.exit(1);
		}
		Session session = getSession();
		ObjectMap map = session.getMap(mapName);
		session.begin();
		Object data = map.get("TestKey");
		if ( data != null )
			map.remove("TestKey");
		map.insert("TestKey", "TestValue");
		session.commit();
		putSession(session);
	}
}