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