Source code: org/projectapollo/demo/Demo.java
1 package org.projectapollo.demo;
2
3 import java.io.*;
4 import java.util.*;
5
6 import javax.servlet.*;
7 import javax.servlet.http.*;
8
9 import apollo.Session.*;
10 import apollo.*;
11 import apollo.Log.*;
12 import apollo.Statistics.*;
13
14 /** Project Apollo Demo Site
15 * @author Joe Kislo
16 * @version 1.0 09/18/2000
17 */
18 public class Demo extends HttpServlet {
19 public static ManagerTracker MT;
20
21 public void init(ServletConfig config) throws ServletException {
22 super.init(config);
23 String propFileName = config.getInitParameter("PropertiesFile");
24
25 //Look to see if somebody passed in the PropertiesFile parameter
26 if (propFileName==null) {
27
28 //They didn't, so use the normal apollo startup procedure
29 MT = InitSystem.initSystem(config, this);
30 } else {
31
32 //Somebody passed in an explicit pointer to the properties file, better use it
33 Properties prop = new Properties();
34
35 try {
36 prop.load(new FileInputStream(propFileName));
37 } catch (IOException io) {
38 throw new ServletException("IO Error reading properties file!");
39 }
40 MT = InitSystem.initSystem(config, prop);
41 }
42 }
43
44 public void doGet (HttpServletRequest servletReq, HttpServletResponse servletRes) throws ServletException, IOException {
45 doService(servletReq,servletRes);
46 }
47
48 public void doPost (HttpServletRequest servletReq, HttpServletResponse servletRes) throws ServletException, IOException {
49 doService(servletReq,servletRes);
50 }
51 private void doService(HttpServletRequest servletReq, HttpServletResponse servletRes) throws ServletException, IOException {
52 MT.getStatsManager().getStat("Servlet").incStat("TotalTransactions");
53 long startTime = System.currentTimeMillis();
54 try {
55 HTTPRequest req = new HTTPRequest(servletReq);
56 if (req.getParameter("SessionID") == null) {
57 String fquid;
58 if (req.hasValue("PageHandler")) {
59 fquid=req.getValue("PageHandler");
60 } else {
61 fquid="";
62 }
63 HTTPResponse response = MT.getPM().handleRequest(MT, fquid,req,null);
64 response.render(servletRes,servletReq);
65 } else {
66 HTTPResponse response;
67 try {
68 WebSession thisSession = MT.getSM().getSession(req.getParameter("SessionID"));
69 response = MT.getPM().handleRequest(MT, req.getParameter("PageHandler"), req,thisSession);
70 } catch (SessionExpired se) {
71 WebSession thisSession = MT.getSM().getSession(req.getParameter("SessionID"), true);
72 response = MT.getPM().handleRequest(MT, "SessionExpired", req,thisSession);
73 }
74 response.render(servletRes,servletReq);
75 }
76 } catch (Exception e) {
77 //Get the output stream
78
79 ServletOutputStream out = servletRes.getOutputStream();
80 servletRes.setContentType("text/html");
81 if (e instanceof InvalidSessionID) {
82 out.println("Invalid session ID! Try relogging in.");
83 } else {
84 //Add it to the stats
85 MT.getStatsManager().getStat("UserExceptions").incStat("TotalExceptions");
86 MT.getStatsManager().getStat("UserExceptions").addStat("Exceptions",new ExceptionData(e));
87
88 MT.getLM().log(e);
89 HTTPWriter writer = new HTTPWriter(out);
90 e.printStackTrace(writer);
91 writer.close();
92 }
93 }
94 MT.getStatsManager().getStat("Servlet").incStat("TotalServletCPUTime",(((float) (System.currentTimeMillis() - startTime))/1000));
95 }
96
97
98 public void destroy() {
99 super.destroy();
100 MT.destroy();
101 }
102 public String getServletInfo() {
103 return "Project Apollo Demo Site";
104 }
105
106 }