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.SelectChannelConnector;
33  import org.eclipse.jetty.server.ssl.SslSelectChannelConnector;
34  import org.eclipse.jetty.util.log.Log;
35  import org.eclipse.jetty.util.thread.QueuedThreadPool;
36  
37  public class LikeJettyXml
38  {
39      public static void main(String[] args) throws Exception
40      {
41          String jetty_home = System.getProperty("jetty.home","../jetty-distribution/target/distribution");
42          System.setProperty("jetty.home",jetty_home);
43  
44          Server server = new Server();
45          
46          // Setup JMX
47          MBeanContainer mbContainer=new MBeanContainer(ManagementFactory.getPlatformMBeanServer());
48          server.getContainer().addEventListener(mbContainer);
49          server.addBean(mbContainer);
50          mbContainer.addBean(Log.getLog());
51  
52          
53          // Setup Threadpool
54          QueuedThreadPool threadPool = new QueuedThreadPool();
55          threadPool.setMaxThreads(100);
56          server.setThreadPool(threadPool);
57  
58          // Setup Connectors
59          SelectChannelConnector connector = new SelectChannelConnector();
60          connector.setPort(8080);
61          connector.setMaxIdleTime(30000);
62          connector.setConfidentialPort(8443);
63          connector.setStatsOn(true);
64          
65          server.setConnectors(new Connector[]
66          { connector });
67  
68          SslSelectChannelConnector ssl_connector = new SslSelectChannelConnector();
69          ssl_connector.setPort(8443);
70          ssl_connector.setKeystore(jetty_home + "/etc/keystore");
71          ssl_connector.setPassword("OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4");
72          ssl_connector.setKeyPassword("OBF:1u2u1wml1z7s1z7a1wnl1u2g");
73          ssl_connector.setTruststore(jetty_home + "/etc/keystore");
74          ssl_connector.setTrustPassword("OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4");
75          ssl_connector.setStatsOn(true);
76          server.addConnector(ssl_connector);
77  
78          HandlerCollection handlers = new HandlerCollection();
79          ContextHandlerCollection contexts = new ContextHandlerCollection();
80          RequestLogHandler requestLogHandler = new RequestLogHandler();
81          handlers.setHandlers(new Handler[]
82          { contexts, new DefaultHandler(), requestLogHandler });
83          
84          StatisticsHandler stats = new StatisticsHandler();
85          stats.setHandler(handlers);
86          
87          server.setHandler(stats);
88  
89          // Setup deployers
90          DeploymentManager deployer = new DeploymentManager();
91          deployer.setContexts(contexts);
92          server.addBean(deployer);   
93          
94          ContextProvider context_provider = new ContextProvider();
95          context_provider.setMonitoredDir(jetty_home + "/contexts");
96          context_provider.setScanInterval(2);
97          server.addBean(context_provider);
98          deployer.addAppProvider(context_provider);
99  
100         WebAppProvider webapp_provider = new WebAppProvider();
101         webapp_provider.setMonitoredDir(jetty_home + "/webapps");
102         webapp_provider.setParentLoaderPriority(false);
103         webapp_provider.setExtractWars(true);
104         webapp_provider.setScanInterval(2);
105         webapp_provider.setDefaultsDescriptor(jetty_home + "/etc/webdefault.xml");
106         webapp_provider.setContextXmlDir(jetty_home + "/contexts");
107         deployer.addAppProvider(webapp_provider);
108 
109         HashLoginService login = new HashLoginService();
110         login.setName("Test Realm");
111         login.setConfig(jetty_home + "/etc/realm.properties");
112         server.addBean(login);
113 
114         NCSARequestLog requestLog = new NCSARequestLog(jetty_home + "/logs/jetty-yyyy_mm_dd.log");
115         requestLog.setExtended(false);
116         requestLogHandler.setRequestLog(requestLog);
117 
118         server.setStopAtShutdown(true);
119         server.setSendServerVersion(true);
120 
121         server.start();
122         server.join();
123     }
124 
125 }