public class ListPartitions extends HttpServlet implements Servlet, HttpPartitionNotification { private static String className = "ListPartitions"; private static String appName = "http.wpf.sample"; private static HttpPartitionManager httpPartitionManager = HttpPartitionManager.instance; public void init() throws ServletException { System.out.println(className+": Registering notification "); httpPartitionManager.registerNotification(appName, this); } public void destroy() { System.out.println(className+": Deregistering notification "); httpPartitionManager.deregisterNotification(appName, this); } public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); ServletOutputStream out = resp.getOutputStream(); out.println("<html>"); out.println("<head><title>Hello World</title></head>"); out.println("<body>"); out.println("<h1>Hello World</h1><h1>"); out.println(listPartitions()); out.println("</h1>"); out.println(""); } public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { } public static String listPartitions() { HttpPartitionManager httpPartitionManager = HttpPartitionManager.instance; Vector partitions = httpPartitionManager.getActivePartitions (appName); String output = "Number of Partitions: "+partitions.size()+": \nPartitions:\n"; for (int i=0; i< partitions.size(); i++) output = output.concat(partitions.elementAt(i) + "\n"); return output; } public Vector getPartitions() { System.out.println(className+": getPartitions "); Vector myVect = new Vector(); myVect.add("jian"); myVect.add("lou"); System.out.println(className+": getPartitions number of partitions: "+myVect.size()); return myVect; // Do not override partitions } public HttpPartitionExpression[] getExpressions() { System.out.println(className+": getExpressions "); HttpPartitionExpression[] expressions = new HttpPartitionExpression[2]; expressions[0] = httpPartitionManager.createHttpPartitionExpression ("(user=)(.*)&", "$2"); expressions[1] = httpPartitionManager.createHttpPartitionExpression ("(user=)(.*)$", "$2"); System.out.println(className+": getExpressions number of expressions "+expressions.length); return expressions; // Do not override expressions } public boolean loadEvent(String partitionName) { /* * now is a good time to start caching relevant data */ System.out.println(className+": load "+partitionName); return true; } public void unloadEvent(String partitionName) { /* * now is a good time to flush relevant cached data */ System.out.println(className+": unload "+partitionName); } public boolean isPartitionAlive(String partitionName) { /* * can check if a partition is still active */ System.out.println(className+": isPartitionAlive "); return true; } }Dieses Beispiel zeigt, wie mit HttpPartitionManager unter Verwendung der Methoden getPartitions() und getExpressions() des Notification-Interface zwei Partitionsnamen (hier lou und jian) und zwei Anforderungsausdrücke angegeben werden. Die Methoden geben null zurück, wenn diese Angaben nicht vom Servlet, sondern von der EJB oder in der Datei partitions.xml angegeben sind.
Related concepts
HTTP-Partitionen