Web services status checking servlets, new clustalo x32 binary from Fabian, other...
[jabaws.git] / webservices / compbio / stat / servlet / ServiceStatus.java
1 package compbio.stat.servlet;\r
2 \r
3 import java.io.IOException;\r
4 import java.io.PrintWriter;\r
5 import java.io.StringWriter;\r
6 import java.util.ArrayList;\r
7 import java.util.List;\r
8 \r
9 import javax.servlet.RequestDispatcher;\r
10 import javax.servlet.ServletException;\r
11 import javax.servlet.http.HttpServlet;\r
12 import javax.servlet.http.HttpServletRequest;\r
13 import javax.servlet.http.HttpServletResponse;\r
14 \r
15 import org.apache.log4j.Logger;\r
16 \r
17 import compbio.ws.client.Services;\r
18 import compbio.ws.client.WSTester;\r
19 \r
20 /**\r
21  * Use cases:\r
22  * <dl>\r
23  * <li>Test web services and display results on the web page</li>\r
24  * <li>Test web service or services by the user request</li>\r
25  * </dl>\r
26  * \r
27  * @author pvtroshin\r
28  * \r
29  */\r
30 public class ServiceStatus extends HttpServlet {\r
31 \r
32         private final static Logger log = Logger.getLogger(ServiceStatus.class);\r
33 \r
34         @Override\r
35         protected void doGet(HttpServletRequest req, HttpServletResponse resp)\r
36                         throws ServletException, IOException {\r
37 \r
38                 StringBuffer jabawspath = req.getRequestURL();\r
39                 jabawspath = jabawspath.delete(jabawspath.lastIndexOf("/"),\r
40                                 jabawspath.length());\r
41                 String serverPath = jabawspath.toString();\r
42 \r
43                 List<ServiceTestResult> testResults = new ArrayList<ServiceTestResult>();\r
44 \r
45                 for (Services service : Services.values()) {\r
46                         StringWriter testres = new StringWriter();\r
47                         PrintWriter writer = new PrintWriter(testres, true);\r
48                         WSTester tester = new WSTester(serverPath, writer);\r
49                         ServiceTestResult result = new ServiceTestResult(service);\r
50                         try {\r
51                                 result.failed = tester.checkService(service);\r
52                         } catch (Exception e) {\r
53                                 log.info(e, e.getCause());\r
54                                 writer.println("Fails to connect to a web service: " + service\r
55                                                 + " With " + e.getLocalizedMessage() + "\nDetails: ");\r
56                                 e.printStackTrace(writer);\r
57                         } finally {\r
58                                 writer.close();\r
59                         }\r
60                         result.details = testres.toString();\r
61                         testResults.add(result);\r
62                 }\r
63                 req.setAttribute("results", testResults);\r
64                 RequestDispatcher rd = req\r
65                                 .getRequestDispatcher("statpages/ServicesStatus.jsp");\r
66                 rd.forward(req, resp);\r
67         }\r
68 \r
69 }\r