import java.io.File; import java.net.URL; import java.security.ProtectionDomain; import org.eclipse.jetty.rewrite.handler.RewriteHandler; import org.eclipse.jetty.server.ConnectorStatistics; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.HttpConfiguration; import org.eclipse.jetty.server.HttpConnectionFactory; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.handler.ContextHandlerCollection; import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.server.handler.HandlerCollection; import org.eclipse.jetty.server.handler.StatisticsHandler; import org.eclipse.jetty.util.thread.QueuedThreadPool; import org.eclipse.jetty.util.thread.ScheduledExecutorScheduler; import org.eclipse.jetty.webapp.Configuration.ClassList; import org.eclipse.jetty.webapp.WebAppContext; public class Main { public static void main(String[] args) throws Exception { Server server = new Server(8080); ClassList classList = ClassList.setServerDefault(server); classList.addBefore("org.eclipse.jetty.webapp.JettyWebXmlConfiguration", "org.eclipse.jetty.annotations.AnnotationConfiguration"); WebAppContext webapp = new WebAppContext(); webapp.setContextPath("/"); ProtectionDomain domain = Main.class.getProtectionDomain(); URL location = domain.getCodeSource().getLocation(); webapp.setWar(location.toExternalForm()); webapp.setDefaultsDescriptor("META-INF/jetty/webdefault.xml"); server.setHandler(webapp); server.start(); server.join(); } // http://www.eclipse.org/jetty/documentation/current/embedding-jetty.html public static void main1(String[] args) throws Exception { // String jettyHome = null; // String jetty_home = System.getProperty("jetty.home", // "../../jetty-distribution/target/distribution"); // System.setProperty("jetty.home", jetty_home); // ---------------------------------- jetty.xml int minThreads = Integer.valueOf(System.getProperty("threads.min", "10")); int maxThreads = Integer.valueOf(System.getProperty("threads.max", "200")); int idleTimeout = Integer.valueOf(System.getProperty("threads.timeout", "60000")); QueuedThreadPool threadPool = new QueuedThreadPool(minThreads, maxThreads, idleTimeout); threadPool.setDetailedDump(false); HttpConfiguration httpConfig = new HttpConfiguration(); httpConfig.setSecureScheme("https"); httpConfig.setSecurePort(Integer.valueOf(System.getProperty("jetty.secure.port", "8443"))); httpConfig.setOutputBufferSize(32768); httpConfig.setRequestHeaderSize(8192); httpConfig.setResponseHeaderSize(8192); httpConfig.setSendServerVersion(true); httpConfig.setSendDateHeader(false); httpConfig.setHeaderCacheSize(512); Server server = new Server(threadPool); server.addBean(new ScheduledExecutorScheduler()); HandlerCollection handlers = new HandlerCollection(); ContextHandlerCollection contexts = new ContextHandlerCollection(); handlers.setHandlers(new Handler[]{contexts, new DefaultHandler()}); server.setHandler(handlers); server.setStopAtShutdown(true); server.setStopTimeout(5000); server.setDumpAfterStart(Boolean.valueOf(System.getProperty("jetty.dump.start", "false"))); server.setDumpBeforeStop(Boolean.valueOf(System.getProperty("jetty.dump.stop", "false"))); // ---------------------------------- jetty-jmx.xml // MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer(); // server.addBean(new MBeanContainer(mBeanServer)); // server.addBean(new Log()); // ---------------------------------- jetty-http.xml ServerConnector http = new ServerConnector(server, new HttpConnectionFactory(httpConfig)); http.setHost(System.getProperty("jetty.host")); http.setPort(Integer.valueOf(System.getProperty("jetty.port", "8080"))); http.setIdleTimeout(Integer.valueOf(System.getProperty("http.timeout", "30000"))); server.addConnector(http); // ---------------------------------- jetty-deploy.xml // DeploymentManager deployer = new DeploymentManager(); // deployer.setContexts(handlers); // deployer.setContextAttribute("org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern", // ".*/servlet-api-[^/]*\\.jar$"); // WebAppProvider webappProvider = new WebAppProvider(); // webappProvider.setMonitoredDirName(jettyHome + "/webapps"); // webappProvider.setDefaultsDescriptor(jettyHome + // "/etc/webdefault.xml"); // webappProvider.setScanInterval(1); // webappProvider.setExtractWars(true); // webappProvider.setConfigurationManager(new // PropertiesConfigurationManager()); // deployer.addAppProvider(webappProvider); // server.addBean(deployer); // ---------------------------------- jetty-rewrite.xml RewriteHandler rewrite = new RewriteHandler(); rewrite.setHandler(server.getHandler()); rewrite.setRewriteRequestURI(Boolean.valueOf(System.getProperty("rewrite.rewriteRequestURI", "true"))); rewrite.setRewritePathInfo(Boolean.valueOf(System.getProperty("rewrite.rewritePathInfo", "false"))); rewrite.setOriginalPathAttribute(System.getProperty("rewrite.originalPathAttribute", "requestedPath")); // ---------------------------------- jetty-demo.xml // ---------------------------------- test-realm.xml // HashLoginService login = new HashLoginService(); // login.setName("Test Realm"); // login.setConfig(jettyHome + "/etc/realm.properties"); // login.setRefreshInterval(0); // server.addBean(login); // ---------------------------------- jetty-jaas.xml // ---------------------------------- jetty-plus.xml ClassList classList = ClassList.setServerDefault(server); classList.addAfter("org.eclipse.jetty.webapp.FragmentConfiguration", "org.eclipse.jetty.plus.webapp.EnvConfiguration", "org.eclipse.jetty.plus.webapp.PlusConfiguration"); // jetty-annotations.xml classList.addBefore("org.eclipse.jetty.webapp.JettyWebXmlConfiguration", "org.eclipse.jetty.annotations.AnnotationConfiguration"); // jetty-stats.xml StatisticsHandler stats = new StatisticsHandler(); stats.setHandler(server.getHandler()); server.setHandler(stats); ConnectorStatistics.addToAllConnectors(server); // ---------------------------------- jetty-requestlog.xml // AsyncNCSARequestLog requestLogImpl = new AsyncNCSARequestLog(); // // requestLogImpl.setFilename(jettyHome+System.getProperty("jetty.logs","/logs")+"/yyyy_mm_dd.request.log"); // requestLogImpl.setFilenameDateFormat("yyyy_MM_dd"); // requestLogImpl.setRetainDays(Integer.valueOf(System.getProperty("requestlog.retain","90"))); // requestLogImpl.setAppend(Boolean.valueOf(System.getProperty("requestlog.append","true"))); // requestLogImpl.setExtended(Boolean.valueOf(System.getProperty("requestlog.extended","true"))); // requestLogImpl.setLogCookies(false); // requestLogImpl.setLogTimeZone("GMT"); // // RequestLogHandler requestLogHandler = new RequestLogHandler(); // requestLogHandler.setRequestLog(requestLogImpl); // handlers.addHandler(requestLogHandler); // ---------------------------------- jetty-lowresources.xml // LowResourceMonitor lowResourcesMonitor = new // LowResourceMonitor(server); // lowResourcesMonitor.setPeriod(Integer.valueOf(System.getProperty("lowresources.period","1000"))); // lowResourcesMonitor.setLowResourcesIdleTimeout(Integer.valueOf(System.getProperty("lowresources.lowResourcesIdleTimeout","200"))); // lowResourcesMonitor.setMonitorThreads(Boolean.valueOf(System.getProperty("lowresources.monitorThreads","true"))); // lowResourcesMonitor.setMaxConnections(Integer.valueOf(System.getProperty("lowresources.maxConnections","0"))); // lowResourcesMonitor.setMaxMemory(Integer.valueOf(System.getProperty("lowresources.maxMemory","0"))); // lowResourcesMonitor.setMaxLowResourcesTime(Integer.valueOf(System.getProperty("lowresources.maxLowResourcesTime","0"))); // server.addBean(lowResourcesMonitor); // ---------------------------------- jetty-ssl.xml // SslContextFactory sslContextFactory = new SslContextFactory(); // sslContextFactory.setKeyStorePath(jettyHome+System.getProperty("jetty.keystore","/etc/keystore")); // sslContextFactory.setKeyStorePassword(System.getProperty("jetty.keystore.password","OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4")); // sslContextFactory.setKeyManagerPassword(System.getProperty("jetty.keymanager.password","OBF:1u2u1wml1z7s1z7a1wnl1u2g")); // sslContextFactory.setTrustStorePath(jettyHome+System.getProperty("jetty.truststore","/etc/keystore")); // sslContextFactory.setTrustStorePassword(System.getProperty("jetty.truststore.password","OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4")); // sslContextFactory.setEndpointIdentificationAlgorithm(null); // sslContextFactory.setExcludeCipherSuites( // "SSL_RSA_WITH_DES_CBC_SHA", // "SSL_DHE_RSA_WITH_DES_CBC_SHA", // "SSL_DHE_DSS_WITH_DES_CBC_SHA", // "SSL_RSA_EXPORT_WITH_RC4_40_MD5", // "SSL_RSA_EXPORT_WITH_DES40_CBC_SHA", // "SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA", // "SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA"); // HttpConfiguration sslHttpConfig = new HttpConfiguration(httpConfig); // sslHttpConfig.addCustomizer(new SecureRequestCustomizer()); // ---------------------------------- jetty-https.xml // ServerConnector httpsConnector = new ServerConnector(server, // new SslConnectionFactory(sslContextFactory, "http/1.1"), // new HttpConnectionFactory(sslHttpConfig)); // httpsConnector.setHost(System.getProperty("jetty.host")); // httpsConnector.setPort(Integer.valueOf(System.getProperty("jetty.https.port","8443"))); // httpsConnector.setIdleTimeout(30000); // server.addConnector(httpsConnector); URL url = Main.class.getResource("index.html"); System.out.println("[[[[[[[[[[[[[[[[[ index.html = " + url); System.out.println("[[[[[[[[[[[[[[[[[ index.html = " + url.getFile()); System.out.println("[[[[[[[[[[[[[[[[[ index.html = " + new File(url.getFile()).exists()); System.out.println("[[[[[[[[[[[[[[[[[ index.html = " + url.toExternalForm()); ProtectionDomain domain = Main.class.getProtectionDomain(); URL location = domain.getCodeSource().getLocation(); System.out.println("[[[[[[[[[[[[[[[[[ Main.class.getProtectionDomain() = " + location); System.out.println("[[[[[[[[[[[[[[[[[ Main.class.getProtectionDomain() = " + location.toExternalForm()); WebAppContext webapp = new WebAppContext(); webapp.setContextPath("/"); webapp.setWar(location.toExternalForm()); // webapp.setConfigurations(new Configuration[] { new // AnnotationConfiguration() }); // Resource d = // Resource.newSystemResource(webapp.getDefaultsDescriptor()); // System.out.println("^^^^^^^^^^^^^^^^ defaultsDescriptor = " + // webapp.getDefaultsDescriptor()); // if (d != null) { // System.out // .println("^^^^^^^^^^^^^^^^ defaultsDescriptor newSystemResource EXISTS and url = " // + d.toString()); // } else { // d = webapp.newResource(webapp.getDefaultsDescriptor()); // if (d != null) { // System.out.println("^^^^^^^^^^^^^^^^ defaultsDescriptor newResource EXISTS and url = " // + d.toString()); // } else { // System.out.println("^^^^^^^^^^^^^^^^ defaultsDescriptor = " + // webapp.getDefaultsDescriptor() // + " NOT exists"); // } // } webapp.setDefaultsDescriptor("META-INF/jetty/webdefault.xml"); // System.out.println("================= defaultsDescriptor = " + // webapp.getDefaultsDescriptor()); // if (d != null) { // System.out // .println("================= defaultsDescriptor newSystemResource EXISTS and url = " // + d.toString()); // } else { // d = webapp.newResource(webapp.getDefaultsDescriptor()); // if (d != null) { // System.out.println("================= defaultsDescriptor newResource EXISTS and url = " // + d.toString()); // } else { // System.out.println("================= defaultsDescriptor = " + // webapp.getDefaultsDescriptor() // + " NOT exists"); // } // } // webapp.setHandler(server.getHandler()); server.setHandler(webapp); server.start(); server.join(); } }