jetty 9 嵌入应用程序后,小型的web应用直接打成一个单独的jar包,就可以直接运行,非常适合做Demo演示或云端集群部署。

主要代码:

JettyServer的封装类

 1 package yjmyzz.jetty.demo.server;
 2 
 3 import org.eclipse.jetty.server.*;
 4 import org.eclipse.jetty.server.handler.HandlerCollection;
 5 import org.eclipse.jetty.server.handler.RequestLogHandler;
 6 import org.eclipse.jetty.server.handler.gzip.GzipHandler;
 7 import org.eclipse.jetty.util.thread.QueuedThreadPool;
 8 import org.eclipse.jetty.util.thread.ThreadPool;
 9 import org.eclipse.jetty.webapp.WebAppContext;
10 import org.slf4j.LoggerFactory;
11 
12 import java.io.File;
13 
14 public class JettyWebServer {
15 
16     private static org.slf4j.Logger logger = LoggerFactory.getLogger(JettyWebServer.class);
17 
18     private Server server;
19     private int port;
20     private String host;
21     private String tempDir;
22     private String logDir;
23     private String webDir;
24     private String contextPath;
25 
26 
27     public JettyWebServer(int port, String host, String tempDir, String webDir, String logDir, String contextPath) {
28 
29         logger.info("port:{},host:{},tempDir:{},webDir:{},logDir:{},contextPath:{}", port, host, tempDir, webDir, logDir, contextPath);
30 
31         this.port = port;
32         this.host = host;
33         this.tempDir = tempDir;
34         this.webDir = webDir;
35         this.contextPath = contextPath;
36         this.logDir = logDir;
37     }
38 
39     public void start() throws Exception {
40         server = new Server(createThreadPool());
41         server.addConnector(createConnector());
42         server.setHandler(createHandlers());
43         server.setStopAtShutdown(true);
44         server.start();
45     }
46 
47     public void join() throws InterruptedException {
48         server.join();
49     }
50 
51 
52     private ThreadPool createThreadPool() {
53         QueuedThreadPool threadPool = new QueuedThreadPool();
54         threadPool.setMinThreads(10);
55         threadPool.setMaxThreads(100);
56         return threadPool;
57     }
58 
59 
60     private NetworkConnector createConnector() {
61         ServerConnector connector = new ServerConnector(server);
62         connector.setPort(port);
63         connector.setHost(host);
64         return connector;
65     }
66 
67     private HandlerCollection createHandlers() {
68         WebAppContext context = new WebAppContext();
69         context.setContextPath(contextPath);
70         context.setWar(webDir);
71         context.setTempDirectory(new File(tempDir));
72 
73 
74         RequestLogHandler logHandler = new RequestLogHandler();
75         logHandler.setRequestLog(createRequestLog());
76         GzipHandler gzipHandler = new GzipHandler();
77         HandlerCollection handlerCollection = new HandlerCollection();
78         handlerCollection.setHandlers(new Handler[]{context, logHandler, gzipHandler});
79         return handlerCollection;
80     }
81 
82     private RequestLog createRequestLog() {
83         //记录访问日志的处理
84         NCSARequestLog requestLog = new NCSARequestLog();
85         requestLog.setFilename(logDir + "/yyyy-mm-dd.log");
86         requestLog.setRetainDays(90);
87         requestLog.setExtended(false);
88         requestLog.setAppend(true);
89         //requestLog.setLogTimeZone("GMT");
90         requestLog.setLogTimeZone("Asia/Shanghai");
91         requestLog.setLogDateFormat("yyyy-MM-dd HH:mm:ss SSS");
92         requestLog.setLogLatency(true);
93         return requestLog;
94     }
95 
96 }
View Code

相关文章: