Add measurement of execution time for servlets
[jabaws.git] / webservices / compbio / stat / servlet / ServiceStatus.java
index c31f15d..a0f5516 100644 (file)
@@ -5,15 +5,18 @@ import java.io.PrintWriter;
 import java.io.StringWriter;\r
 import java.util.ArrayList;\r
 import java.util.List;\r
+import java.util.Collections;\r
 \r
 import javax.servlet.RequestDispatcher;\r
 import javax.servlet.ServletException;\r
 import javax.servlet.http.HttpServlet;\r
 import javax.servlet.http.HttpServletRequest;\r
 import javax.servlet.http.HttpServletResponse;\r
+import javax.servlet.ServletContext;\r
 \r
 import org.apache.log4j.Logger;\r
 \r
+import compbio.stat.servlet.util.Totals;\r
 import compbio.ws.client.Services;\r
 import compbio.ws.client.WSTester;\r
 \r
@@ -30,20 +33,64 @@ public class ServiceStatus extends HttpServlet {
 \r
        private final static Logger log = Logger.getLogger(ServiceStatus.class);\r
 \r
+\r
+       private static String getURL(HttpServletRequest req) {\r
+               String scheme = req.getScheme();             // http\r
+               String serverName = req.getServerName();     // hostname.com\r
+               int serverPort = req.getServerPort();        // 80\r
+               String contextPath = req.getContextPath();   // /mywebapp\r
+               String servletPath = req.getServletPath();   // /servlet/MyServlet\r
+               String pathInfo = req.getPathInfo();         // /a/b;c=123\r
+               String queryString = req.getQueryString();          // d=789\r
+\r
+               // Reconstruct original requesting URL\r
+               StringBuffer url =  new StringBuffer();\r
+               url.append(scheme).append("://").append(serverName);\r
+\r
+               if ((serverPort != 80) && (serverPort != 443)) {\r
+                       url.append(":").append(serverPort);\r
+               }\r
+\r
+               url.append(contextPath).append(servletPath);\r
+\r
+               if (pathInfo != null) {\r
+                       url.append(pathInfo);\r
+               }\r
+               if (queryString != null) {\r
+                       url.append("?").append(queryString);\r
+               }\r
+               return url.toString();\r
+       }\r
+\r
        @Override\r
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)\r
                        throws ServletException, IOException {\r
                StringBuffer jabawspath = req.getRequestURL();\r
                jabawspath = jabawspath.delete(jabawspath.lastIndexOf("/"), jabawspath.length());\r
                String serverPath = jabawspath.toString();\r
-               System.out.println("Testing services at " + serverPath); \r
+/**\r
+               String host = java.net.InetAddress.getLocalHost().getCanonicalHostName();\r
+               System.out.println("Testing services at " + req.getRequestURL()); \r
+               System.out.println("Really: Testing services at " + serverPath); \r
+               System.out.println("      serverPath2 is " + getURL(req)); \r
                System.out.println("      Context Path is " + req.getContextPath()); \r
+               System.out.println("      Host is " + host); \r
                System.out.println("      Request URI is " + req.getRequestURI());\r
                System.out.println("      Servlet Path is " + req.getServletPath());\r
                System.out.println("      Path Info is " + req.getPathInfo());\r
-\r
+               System.out.println("      Local Port is " + req.getLocalPort());\r
+               System.out.println("      Remote Port is " + req.getRemotePort());\r
+               System.out.println("      Local address is " + req.getLocalAddr());\r
+               System.out.println("      Remote address is " + req.getRemoteAddr());\r
+               @SuppressWarnings("unchecked")\r
+               List<String> list = Collections.list(req.getHeaderNames());\r
+               System.out.println("      HTTP header names are " + list.toString());\r
+               for (String hdr : list) {\r
+                       System.out.println("      " + hdr + " header is " + req.getHeader(hdr));\r
+               }\r
+*/\r
                List<ServiceTestResult> testResults = new ArrayList<ServiceTestResult>();\r
-\r
+               long startTime = System.nanoTime();\r
                for (Services service : Services.values()) {\r
                        StringWriter testres = new StringWriter();\r
                        PrintWriter writer = new PrintWriter(testres, true);\r
@@ -63,6 +110,8 @@ public class ServiceStatus extends HttpServlet {
                        testResults.add(result);\r
                }\r
                req.setAttribute("results", testResults);\r
+               long endTime = System.nanoTime();\r
+               req.setAttribute("timeexec", (endTime - startTime) / 1000000);\r
                RequestDispatcher rd = req.getRequestDispatcher("statpages/ServicesStatus.jsp");\r
                rd.forward(req, resp);\r
        }\r