1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.http.spi;
20
21 import java.io.IOException;
22 import java.net.InetSocketAddress;
23
24 import org.eclipse.jetty.server.Handler;
25 import org.eclipse.jetty.server.Server;
26 import org.eclipse.jetty.server.handler.DefaultHandler;
27 import org.eclipse.jetty.server.handler.HandlerCollection;
28 import org.eclipse.jetty.server.handler.ContextHandlerCollection;
29 import org.eclipse.jetty.util.thread.ExecutorThreadPool;
30 import org.eclipse.jetty.util.thread.QueuedThreadPool;
31 import org.eclipse.jetty.util.thread.ThreadPool;
32
33 import com.sun.net.httpserver.HttpServer;
34 import com.sun.net.httpserver.HttpsServer;
35 import com.sun.net.httpserver.spi.HttpServerProvider;
36
37
38
39
40 public class JettyHttpServerProvider extends HttpServerProvider
41 {
42
43 private static Server _server;
44
45 public static void setServer(Server server)
46 {
47 _server = server;
48 }
49
50 @Override
51 public HttpServer createHttpServer(InetSocketAddress addr, int backlog)
52 throws IOException
53 {
54 Server server = _server;
55 boolean shared = true;
56
57 if (server == null)
58 {
59 ThreadPool threadPool = new DelegatingThreadPool(new QueuedThreadPool());
60 server = new Server(threadPool);
61
62 HandlerCollection handlerCollection = new HandlerCollection();
63 handlerCollection.setHandlers(new Handler[] {new ContextHandlerCollection(), new DefaultHandler()});
64 server.setHandler(handlerCollection);
65
66 shared = false;
67 }
68
69 JettyHttpServer jettyHttpServer = new JettyHttpServer(server, shared);
70 jettyHttpServer.bind(addr, backlog);
71 return jettyHttpServer;
72 }
73
74 @Override
75 public HttpsServer createHttpsServer(InetSocketAddress addr, int backlog) throws IOException
76 {
77 throw new UnsupportedOperationException();
78 }
79
80 }