KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > lateralnz > demo > view > PerfServlet


1 package org.lateralnz.demo.view;
2
3 import java.io.IOException JavaDoc;
4 import java.io.PrintWriter JavaDoc;
5 import java.util.HashMap JavaDoc;
6 import java.util.Locale JavaDoc;
7
8 import javax.servlet.http.HttpServlet JavaDoc;
9 import javax.servlet.http.HttpServletRequest JavaDoc;
10 import javax.servlet.http.HttpServletResponse JavaDoc;
11 import javax.servlet.RequestDispatcher JavaDoc;
12 import javax.servlet.http.HttpSession JavaDoc;
13 import javax.servlet.ServletConfig JavaDoc;
14 import javax.servlet.ServletException JavaDoc;
15
16 import org.apache.log4j.Logger;
17
18 import org.lateralnz.demo.ejb.Basic;
19 import org.lateralnz.demo.ejb.BasicHome;
20 import org.lateralnz.common.util.IOUtils;
21 import org.lateralnz.common.util.JNDIUtils;
22 import org.lateralnz.common.util.NumericUtils;
23 import org.lateralnz.common.util.ServletUtils;
24 import org.lateralnz.common.util.StringUtils;
25
26 public class PerfServlet extends HttpServlet JavaDoc {
27
28   private int rawcount;
29   private long rawtime;
30   
31   protected void processRequest(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws ServletException JavaDoc, IOException JavaDoc {
32     PrintWriter JavaDoc out = null;
33     try {
34       out = response.getWriter();
35       out.println("<html><body>\n");
36       
37       int threads = 100;
38       int iterations = 100;
39       
40       String JavaDoc tmp = request.getParameter("threads");
41       if (!StringUtils.isEmpty(tmp)) {
42         threads = Integer.parseInt(tmp);
43       }
44       
45       tmp = request.getParameter("iterations");
46       if (!StringUtils.isEmpty(tmp)) {
47         iterations = Integer.parseInt(tmp);
48       }
49       
50       rawtest(out, threads, iterations);
51       
52       out.println("</body></html>\n");
53     }
54     finally {
55       if (out != null) {
56         out.flush();
57         IOUtils.close(out);
58       }
59     }
60   }
61
62   protected void doGet(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws ServletException JavaDoc, IOException JavaDoc {
63     processRequest(request, response);
64   }
65
66  /** Handles the HTTP <code>POST</code> method.
67   * @param request servlet request
68   * @param response servlet response
69   */

70   protected void doPost(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws ServletException JavaDoc, IOException JavaDoc {
71     processRequest(request, response);
72   }
73
74   public String JavaDoc getServletInfo() {
75     return "Short description";
76   }
77
78   private final void rawtest(final PrintWriter JavaDoc out, final int threads, final int iterations) {
79     out.println("rawtest<br />\n");
80     rawcount = 0;
81     
82     Thread JavaDoc[] t = new Thread JavaDoc[threads];
83     for (int i = 0; i < threads; i++) {
84       t[i] = new Thread JavaDoc() {
85         public void run() {
86           Basic ejb = null;
87           try {
88             BasicHome home = (BasicHome)JNDIUtils.getEJBHome("DEMO/Basic", BasicHome.class);
89             ejb = home.create();
90             for (int i = 0; i < iterations; i++) {
91               ejb.getRandom(10000);
92             }
93           }
94           catch (Exception JavaDoc e) {
95             e.printStackTrace();
96           }
97           finally {
98             JNDIUtils.remove(ejb);
99           }
100           rawtestend(out, threads, iterations);
101         }
102       };
103     }
104     
105     rawtime = System.currentTimeMillis();
106     for (int i = 0; i < threads; i++) {
107       t[i].start();
108     }
109     
110     while (rawcount < threads) {
111       try { Thread.currentThread().sleep(1000); } catch (Exception JavaDoc e) { }
112     }
113   }
114   
115   private final void rawtestend(PrintWriter JavaDoc out, int threads, int iterations) {
116     rawcount++;
117     if (rawcount >= threads) {
118       rawtime = System.currentTimeMillis() - rawtime;
119       out.println("rawtest :: " + threads + " threads, " + iterations + " iterations took " + rawtime + "ms<br />\n");
120       out.println("average per call - " + NumericUtils.format(this.getClass().getName(),((double)rawtime / ((double)threads * iterations)), "######0.#######") + "<br />\n");
121     }
122     
123   }
124 }
Popular Tags