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; // No alterar temporalmente las particiones } 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; // No alterar temporalmente las expresiones } public boolean loadEvent(String partitionName) { /* * ahora es un buen momento para empezar a almacenar en antememoria los datos * relevantes */ System.out.println(className+": load "+partitionName); return true; } public void unloadEvent(String partitionName) { /* * ahora es un buen momento para vaciar los datos relevantes almacenados en * antememoria */ System.out.println(className+": unload "+partitionName); } public boolean isPartitionAlive(String partitionName) { /* * puede comprobar si todavía hay activa alguna partición */ System.out.println(className+": isPartitionAlive "); return true; } }En este ejemplo se muestra cómo se utiliza HttpPartitionManager para especificar dos nombres de partición (lou y jian en este caso) y dos expresiones de petición utilizando los métodos getPartitions() y getExpressions() de la interfaz de notificación. Si no se especifican con este servlet (por ejemplo, si se proporcionaran en un archivo partitions.xml adjunto o se especifican en el EJB), estos métodos devolverían nulo.
Related concepts
Particiones HTTP