View Javadoc

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