// // ======================================================================== // Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd. // ------------------------------------------------------------------------ // All rights reserved. This program and the accompanying materials // are made available under the terms of the Eclipse Public License v1.0 // and Apache License v2.0 which accompanies this distribution. // // The Eclipse Public License is available at // http://www.eclipse.org/legal/epl-v10.html // // The Apache License v2.0 is available at // http://www.opensource.org/licenses/apache2.0.php // // You may elect to redistribute this code under either of these licenses. // ======================================================================== // package org.eclipse.jetty.http.spi; import java.io.IOException; import java.net.InetSocketAddress; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; 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.util.thread.QueuedThreadPool; import org.eclipse.jetty.util.thread.ThreadPool; import com.sun.net.httpserver.HttpServer; import com.sun.net.httpserver.HttpsServer; import com.sun.net.httpserver.spi.HttpServerProvider; /** * Jetty implementation of <a href="http://java.sun.com/javase/6/docs/jre/api/net/httpserver/spec/index.html">Java HTTP Server SPI</a> */ public class JettyHttpServerProvider extends HttpServerProvider { private static Server _server; public static void setServer(Server server) { _server = server; } @Override public HttpServer createHttpServer(InetSocketAddress addr, int backlog) throws IOException { Server server = _server; boolean shared = true; if (server == null) { ThreadPool threadPool = new DelegatingThreadPool(new QueuedThreadPool()); server = new Server(threadPool); HandlerCollection handlerCollection = new HandlerCollection(); handlerCollection.setHandlers(new Handler[] {new ContextHandlerCollection(), new DefaultHandler()}); server.setHandler(handlerCollection); shared = false; } JettyHttpServer jettyHttpServer = new JettyHttpServer(server, shared); jettyHttpServer.bind(addr, backlog); return jettyHttpServer; } @Override public HttpsServer createHttpsServer(InetSocketAddress addr, int backlog) throws IOException { throw new UnsupportedOperationException(); } }