01: /* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved.
02: * This code is licensed under the GPL 2.0 license, availible at the root
03: * application directory.
04: */
05: package org.vfny.geoserver.jetty;
06:
07: import org.mortbay.jetty.Connector;
08: import org.mortbay.jetty.Server;
09: import org.mortbay.jetty.bio.SocketConnector;
10: import org.mortbay.jetty.webapp.WebAppContext;
11: import org.mortbay.thread.BoundedThreadPool;
12: import java.io.File;
13: import java.util.logging.Level;
14: import java.util.logging.Logger;
15:
16: /**
17: * Jetty starter, will run geoserver inside the Jetty web container.<br>
18: * Useful for debugging, especially in IDE were you have direct dependencies
19: * between the sources of the various modules (such as Eclipse).
20: *
21: * @author wolf
22: *
23: */
24: public class Start {
25: private static final Logger log = org.geotools.util.logging.Logging
26: .getLogger(Start.class.getName());
27:
28: public static void main(String[] args) {
29: Server jettyServer = null;
30:
31: try {
32: jettyServer = new Server();
33:
34: // don't even think of serving more than XX requests in parallel... we
35: // have a limit in our processing and memory capacities
36: BoundedThreadPool tp = new BoundedThreadPool();
37: tp.setMaxThreads(50);
38:
39: SocketConnector conn = new SocketConnector();
40: String portVariable = System.getProperty("jetty.port");
41: int port = parsePort(portVariable);
42: if (port <= 0)
43: port = 8080;
44: conn.setPort(port);
45: conn.setThreadPool(tp);
46: conn.setAcceptQueueSize(100);
47: jettyServer.setConnectors(new Connector[] { conn });
48:
49: WebAppContext wah = new WebAppContext();
50: wah.setContextPath("/geoserver");
51: wah.setWar("src/main/webapp");
52: jettyServer.setHandler(wah);
53: wah.setTempDirectory(new File("target/work"));
54:
55: jettyServer.start();
56:
57: // use this to test normal stop behaviour, that is, to check stuff that
58: // need to be done on container shutdown (and yes, this will make
59: // jetty stop just after you started it...)
60: // jettyServer.stop();
61: } catch (Exception e) {
62: log.log(Level.SEVERE, "Could not start the Jetty server: "
63: + e.getMessage(), e);
64:
65: if (jettyServer != null) {
66: try {
67: jettyServer.stop();
68: } catch (Exception e1) {
69: log.log(Level.SEVERE, "Unable to stop the "
70: + "Jetty server:" + e1.getMessage(), e1);
71: }
72: }
73: }
74: }
75:
76: private static int parsePort(String portVariable) {
77: if (portVariable == null)
78: return -1;
79: try {
80: return Integer.valueOf(portVariable).intValue();
81: } catch (NumberFormatException e) {
82: return -1;
83: }
84: }
85: }
|