1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.embedded;
20
21 import java.lang.management.ManagementFactory;
22
23 import org.eclipse.jetty.deploy.DeploymentManager;
24 import org.eclipse.jetty.deploy.PropertiesConfigurationManager;
25 import org.eclipse.jetty.deploy.providers.WebAppProvider;
26 import org.eclipse.jetty.jmx.MBeanContainer;
27 import org.eclipse.jetty.security.HashLoginService;
28 import org.eclipse.jetty.server.Handler;
29 import org.eclipse.jetty.server.HttpConfiguration;
30 import org.eclipse.jetty.server.HttpConnectionFactory;
31 import org.eclipse.jetty.server.LowResourceMonitor;
32 import org.eclipse.jetty.server.NCSARequestLog;
33 import org.eclipse.jetty.server.SecureRequestCustomizer;
34 import org.eclipse.jetty.server.Server;
35 import org.eclipse.jetty.server.ServerConnector;
36 import org.eclipse.jetty.server.SslConnectionFactory;
37 import org.eclipse.jetty.server.handler.AsyncDelayHandler;
38 import org.eclipse.jetty.server.handler.ContextHandlerCollection;
39 import org.eclipse.jetty.server.handler.DefaultHandler;
40 import org.eclipse.jetty.server.handler.HandlerCollection;
41 import org.eclipse.jetty.server.handler.RequestLogHandler;
42 import org.eclipse.jetty.server.handler.StatisticsHandler;
43 import org.eclipse.jetty.util.ssl.SslContextFactory;
44 import org.eclipse.jetty.util.thread.QueuedThreadPool;
45 import org.eclipse.jetty.util.thread.ScheduledExecutorScheduler;
46 import org.eclipse.jetty.webapp.Configuration;
47
48 public class LikeJettyXml
49 {
50 public static void main(String[] args) throws Exception
51 {
52 String jetty_home = System.getProperty("jetty.home","../../jetty-distribution/target/distribution");
53 String jetty_base = System.getProperty("jetty.home","../../jetty-distribution/target/distribution/demo-base");
54 System.setProperty("jetty.home",jetty_home);
55 System.setProperty("jetty.base",jetty_base);
56
57
58
59
60 QueuedThreadPool threadPool = new QueuedThreadPool();
61 threadPool.setMaxThreads(500);
62
63
64 Server server = new Server(threadPool);
65
66
67 server.addBean(new ScheduledExecutorScheduler());
68
69
70 HttpConfiguration http_config = new HttpConfiguration();
71 http_config.setSecureScheme("https");
72 http_config.setSecurePort(8443);
73 http_config.setOutputBufferSize(32768);
74 http_config.setRequestHeaderSize(8192);
75 http_config.setResponseHeaderSize(8192);
76 http_config.setSendServerVersion(true);
77 http_config.setSendDateHeader(false);
78
79
80
81 HandlerCollection handlers = new HandlerCollection();
82 ContextHandlerCollection contexts = new ContextHandlerCollection();
83 handlers.setHandlers(new Handler[] { contexts, new DefaultHandler() });
84 server.setHandler(handlers);
85
86
87 server.setDumpAfterStart(false);
88 server.setDumpBeforeStop(false);
89 server.setStopAtShutdown(true);
90
91
92
93 MBeanContainer mbContainer=new MBeanContainer(ManagementFactory.getPlatformMBeanServer());
94 server.addBean(mbContainer);
95
96
97
98 ServerConnector http = new ServerConnector(server,new HttpConnectionFactory(http_config));
99 http.setPort(8080);
100 http.setIdleTimeout(30000);
101 server.addConnector(http);
102
103
104
105
106 SslContextFactory sslContextFactory = new SslContextFactory();
107 sslContextFactory.setKeyStorePath(jetty_home + "/etc/keystore");
108 sslContextFactory.setKeyStorePassword("OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4");
109 sslContextFactory.setKeyManagerPassword("OBF:1u2u1wml1z7s1z7a1wnl1u2g");
110 sslContextFactory.setTrustStorePath(jetty_home + "/etc/keystore");
111 sslContextFactory.setTrustStorePassword("OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4");
112 sslContextFactory.setExcludeCipherSuites(
113 "SSL_RSA_WITH_DES_CBC_SHA",
114 "SSL_DHE_RSA_WITH_DES_CBC_SHA",
115 "SSL_DHE_DSS_WITH_DES_CBC_SHA",
116 "SSL_RSA_EXPORT_WITH_RC4_40_MD5",
117 "SSL_RSA_EXPORT_WITH_DES40_CBC_SHA",
118 "SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA",
119 "SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA");
120
121
122 HttpConfiguration https_config = new HttpConfiguration(http_config);
123 https_config.addCustomizer(new SecureRequestCustomizer());
124
125
126 ServerConnector sslConnector = new ServerConnector(server,
127 new SslConnectionFactory(sslContextFactory,"http/1.1"),
128 new HttpConnectionFactory(https_config));
129 sslConnector.setPort(8443);
130 server.addConnector(sslConnector);
131
132
133
134 DeploymentManager deployer = new DeploymentManager();
135 deployer.setContexts(contexts);
136 deployer.setContextAttribute("org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern",".*/servlet-api-[^/]*\\.jar$");
137
138 WebAppProvider webapp_provider = new WebAppProvider();
139 webapp_provider.setMonitoredDirName(jetty_base + "/webapps");
140 webapp_provider.setDefaultsDescriptor(jetty_home + "/etc/webdefault.xml");
141 webapp_provider.setScanInterval(1);
142 webapp_provider.setExtractWars(true);
143 webapp_provider.setConfigurationManager(new PropertiesConfigurationManager());
144
145 deployer.addAppProvider(webapp_provider);
146 server.addBean(deployer);
147
148
149 Configuration.ClassList.setServerDefault(server)
150 .addAfter("org.eclipse.jetty.webapp.FragmentConfiguration",
151 "org.eclipse.jetty.plus.webapp.EnvConfiguration","org.eclipse.jetty.plus.webapp.PlusConfiguration");
152
153
154 StatisticsHandler stats = new StatisticsHandler();
155 stats.setHandler(server.getHandler());
156 server.setHandler(stats);
157
158
159
160 NCSARequestLog requestLog = new NCSARequestLog();
161 requestLog.setFilename(jetty_home + "/logs/yyyy_mm_dd.request.log");
162 requestLog.setFilenameDateFormat("yyyy_MM_dd");
163 requestLog.setRetainDays(90);
164 requestLog.setAppend(true);
165 requestLog.setExtended(true);
166 requestLog.setLogCookies(false);
167 requestLog.setLogTimeZone("GMT");
168 RequestLogHandler requestLogHandler = new RequestLogHandler();
169 requestLogHandler.setRequestLog(requestLog);
170 handlers.addHandler(requestLogHandler);
171
172
173
174 LowResourceMonitor lowResourcesMonitor=new LowResourceMonitor(server);
175 lowResourcesMonitor.setPeriod(1000);
176 lowResourcesMonitor.setLowResourcesIdleTimeout(200);
177 lowResourcesMonitor.setMonitorThreads(true);
178 lowResourcesMonitor.setMaxConnections(0);
179 lowResourcesMonitor.setMaxMemory(0);
180 lowResourcesMonitor.setMaxLowResourcesTime(5000);
181 server.addBean(lowResourcesMonitor);
182
183
184
185 HashLoginService login = new HashLoginService();
186 login.setName("Test Realm");
187 login.setConfig(jetty_base + "/etc/realm.properties");
188 login.setRefreshInterval(0);
189 server.addBean(login);
190
191
192 server.start();
193 server.join();
194 }
195 }