source: trunk/autoquest-htmlmonitor/src/main/java/de/ugoe/cs/autoquest/htmlmonitor/HtmlMonitorServer.java @ 857

Last change on this file since 857 was 857, checked in by pharms, 12 years ago
  • initial version of the HTML monitor
File size: 2.2 KB
Line 
1package de.ugoe.cs.autoquest.htmlmonitor;
2
3import org.mortbay.jetty.Server;
4import org.mortbay.jetty.servlet.Context;
5import org.mortbay.jetty.servlet.ServletHolder;
6
7import de.ugoe.cs.util.console.Console;
8
9/**
10 * TODO: comment
11 *
12 * @author Patrick Harms
13 */
14class HtmlMonitorServer implements HtmlMonitorComponent {
15   
16    /**
17     *
18     */
19    private int port;
20
21    /**
22     *
23     */
24    private Server server;
25
26    /**
27     *
28     */
29    private HtmlMonitorMessageListener messageListener;
30
31    /**
32     * <p>
33     * TODO: comment
34     * </p>
35     *
36     */
37    HtmlMonitorServer(int port, HtmlMonitorMessageListener messageListener) {
38        this.port = port;
39        this.messageListener = messageListener;
40    }
41
42    /* (non-Javadoc)
43     * @see de.ugoe.cs.autoquest.htmlmonitor.HtmlMonitorComponent#init()
44     */
45    @Override
46    public synchronized void init() {
47        if (server != null) {
48            throw new IllegalStateException("already initialized. First call stop()");
49        }
50
51        server = new Server(port);
52        Context root = new Context(server, "/", Context.SESSIONS);
53
54        HtmlMonitorServlet servlet = new HtmlMonitorServlet(messageListener);
55        ServletHolder servletHolder = new ServletHolder(servlet);
56        root.addServlet(servletHolder, "/*");
57    }
58
59    /* (non-Javadoc)
60     * @see de.ugoe.cs.autoquest.htmlmonitor.HtmlMonitorComponent#start()
61     */
62    @Override
63    public synchronized void start() throws HtmlMonitorException {
64        if (server == null) {
65            throw new IllegalStateException("server not initialized yet. First call init()");
66        }
67       
68        try {
69            server.start();
70        }
71        catch (Exception e) {
72            throw new HtmlMonitorException("could not start server", e);
73        }
74    }
75
76
77    /* (non-Javadoc)
78     * @see de.ugoe.cs.autoquest.htmlmonitor.HtmlMonitorComponent#stop()
79     */
80    @Override
81    public synchronized void stop() {
82        try {
83            if (server != null) {
84                server.stop();
85            }
86        }
87        catch (Exception e) {
88            Console.printerrln("could not stop HTML monitor server: " + e.getMessage());
89            Console.logException(e);
90        }
91    }
92
93}
Note: See TracBrowser for help on using the repository browser.