-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathStart.java
More file actions
87 lines (74 loc) · 3.08 KB
/
Copy pathStart.java
File metadata and controls
87 lines (74 loc) · 3.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package standalone;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
import org.eclipse.jetty.util.thread.QueuedThreadPool;
import org.eclipse.jetty.webapp.WebAppContext;
import java.io.File;
import java.io.InputStream;
import java.util.Map;
import java.util.Properties;
/**
* Launches Jetty.
*/
public class Start {
public static void main(String[] args) throws Exception {
Properties p = new Properties();
InputStream ins = Start.class.getResourceAsStream("start.properties");
p.load(ins);
ins.close();
for (Map.Entry e : System.getProperties().entrySet()) {
String key = (String)e.getKey();
if (key.startsWith("jetty.")) p.setProperty(key, (String)e.getValue());
}
Server server = new Server();
QueuedThreadPool tp = new QueuedThreadPool();
tp.setMaxThreads(Integer.parseInt(p.getProperty("jetty.max.threads", "254")));
tp.setMinThreads(Integer.parseInt(p.getProperty("jetty.min.threads", "8")));
server.setThreadPool(tp);
String[] hosts = p.getProperty("jetty.host", "127.0.0.1").split("[\\s]*,[\\s]*");
int defaultPort = Integer.parseInt(p.getProperty("jetty.port", "8080"));
int acceptQueueSize = Integer.parseInt(p.getProperty("jetty.accept.queue.size", "0"));
Connector[] connectors = new Connector[hosts.length];
for (int i = 0; i < hosts.length; i++) {
SelectChannelConnector connector = new SelectChannelConnector();
String host = hosts[i];
int port;
int j = host.indexOf('/');
if (j < 0) {
port = defaultPort;
} else {
port = Integer.parseInt(host.substring(j + 1));
host = host.substring(0, j);
}
connector.setHost(host);
connector.setPort(port);
connector.setForwarded(true);
connector.setAcceptQueueSize(acceptQueueSize);
connectors[i] = connector;
}
server.setConnectors(connectors);
File war = new File(Start.class.getProtectionDomain().getCodeSource().getLocation().toExternalForm());
File temp = new File(p.getProperty("jetty.tmp", System.getProperty("user.home") + "/.jetty-tmp"));
if (!temp.exists()) {
if (!temp.mkdir()) {
System.err.println("Unable to create [" + temp + "]");
System.exit(1);
}
}
WebAppContext context = new WebAppContext();
context.setInitParameter("org.eclipse.jetty.servlet.Default.dirAllowed", "false");
context.setServer(server);
context.setContextPath(p.getProperty("jetty.context.path", "/"));
context.setTempDirectory(new File(temp, war.getName()));
context.setWar(war.toString());
server.setHandler(context);
try {
server.start();
server.join();
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
}