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; // Não substituir partições } 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; // Não substituir expressões } public boolean loadEvent(String partitionName) { /* * agora é um bom momento para iniciar o armazenamento em cache de dados relevantes */ System.out.println(className+": load "+partitionName); return true; } public void unloadEvent(String partitionName) { /* * agora é um bom momento para limpar os dados em cache relevantes */ System.out.println(className+": unload "+partitionName); } public boolean isPartitionAlive(String partitionName) { /* * pode verificar se uma partição ainda está ativa */ System.out.println(className+": isPartitionAlive "); return true; } }Este exemplo ilustra como o HttpPartitionManager é utilizado para especificar dois nomes de partição (lou e jian nesse caso) e duas expressões de pedido utilizando os métodos getPartitions() e getExpressions() da interface de notificação. Se este servlet não destinava-se a especificá-los (se, por exemplo, eles foram fornecidos em um arquivo partitions.xml associado ou especificados pelo EJB), estes métodos retornarão nulo.
Related concepts
Partições HTTP