下面列出了怎么用org.eclipse.jetty.server.handler.HandlerList的API类实例代码及写法,或者点击链接到github查看源代码。
public static void main (String args[]) throws Exception{
logger.info("Starting JETTY server");
Server server = new Server(8080);
ResourceHandler resourceHandler = new ResourceHandler();
resourceHandler.setDirectoriesListed(true);
resourceHandler.setWelcomeFiles(new String[]{ "resources/html/configure.html" });
resourceHandler.setResourceBase(".");
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
resourceHandler.setWelcomeFiles(new String[]{ "resources/html/configure.html" });
resourceHandler.setResourceBase(".");
context.addServlet(new ServletHolder(new ConfigurationServlet()),"/cfg");
context.addServlet(new ServletHolder(new SaveConfigurationServlet()),"/cfg/save");
context.addServlet(new ServletHolder(new LoadConfigurationServlet()),"/cfg/load");
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] { resourceHandler, context });
server.setHandler(handlers);
server.start();
logger.info("Configuration server started at: http://localhost:8080/cfg");
server.join();
}
/**
* Starts the web server on the default {@link #PORT}.
* The given resourceBase is used to be the ROOT directory that serves the default context.
* <p><b>Don't forget to stop the returned HttpServer after the test</b>
*
* @param resourceBase the base of resources for the default context
* @throws Exception if the test fails
*/
protected void startWebServer(final String resourceBase) throws Exception {
if (server_ != null) {
throw new IllegalStateException("startWebServer() can not be called twice");
}
final Server server = buildServer(PORT);
final WebAppContext context = new WebAppContext();
context.setContextPath("/");
context.setResourceBase(resourceBase);
final ResourceHandler resourceHandler = new ResourceHandler();
resourceHandler.setResourceBase(resourceBase);
final MimeTypes mimeTypes = new MimeTypes();
mimeTypes.addMimeMapping("js", MimeType.APPLICATION_JAVASCRIPT);
resourceHandler.setMimeTypes(mimeTypes);
final HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[]{resourceHandler, context});
server.setHandler(handlers);
server.setHandler(resourceHandler);
tryStart(PORT, server);
server_ = server;
}
@Override
public void run(String... strings) throws Exception {
Server server = new Server(8888);
ServletContextHandler helloHandler = new ServletContextHandler(SESSIONS);
helloHandler.setContextPath("/hello");
helloHandler.addServlet(HelloServlet.class, "/*");
helloHandler.addFilter(HelloFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST));
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] {helloHandler});
server.setHandler(handlers);
server.start();
log.info("hello server started");
server.join();
}
public static void main(String[] args) throws Exception {
// Embedded Jetty server
Server server = new Server(HTTP_PORT);
ResourceHandler resourceHandler = new ResourceHandler();
resourceHandler.setWelcomeFiles(new String[] {"index.html"});
resourceHandler.setDirectoriesListed(true);
// resource base is relative to the WORKSPACE file
resourceHandler.setResourceBase("./src/main/resources");
HandlerList handlerList = new HandlerList();
handlerList.setHandlers(
new Handler[] {resourceHandler, new GraphQlHandler(), new DefaultHandler()});
server.setHandler(handlerList);
server.start();
logger.info("Server running on port " + HTTP_PORT);
server.join();
}
private void customWar(String simpleName, byte[] bytes) throws Exception {
File war = new File(Config.dir_custom(true), simpleName + ".war");
File dir = new File(Config.dir_servers_applicationServer_work(), simpleName);
FileUtils.writeByteArrayToFile(war, bytes, false);
if (Servers.applicationServerIsRunning()) {
GzipHandler gzipHandler = (GzipHandler) Servers.applicationServer.getHandler();
HandlerList hanlderList = (HandlerList) gzipHandler.getHandler();
for (Handler handler : hanlderList.getHandlers()) {
if (QuickStartWebApp.class.isAssignableFrom(handler.getClass())) {
QuickStartWebApp app = (QuickStartWebApp) handler;
if (StringUtils.equals("/" + simpleName, app.getContextPath())) {
app.stop();
this.modified(bytes, war, dir);
app.start();
}
}
}
}
}
private void customJar(String simpleName, byte[] bytes) throws Exception {
File jar = new File(Config.dir_custom_jars(true), simpleName + ".jar");
FileUtils.writeByteArrayToFile(jar, bytes, false);
List<String> contexts = new ArrayList<>();
for (String s : Config.dir_custom().list(new WildcardFileFilter("*.war"))) {
contexts.add("/" + FilenameUtils.getBaseName(s));
}
if (Servers.applicationServerIsRunning()) {
GzipHandler gzipHandler = (GzipHandler) Servers.applicationServer.getHandler();
HandlerList hanlderList = (HandlerList) gzipHandler.getHandler();
for (Handler handler : hanlderList.getHandlers()) {
if (QuickStartWebApp.class.isAssignableFrom(handler.getClass())) {
QuickStartWebApp app = (QuickStartWebApp) handler;
if (contexts.contains(app.getContextPath())) {
app.stop();
Thread.sleep(2000);
app.start();
}
}
}
}
}
public void prepare() {
try {
Tools.verifyLocalPort("DBServer ", port());
server = new Server();
DefaultHandler webHandler = new DefaultHandler();
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[]{getResourceHandler(),
getUIWSHandler(), webHandler});
ServerConnector connector = new ServerConnector(server);
connector.setPort(port());
server.setConnectors(new Connector[]{connector});
server.setHandler(handlers);
LOG.log(Level.INFO, "DB Server on : http://{0}:{1}",
new Object[]{Tools.IP(), port() + ""});
} catch (Exception ex) {
LOG.log(Level.SEVERE, ex.getMessage(), ex);
}
}
private HandlerList configureHandlers() {
final HandlerList handlerList = new HandlerList();
Handler avaticaHandler = handler;
// Wrap the provided handler for security if we made one
if (null != config) {
ConstraintSecurityHandler securityHandler = getSecurityHandler();
securityHandler.setHandler(handler);
avaticaHandler = securityHandler;
}
handlerList.setHandlers(new Handler[] {avaticaHandler, new DefaultHandler()});
server.setHandler(handlerList);
return handlerList;
}
@Override public void customize(Server server) {
HttpServer avaticaServer = getAvaticaServer();
HandlerFactory factory = new HandlerFactory();
Handler avaticaHandler = factory.getHandler(service,
Driver.Serialization.PROTOBUF, null, configuration);
if (isBasicAuth) {
ConstraintSecurityHandler securityHandler =
avaticaServer.configureBasicAuthentication(server, configuration);
securityHandler.setHandler(avaticaHandler);
avaticaHandler = securityHandler;
}
HandlerList handlerList = new HandlerList();
handlerList.setHandlers(new Handler[] { avaticaHandler, new DefaultHandler()});
server.setHandler(handlerList);
}
/**
* Starts the server.
*
* @param host
* the host to listen
* @param port
* the port to listen
* @throws Exception
* if the server can't be started
*/
public void start(String host, int port) throws Exception {
server = new Server();
@SuppressWarnings("resource")
final ServerConnector connector = new ServerConnector(server);
connector.setPort(port);
connector.setHost(host);
server.setConnectors(new Connector[] {connector });
final ServletHandler servletHandler = new ServletHandler();
server.setHandler(servletHandler);
servletHandler.addServletWithMapping(AddInServlet.class, "/*");
final HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] {servletHandler, new DefaultHandler() });
server.setHandler(handlers);
server.start();
}
public void start() throws Exception {
server = new Server();
connector = new ServerConnector(server);
connector.setPort(port);
server.addConnector(connector);
server.setStopAtShutdown(true);
ResourceHandler resourceHandler = new ResourceHandler();
resourceHandler.setResourceBase(resourceDir);
resourceHandler.setDirectoriesListed(true);
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] {resourceHandler, new DefaultHandler()});
server.setHandler(handlers);
server.start();
}
public static void main(String[] args) throws Exception {
Server server = new Server(8080);
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.addServlet(new ServletHolder(new WebSocketChatServlet()), "/chat");
ResourceHandler resource_handler = new ResourceHandler();
resource_handler.setDirectoriesListed(true);
resource_handler.setResourceBase("public_html");
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[]{resource_handler, context});
server.setHandler(handlers);
server.start();
System.out.println("Server started!");
server.join();
}
private void addWarsToHandlerList(HandlerList handlerList, String[] virtualHost) {
File warFolder = new File(getSchedulerHome() + FOLDER_TO_DEPLOY);
File[] warFolderContent = warFolder.listFiles((dir, name) -> !"getstarted".equals(name));
if (warFolderContent != null) {
for (File fileToDeploy : warFolderContent) {
if (isExplodedWebApp(fileToDeploy)) {
addExplodedWebApp(handlerList, fileToDeploy, virtualHost);
} else if (isWarFile(fileToDeploy)) {
addWarFile(handlerList, fileToDeploy, virtualHost);
} else if (isStaticFolder(fileToDeploy)) {
addStaticFolder(handlerList, fileToDeploy, virtualHost);
}
}
}
addGetStartedApplication(handlerList, new File(warFolder, "getstarted"), virtualHost);
}
public static void main(String[] args) throws Exception {
AccountService accountService = new AccountService();
accountService.addNewUser(new UserProfile("admin"));
accountService.addNewUser(new UserProfile("test"));
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.addServlet(new ServletHolder(new UsersServlet(accountService)), "/api/v1/users");
context.addServlet(new ServletHolder(new SessionsServlet(accountService)), "/api/v1/sessions");
ResourceHandler resource_handler = new ResourceHandler();
resource_handler.setResourceBase("public_html");
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[]{resource_handler, context});
Server server = new Server(8080);
server.setHandler(handlers);
server.start();
server.join();
}
public static void main(String[] args) throws Exception {
Server server = new Server(8080);
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.addServlet(new ServletHolder(new WebSocketChatServlet()), "/chat");
ResourceHandler resource_handler = new ResourceHandler();
resource_handler.setDirectoriesListed(true);
resource_handler.setResourceBase("public_html");
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[]{resource_handler, context});
server.setHandler(handlers);
server.start();
server.join();
}
public ChaosHttpProxy(URI endpoint, ChaosConfig config)
throws Exception {
setChaosConfig(config);
Supplier<Failure> supplier = new RandomFailureSupplier(
config.getFailures());
requireNonNull(endpoint);
client = new HttpClient();
server = new Server();
HttpConnectionFactory httpConnectionFactory =
new HttpConnectionFactory();
// TODO: SSL
ServerConnector connector = new ServerConnector(server,
httpConnectionFactory);
connector.setHost(endpoint.getHost());
connector.setPort(endpoint.getPort());
server.addConnector(connector);
this.handler = new ChaosHttpProxyHandler(client, supplier);
HandlerList handlers = new HandlerList();
handlers.addHandler(new ChaosApiHandler(this, handler));
handlers.addHandler(handler);
server.setHandler(handlers);
}
public static void main(String[] args) throws Exception {
if (args.length != 1) {
System.out.append("Use port as the first argument");
System.exit(1);
}
String portString = args[0];
int port = Integer.valueOf(portString);
System.out.append("Starting at port: ").append(portString).append('\n');
Server server = new Server(port);
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.addServlet(new ServletHolder(new AdminPageServlet()), AdminPageServlet.adminPageURL);
ResourceHandler resource_handler = new ResourceHandler();
resource_handler.setDirectoriesListed(true);
resource_handler.setResourceBase("static");
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[]{resource_handler, context});
server.setHandler(handlers);
server.start();
server.join();
}
public static void main(final String[] args) throws Exception {
final Server server = new Server(8686);
final ServletHolder staticHolder = new ServletHolder(new DefaultServlet());
final ServletContextHandler staticContext = new ServletContextHandler();
staticContext.setContextPath("/static");
staticContext.addServlet(staticHolder, "/*");
staticContext.setResourceBase(StatsServer.class.getResource("/web-ui").toURI().toString());
// Register and map the dispatcher servlet
final CXFCdiServlet cxfServlet = new CXFCdiServlet();
final ServletHolder cxfServletHolder = new ServletHolder(cxfServlet);
final ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
context.addEventListener(new Listener());
context.addEventListener(new BeanManagerResourceBindingListener());
context.addServlet(cxfServletHolder, "/rest/*");
HandlerList handlers = new HandlerList();
handlers.addHandler(staticContext);
handlers.addHandler(context);
server.setHandler(handlers);
server.start();
server.join();
}
public static void main(final String[] args) throws Exception {
final Server server = new Server(8686);
final ServletHolder staticHolder = new ServletHolder(new DefaultServlet());
final ServletContextHandler staticContext = new ServletContextHandler();
staticContext.setContextPath("/static");
staticContext.addServlet(staticHolder, "/*");
staticContext.setResourceBase(StatsServer.class.getResource("/web-ui").toURI().toString());
// Register and map the dispatcher servlet
final ServletHolder cxfServletHolder = new ServletHolder(new CXFServlet());
final ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
context.addEventListener(new ContextLoaderListener());
context.addServlet(cxfServletHolder, "/rest/*");
context.setInitParameter("contextClass", AnnotationConfigWebApplicationContext.class.getName());
context.setInitParameter("contextConfigLocation", StatsConfig.class.getName());
HandlerList handlers = new HandlerList();
handlers.addHandler(staticContext);
handlers.addHandler(context);
server.setHandler(handlers);
server.start();
server.join();
}
protected ServletContextHandler addResourceHandler(String contextPath, Path resourceBase) {
ServletContextHandler context = new ServletContextHandler();
ResourceHandler staticResource = new ResourceHandler();
staticResource.setDirectoriesListed(true);
staticResource.setWelcomeFiles(new String[] { "index.html" });
staticResource.setResourceBase(resourceBase.toAbsolutePath().toString());
MimeTypes mimeTypes = new MimeTypes();
mimeTypes.addMimeMapping("appcache", "text/cache-manifest");
staticResource.setMimeTypes(mimeTypes);
context.setContextPath(contextPath);
context.setAliasChecks(Arrays.asList(new ApproveAliases(), new AllowSymLinkAliasChecker()));
HandlerList allHandlers = new HandlerList();
allHandlers.addHandler(staticResource);
allHandlers.addHandler(context.getHandler());
context.setHandler(allHandlers);
handlers.addHandler(context);
return context;
}
protected void configServer() {
// init static web server
WebAppContext webAppContext = new WebAppContext(wwwPath, "/");
// turn off file locking!
// without this, we were blocked from dynamically replace static files in the web server directory at runtime
webAppContext.setInitParameter("org.eclipse.jetty.servlet.Default.useFileMappedBuffer", "false");
// set custom & static handlers
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] {
this.handler,
webAppContext // Jetty's built-in static asset web server. this catches any request not handled by the custom handler
});
server.setHandler(handlers);
}
private static WebAppContext setupWebAppContext(HandlerList handlers,
SubmarineConfiguration conf) {
WebAppContext webApp = new WebAppContext();
webApp.setContextPath("/");
File warPath = new File(conf.getString(SubmarineConfVars.ConfVars.WORKBENCH_WEB_WAR));
LOG.info("workbench web war file path is {}.",
conf.getString(SubmarineConfVars.ConfVars.WORKBENCH_WEB_WAR));
if (warPath.isDirectory()) {
// Development mode, read from FS
webApp.setResourceBase(warPath.getPath());
webApp.setParentLoaderPriority(true);
} else {
// use packaged WAR
webApp.setWar(warPath.getAbsolutePath());
File warTempDirectory = new File("webapps");
warTempDirectory.mkdir();
webApp.setTempDirectory(warTempDirectory);
}
webApp.addServlet(new ServletHolder(new DefaultServlet()), "/");
// When requesting the workbench page, the content of index.html needs to be returned,
// otherwise a 404 error will be displayed
// NOTE: If you modify the workbench directory in the front-end URL,
// you need to modify the `/workbench/*` here.
webApp.addServlet(new ServletHolder(RefreshServlet.class), "/user/*");
webApp.addServlet(new ServletHolder(RefreshServlet.class), "/workbench/*");
handlers.setHandlers(new Handler[] { webApp });
return webApp;
}
@Override
public void beforeAll(ExtensionContext context) {
ResourceHandler resourceHandler = new ResourceHandler();
resourceHandler.setBaseResource(Resource.newClassPathResource(folder));
resourceHandler.setWelcomeFiles(new String[]{"index.html"});
resourceHandler.setDirectoriesListed(true);
server = new Server(port);
HandlerList handlers = new HandlerList(resourceHandler, new DefaultHandler());
server.setHandler(handlers);
try {
server.start();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public TestServer(int port, File baseDirectory) {
server = new Server(port);
ResourceHandler resource_handler = new ResourceHandler();
resource_handler.setDirectoriesListed(true);
resource_handler.setResourceBase(baseDirectory == null ? "." : baseDirectory.getAbsolutePath());
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] { resource_handler, new DefaultHandler() });
server.setHandler(handlers);
}
public TestServer(String protocol, String host, int port) {
server = new Server(port);
ResourceHandler resource_handler = new ResourceHandler();
resource_handler.setDirectoriesListed(true);
resource_handler.setResourceBase(".");
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] { resource_handler, new DefaultHandler() });
server.setHandler(handlers);
}
public static void main(String[] argv) throws Exception {
Server server = new Server(Integer.parseInt(argv[0]));
HandlerList handlers = new HandlerList();
handlers.addHandler(new JsltHandler());
server.setHandler(handlers);
server.start();
server.join();
}
/**
* Creates an http server on a random port, serving the <code>dir</code>
* directory (relative to the current project).
*
* @param dir
* @throws IOException
*/
public FileServer(String dir) throws IOException {
server = new Server(0);
ResourceHandler resourceHandler = new ResourceHandler();
Path base = ProjectUtils.getProjectDirectory().resolve(dir);
resourceHandler.setResourceBase(base.toUri().toString());
resourceHandler.setDirectoriesListed(true);
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] { resourceHandler, new DefaultHandler() });
server.setHandler(handlers);
}
public void start()
throws Exception
{
int jettyPort = serverConfig.getServerPort();
int maxFormContentSize = serverConfig.getMaxFormContentSize();
this.server = new Server(jettyPort);
server.setAttribute("org.eclipse.jetty.server.Request.maxFormContentSize",
maxFormContentSize);
HandlerList handlers = loadHandlers(); //加载路由
server.setHandler(handlers);
logger.info("web Server started... the port {}", jettyPort);
server.start();
}
/**
* Start server.
*
* @param packages restful implementation class package
* @param resourcePath resource path
* @param servletPath servlet path
* @throws Exception exception when startup
*/
public void start(final String packages, final Optional<String> resourcePath, final Optional<String> servletPath) throws Exception {
log.info("Elastic Job: Start RESTful server");
HandlerList handlers = new HandlerList();
if (resourcePath.isPresent()) {
servletContextHandler.setBaseResource(Resource.newClassPathResource(resourcePath.get()));
servletContextHandler.addServlet(new ServletHolder(DefaultServlet.class), "/*");
}
String servletPathStr = (servletPath.isPresent() ? servletPath.get() : "") + "/*";
servletContextHandler.addServlet(getServletHolder(packages), servletPathStr);
handlers.addHandler(servletContextHandler);
server.setHandler(handlers);
server.start();
}
@BeforeClass
public static void setUp() throws Exception {
// uncomment this to debug locally in IDE
//setConfigSystemPropertiesForDebugging();
server = new Server();
connector = new ServerConnector(server);
connector.setPort(PORT);
server.addConnector(connector);
HandlerList handlers = new HandlerList();
ServletContextHandler context = new ServletContextHandler();
ServletHolder defaultServ = new ServletHolder("default",
DefaultServlet.class);
defaultServ.setInitParameter("resourceBase",
System.getProperty("builddir") + "/" +
System.getProperty("artifactId") + "-" +
System.getProperty("version") + "/");
defaultServ.setInitParameter("dirAllowed",
"true");
context.addServlet(defaultServ,
"/");
handlers.addHandler(context);
server.setHandler(handlers);
server.start();
}