Beispiel: Einfache Daten-Grid-Anwendung

In diesem Beispiel wird die API "ObjectMap" verwendet, um einfache Erstellungs-, Abruf-, Aktualisierungs- und Löschoperationen im Daten-Grid auszuführen.

Beispielanwendung

SimpleGrid.java
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.HashSet;
import java.util.BitSet;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.io.File;
import java.io.PrintWriter;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.Serializable;
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import com.ibm.websphere.objectgrid.ClientClusterContext;
import com.ibm.websphere.objectgrid.ConnectException;
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.config.BackingMapConfiguration;
import com.ibm.websphere.objectgrid.config.ObjectGridConfigFactory;
import com.ibm.websphere.objectgrid.config.ObjectGridConfiguration;
import com.ibm.websphere.objectgrid.plugins.TransactionCallbackException;
import com.ibm.websphere.objectgrid.security.config.ClientSecurityConfiguration;
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;
import com.ibm.websphere.objectgrid.server.CatalogServerProperties;

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 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();
                        List<ObjectGridConfiguration> ogConfigs=new ArrayList<ObjectGridConfiguration>();
                        ObjectGridConfiguration lclGridConfig = ObjectGridConfigFactory.createObjectGridConfiguration(gridName);
                        BackingMapConfiguration bmc = ObjectGridConfigFactory.createBackingMapConfiguration(mapName);
                        bmc.setNumberOfBuckets(0);
                        lclGridConfig.addBackingMapConfiguration(bmc);
                        ogConfigs.add(lclGridConfig);
			try {
				ccc = ogm.connect(hostName+":2809", clientSC, null);
			} catch (Throwable e) {
				e.printStackTrace();
			}
			if (ccc != null) {
                           HashMap<String,List<ObjectGridConfiguration>> overrideMap = new HashMap<String,List<ObjectGridConfiguration>>();
                           overrideMap.put(ccc.getClusterName(),ogConfigs);
                           ogm.setOverrideObjectGridConfigurations(overrideMap);
			   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() {
		// Erstellt ein ClientSecurityConfiguration-Objekt mit der angegebenen Datei
		ClientSecurityConfiguration clientSC = ClientSecurityConfigurationFactory.getClientSecurityConfiguration();
		clientSC.setSecurityEnabled(true);
		// Erstellt einen CredentialGenerator mit der übergebenen Benutzername/Kennwort-Konfiguration.
		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);
     }
}