View Javadoc

1   //
2   //  ========================================================================
3   //  Copyright (c) 1995-2013 Mort Bay Consulting Pty. Ltd.
4   //  ------------------------------------------------------------------------
5   //  All rights reserved. This program and the accompanying materials
6   //  are made available under the terms of the Eclipse Public License v1.0
7   //  and Apache License v2.0 which accompanies this distribution.
8   //
9   //      The Eclipse Public License is available at
10  //      http://www.eclipse.org/legal/epl-v10.html
11  //
12  //      The Apache License v2.0 is available at
13  //      http://www.opensource.org/licenses/apache2.0.php
14  //
15  //  You may elect to redistribute this code under either of these licenses.
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.providers.ContextProvider;
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.AsyncNCSARequestLog;
29  import org.eclipse.jetty.server.Connector;
30  import org.eclipse.jetty.server.Handler;
31  import org.eclipse.jetty.server.NCSARequestLog;
32  import org.eclipse.jetty.server.Server;
33  import org.eclipse.jetty.server.handler.ContextHandlerCollection;
34  import org.eclipse.jetty.server.handler.DefaultHandler;
35  import org.eclipse.jetty.server.handler.HandlerCollection;
36  import org.eclipse.jetty.server.handler.RequestLogHandler;
37  import org.eclipse.jetty.server.handler.StatisticsHandler;
38  import org.eclipse.jetty.server.nio.BlockingChannelConnector;
39  import org.eclipse.jetty.server.nio.SelectChannelConnector;
40  import org.eclipse.jetty.server.ssl.SslSelectChannelConnector;
41  import org.eclipse.jetty.server.ssl.SslSocketConnector;
42  import org.eclipse.jetty.util.log.Log;
43  import org.eclipse.jetty.util.ssl.SslContextFactory;
44  import org.eclipse.jetty.util.thread.QueuedThreadPool;
45  
46  public class LikeJettyXml
47  {
48      public static void main(String[] args) throws Exception
49      {
50          String jetty_home = System.getProperty("jetty.home","../jetty-distribution/target/distribution");
51          System.setProperty("jetty.home",jetty_home);
52  
53          Server server = new Server();
54          server.setDumpAfterStart(true);
55          server.setDumpBeforeStop(true);
56          
57          // Setup JMX
58          MBeanContainer mbContainer=new MBeanContainer(ManagementFactory.getPlatformMBeanServer());
59          mbContainer.start();
60          server.getContainer().addEventListener(mbContainer);
61          server.addBean(mbContainer,true);
62          mbContainer.addBean(new Log());
63          
64          // Setup Threadpool
65          QueuedThreadPool threadPool = new QueuedThreadPool();
66          threadPool.setMaxThreads(500);
67          server.setThreadPool(threadPool);
68  
69          // Setup Connectors
70          SelectChannelConnector connector = new SelectChannelConnector();
71          connector.setPort(8080);
72          connector.setMaxIdleTime(30000);
73          connector.setConfidentialPort(8443);
74          connector.setStatsOn(false);
75          
76          server.setConnectors(new Connector[]
77          { connector });
78          
79          BlockingChannelConnector bConnector = new BlockingChannelConnector();
80          bConnector.setPort(8888);
81          bConnector.setMaxIdleTime(30000);
82          bConnector.setConfidentialPort(8443);
83          bConnector.setAcceptors(1);
84          server.addConnector(bConnector);
85  
86          SslSelectChannelConnector ssl_connector = new SslSelectChannelConnector();
87          ssl_connector.setPort(8443);
88          SslContextFactory cf = ssl_connector.getSslContextFactory();
89          cf.setKeyStorePath(jetty_home + "/etc/keystore");
90          cf.setKeyStorePassword("OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4");
91          cf.setKeyManagerPassword("OBF:1u2u1wml1z7s1z7a1wnl1u2g");
92          cf.setTrustStore(jetty_home + "/etc/keystore");
93          cf.setTrustStorePassword("OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4");
94          cf.setExcludeCipherSuites(
95                  new String[] {
96                      "SSL_RSA_WITH_DES_CBC_SHA",
97                      "SSL_DHE_RSA_WITH_DES_CBC_SHA",
98                      "SSL_DHE_DSS_WITH_DES_CBC_SHA",
99                      "SSL_RSA_EXPORT_WITH_RC4_40_MD5",
100                     "SSL_RSA_EXPORT_WITH_DES40_CBC_SHA",
101                     "SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA",
102                     "SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA"
103                 });
104         ssl_connector.setStatsOn(false);
105         server.addConnector(ssl_connector);
106         ssl_connector.open();
107         
108         SslSocketConnector ssl2_connector = new SslSocketConnector(cf);
109         ssl2_connector.setPort(8444);
110         ssl2_connector.setStatsOn(false);
111         server.addConnector(ssl2_connector);
112         ssl2_connector.open();
113 
114        
115         /*
116         
117         Ajp13SocketConnector ajp = new Ajp13SocketConnector();
118         ajp.setPort(8009);
119         server.addConnector(ajp);
120         
121         */
122         
123         HandlerCollection handlers = new HandlerCollection();
124         ContextHandlerCollection contexts = new ContextHandlerCollection();
125         RequestLogHandler requestLogHandler = new RequestLogHandler();
126         
127         handlers.setHandlers(new Handler[] { contexts, new DefaultHandler(), requestLogHandler });
128         
129         StatisticsHandler stats = new StatisticsHandler();
130         stats.setHandler(handlers);
131         
132         server.setHandler(stats);
133 
134         // Setup deployers
135         DeploymentManager deployer = new DeploymentManager();
136         deployer.setContexts(contexts);
137         server.addBean(deployer);   
138         
139         ContextProvider context_provider = new ContextProvider();
140         context_provider.setMonitoredDirName(jetty_home + "/contexts");
141         context_provider.setScanInterval(2);
142         deployer.addAppProvider(context_provider);
143 
144         WebAppProvider webapp_provider = new WebAppProvider();
145         webapp_provider.setMonitoredDirName(jetty_home + "/webapps");
146         webapp_provider.setParentLoaderPriority(false);
147         webapp_provider.setExtractWars(true);
148         webapp_provider.setScanInterval(2);
149         webapp_provider.setDefaultsDescriptor(jetty_home + "/etc/webdefault.xml");
150         webapp_provider.setContextXmlDir(jetty_home + "/contexts");
151         deployer.addAppProvider(webapp_provider);
152         
153         HashLoginService login = new HashLoginService();
154         login.setName("Test Realm");
155         login.setConfig(jetty_home + "/etc/realm.properties");
156         server.addBean(login);
157 
158         NCSARequestLog requestLog = new AsyncNCSARequestLog();
159         requestLog.setFilename(jetty_home + "/logs/jetty-yyyy_mm_dd.log");
160         requestLog.setExtended(false);
161         requestLogHandler.setRequestLog(requestLog);
162 
163         server.setStopAtShutdown(true);
164         server.setSendServerVersion(true);
165   
166         server.start();
167         
168         server.join();
169     }
170 }