Java tutorial
/******************************************************************************* * Copyright (c) 2005, 2014 springside.github.io * * Licensed under the Apache License, Version 2.0 (the "License"); *******************************************************************************/ package cn.ebring.rdpedit.start; import java.util.List; import org.apache.commons.lang3.StringUtils; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.nio.SelectChannelConnector; import org.eclipse.jetty.webapp.WebAppClassLoader; import org.eclipse.jetty.webapp.WebAppContext; import com.google.common.collect.Lists; /** * Jetty Server. * * @author calvin */ public class JettyFactory { private static final String DEFAULT_WEBAPP_PATH = "src/main/webapp"; private static final String WINDOWS_WEBDEFAULT_PATH = "jetty/webdefault-windows.xml"; /** * ??Jetty Server, src/main/webappWeb. */ public static Server createServerInSource(int port, String contextPath) { Server server = new Server(); // JVMJetty? server.setStopAtShutdown(true); SelectChannelConnector connector = new SelectChannelConnector(); connector.setPort(port); // Windows???Jetty???. connector.setReuseAddress(false); server.setConnectors(new Connector[] { connector }); WebAppContext webContext = new WebAppContext(DEFAULT_WEBAPP_PATH, contextPath); // webdefault.xmlWindowsJetty Lock???. webContext.setDefaultsDescriptor(WINDOWS_WEBDEFAULT_PATH); server.setHandler(webContext); return server; } /** * jstl-*.jar?tldjar??. * jar?????sitemesh, shiro-web */ public static void setTldJarNames(Server server, String... jarNames) { WebAppContext context = (WebAppContext) server.getHandler(); List<String> jarNameExprssions = Lists.newArrayList(".*/jstl-[^/]*\\.jar$", ".*/.*taglibs[^/]*\\.jar$"); for (String jarName : jarNames) { jarNameExprssions.add(".*/" + jarName + "-[^/]*\\.jar$"); } context.setAttribute("org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern", StringUtils.join(jarNameExprssions, '|')); } /** * ??application?target/classestarget/test-classes. */ public static void reloadContext(Server server) throws Exception { WebAppContext context = (WebAppContext) server.getHandler(); System.out.println("[INFO] Application reloading"); context.stop(); WebAppClassLoader classLoader = new WebAppClassLoader(context); classLoader.addClassPath("target/classes"); // classLoader.addClassPath("target/test-classes"); context.setClassLoader(classLoader); context.start(); System.out.println("[INFO] Application reloaded"); } }