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