View Javadoc

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