此範例使用 ObjectMap API 對資料網格執行簡式建立、擷取、更新及刪除作業。
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(); .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() { // 使用指定的檔案建立 ClientSecurityConfiguration 物件 ClientSecurityConfiguration clientSC = ClientSecurityConfigurationFactory .getClientSecurityConfiguration(); clientSC.setSecurityEnabled(true); // 使用傳入的使用者及密碼建立 CredentialGenerator。 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); } }