Browse Source

.. 보고서 추가

tobby48 3 years ago
parent
commit
36c1958c6d

+ 147
- 147
src/main/java/kr/co/swh/lecture/opensource/server/JettyServer.java View File

@@ -1,147 +1,147 @@
1
-package kr.co.swh.lecture.opensource.server;
2
-
3
-
4
-import java.util.EnumSet;
5
-
6
-import javax.servlet.DispatcherType;
7
-
8
-import org.apache.logging.log4j.LogManager;
9
-import org.apache.logging.log4j.Logger;
10
-import org.eclipse.jetty.server.Handler;
11
-import org.eclipse.jetty.server.Server;
12
-import org.eclipse.jetty.server.ServerConnector;
13
-import org.eclipse.jetty.server.handler.ContextHandler;
14
-import org.eclipse.jetty.server.handler.ContextHandlerCollection;
15
-import org.eclipse.jetty.server.handler.ResourceHandler;
16
-import org.eclipse.jetty.servlet.DefaultServlet;
17
-import org.eclipse.jetty.servlet.FilterHolder;
18
-import org.eclipse.jetty.servlet.ServletHolder;
19
-import org.eclipse.jetty.webapp.WebAppContext;
20
-import org.eclipse.jetty.websocket.servlet.WebSocketServlet;
21
-import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
22
-
23
-import com.sun.jersey.spi.container.servlet.ServletContainer;
24
-
25
-import kr.co.swh.lecture.opensource.server.websocket.WebSocketEndpoint;
26
-
27
-
28
-/**
29
- * <pre>
30
- * 패키지명 : kr.co.swh.lecture.opensource.server
31
- * 파일명 : JettyServer.java
32
- * 설명 : JettyServer
33
- * 
34
- * </pre>
35
- * 
36
- * @since : 2018. 2. 1.
37
- * @author : tobby48
38
- * @version : v1.0
39
- */
40
-public class JettyServer {
41
-	private static final Logger logger = LogManager.getLogger(JettyServer.class.getName());
42
-	
43
-	private void startJetty() {
44
-				
45
-		final Server cxServer = new Server();
46
-		ServerConnector connector = new ServerConnector(cxServer);
47
-		connector.setHost("127.0.0.1");
48
-		connector.setPort(3001);
49
-		connector.setIdleTimeout(30000);
50
-		connector.setSoLingerTime(30000);
51
-		cxServer.addConnector(connector);
52
-		
53
-		//	ContextHandler(파일서버, 웹 어플리케이션, 웹소켓, 웹서비스) 모두 담기 위한 Collection
54
-		ContextHandlerCollection contexts = new ContextHandlerCollection();
55
-		
56
-		//	파일서버 ContextHandler 생성
57
-		ContextHandler resourceContext = createFileServletContextHandler();
58
-		
59
-		//	웹 어플리케이션 ContextHandler 생성
60
-	    final WebAppContext webApp = setupWebAppContext(contexts);
61
-	    
62
-	    //	웹 서비스 서블릿 추가
63
-	    setWebServiceServletContextHandler(webApp);
64
-	    
65
-	    //	웹 소켓 서블릿 추가
66
-	    setWebSocketServletContextHandler(webApp);
67
-		
68
-		contexts.setHandlers(new Handler[]{webApp, resourceContext});
69
-		cxServer.setHandler(contexts);
70
-        try {
71
-			cxServer.start();
72
-			logger.info("서버에 접속하였습니다.");
73
-			cxServer.join();
74
-		} catch (Exception e) {
75
-			// TODO Auto-generated catch block
76
-			e.printStackTrace();
77
-		}
78
-        Runtime.getRuntime().addShutdownHook(new Thread(){
79
-			@Override public void run() {
80
-				logger.info("서버를 종료합니다.");
81
-				try {
82
-					cxServer.stop();
83
-				} catch (Exception e) {
84
-				}
85
-			}
86
-		});
87
-    }
88
-	
89
-	private void setWebSocketServletContextHandler(WebAppContext webApp) {
90
-		ServletHolder holder = new ServletHolder(new WebSocketServlet() {
91
-			/**
92
-			 * 
93
-			 */
94
-			private static final long serialVersionUID = 1L;
95
-
96
-			@Override
97
-			public void configure(WebSocketServletFactory factory) {
98
-				// TODO Auto-generated method stub
99
-				factory.register(WebSocketEndpoint.class);
100
-			}
101
-		});
102
-		holder.setName("ws");
103
-		webApp.addServlet(holder, "/ws/*");
104
-    }
105
-	
106
-	private void setWebServiceServletContextHandler(WebAppContext webApp) {
107
-		ServletHolder holder = new ServletHolder(ServletContainer.class);
108
-		holder.setInitParameter("com.sun.jersey.config.property.resourceConfigClass", "com.sun.jersey.api.core.PackagesResourceConfig");
109
-		holder.setInitParameter("com.sun.jersey.config.property.packages", "kr.co.swh.lecture.opensource.server.webservice");
110
-		holder.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");		//	json 
111
-		webApp.addServlet(holder, "/api/*");
112
-    }
113
-	
114
-	private ContextHandler createFileServletContextHandler() {
115
-		ResourceHandler resource_handler = new ResourceHandler();
116
-		resource_handler.setDirectoriesListed(true);
117
-		resource_handler.setResourceBase(".");
118
-		
119
-		ContextHandler resourceContext = new ContextHandler();
120
-		resourceContext.setInitParameter("org.eclipse.jetty.servlet.Default.dirAllowed", "true");
121
-		resourceContext.setContextPath("/files/*");
122
-        resourceContext.setHandler(resource_handler);
123
-        return resourceContext;
124
-    }
125
-	
126
-	private WebAppContext setupWebAppContext(ContextHandlerCollection contexts) {
127
-
128
-		WebAppContext webApp = new WebAppContext();
129
-		
130
-		//	dev mode
131
-		String webappDirLocation = "C:/Users/허석/git/swh-opensource/swh-opensource/src/main/webapp/";
132
-		webApp.setContextPath("/");
133
-		webApp.setDescriptor(webappDirLocation + "/WEB-INF/web.xml");
134
-		webApp.setResourceBase(webappDirLocation);
135
-		webApp.addServlet(new ServletHolder(new DefaultServlet()), "/*");
136
-		webApp.addFilter(new FilterHolder(CorsFilter.class), "/*", EnumSet.allOf(DispatcherType.class));
137
-		contexts.addHandler(webApp);
138
-
139
-		return webApp;
140
-
141
-	}
142
-	
143
-	public static void main(String[] args){
144
-		JettyServer server = new JettyServer();
145
-		server.startJetty();
146
-	}
147
-}
1
+package kr.co.swh.lecture.opensource.server;
2
+
3
+
4
+import java.util.EnumSet;
5
+
6
+import javax.servlet.DispatcherType;
7
+
8
+import org.apache.logging.log4j.LogManager;
9
+import org.apache.logging.log4j.Logger;
10
+import org.eclipse.jetty.server.Handler;
11
+import org.eclipse.jetty.server.Server;
12
+import org.eclipse.jetty.server.ServerConnector;
13
+import org.eclipse.jetty.server.handler.ContextHandler;
14
+import org.eclipse.jetty.server.handler.ContextHandlerCollection;
15
+import org.eclipse.jetty.server.handler.ResourceHandler;
16
+import org.eclipse.jetty.servlet.DefaultServlet;
17
+import org.eclipse.jetty.servlet.FilterHolder;
18
+import org.eclipse.jetty.servlet.ServletHolder;
19
+import org.eclipse.jetty.webapp.WebAppContext;
20
+import org.eclipse.jetty.websocket.servlet.WebSocketServlet;
21
+import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
22
+
23
+import com.sun.jersey.spi.container.servlet.ServletContainer;
24
+
25
+import kr.co.swh.lecture.opensource.server.websocket.WebSocketEndpoint;
26
+
27
+
28
+/**
29
+ * <pre>
30
+ * 패키지명 : kr.co.swh.lecture.opensource.server
31
+ * 파일명 : JettyServer.java
32
+ * 설명 : JettyServer
33
+ * 
34
+ * </pre>
35
+ * 
36
+ * @since : 2018. 2. 1.
37
+ * @author : tobby48
38
+ * @version : v1.0
39
+ */
40
+public class JettyServer {
41
+	private static final Logger logger = LogManager.getLogger(JettyServer.class.getName());
42
+	
43
+	private void startJetty() {
44
+				
45
+		final Server cxServer = new Server();
46
+		ServerConnector connector = new ServerConnector(cxServer);
47
+		connector.setHost("127.0.0.1");
48
+		connector.setPort(3001);
49
+		connector.setIdleTimeout(30000);
50
+		connector.setSoLingerTime(30000);
51
+		cxServer.addConnector(connector);
52
+		
53
+		//	ContextHandler(파일서버, 웹 어플리케이션, 웹소켓, 웹서비스) 모두 담기 위한 Collection
54
+		ContextHandlerCollection contexts = new ContextHandlerCollection();
55
+		
56
+		//	파일서버 ContextHandler 생성
57
+		ContextHandler resourceContext = createFileServletContextHandler();
58
+		
59
+		//	웹 어플리케이션 ContextHandler 생성
60
+	    final WebAppContext webApp = setupWebAppContext(contexts);
61
+	    
62
+	    //	웹 서비스 서블릿 추가
63
+	    setWebServiceServletContextHandler(webApp);
64
+	    
65
+	    //	웹 소켓 서블릿 추가
66
+	    setWebSocketServletContextHandler(webApp);
67
+		
68
+		contexts.setHandlers(new Handler[]{webApp, resourceContext});
69
+		cxServer.setHandler(contexts);
70
+        try {
71
+			cxServer.start();
72
+			logger.info("서버에 접속하였습니다.");
73
+			cxServer.join();
74
+		} catch (Exception e) {
75
+			// TODO Auto-generated catch block
76
+			e.printStackTrace();
77
+		}
78
+        Runtime.getRuntime().addShutdownHook(new Thread(){
79
+			@Override public void run() {
80
+				logger.info("서버를 종료합니다.");
81
+				try {
82
+					cxServer.stop();
83
+				} catch (Exception e) {
84
+				}
85
+			}
86
+		});
87
+    }
88
+	
89
+	private void setWebSocketServletContextHandler(WebAppContext webApp) {
90
+		ServletHolder holder = new ServletHolder(new WebSocketServlet() {
91
+			/**
92
+			 * 
93
+			 */
94
+			private static final long serialVersionUID = 1L;
95
+
96
+			@Override
97
+			public void configure(WebSocketServletFactory factory) {
98
+				// TODO Auto-generated method stub
99
+				factory.register(WebSocketEndpoint.class);
100
+			}
101
+		});
102
+		holder.setName("ws");
103
+		webApp.addServlet(holder, "/ws/*");
104
+    }
105
+	
106
+	private void setWebServiceServletContextHandler(WebAppContext webApp) {
107
+		ServletHolder holder = new ServletHolder(ServletContainer.class);
108
+		holder.setInitParameter("com.sun.jersey.config.property.resourceConfigClass", "com.sun.jersey.api.core.PackagesResourceConfig");
109
+		holder.setInitParameter("com.sun.jersey.config.property.packages", "kr.co.swh.lecture.opensource.server.webservice");
110
+		holder.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");		//	json 
111
+		webApp.addServlet(holder, "/api/*");
112
+    }
113
+	
114
+	private ContextHandler createFileServletContextHandler() {
115
+		ResourceHandler resource_handler = new ResourceHandler();
116
+		resource_handler.setDirectoriesListed(true);
117
+		resource_handler.setResourceBase(".");
118
+		
119
+		ContextHandler resourceContext = new ContextHandler();
120
+		resourceContext.setInitParameter("org.eclipse.jetty.servlet.Default.dirAllowed", "true");
121
+		resourceContext.setContextPath("/files/*");
122
+        resourceContext.setHandler(resource_handler);
123
+        return resourceContext;
124
+    }
125
+	
126
+	private WebAppContext setupWebAppContext(ContextHandlerCollection contexts) {
127
+
128
+		WebAppContext webApp = new WebAppContext();
129
+		
130
+		//	dev mode
131
+		String webappDirLocation = "C:/Users/tobby48/git/swh-opensource/src/main/webapp/";
132
+		webApp.setContextPath("/");
133
+		webApp.setDescriptor(webappDirLocation + "/WEB-INF/web.xml");
134
+		webApp.setResourceBase(webappDirLocation);
135
+		webApp.addServlet(new ServletHolder(new DefaultServlet()), "/*");
136
+		webApp.addFilter(new FilterHolder(CorsFilter.class), "/*", EnumSet.allOf(DispatcherType.class));
137
+		contexts.addHandler(webApp);
138
+
139
+		return webApp;
140
+
141
+	}
142
+	
143
+	public static void main(String[] args){
144
+		JettyServer server = new JettyServer();
145
+		server.startJetty();
146
+	}
147
+}

+ 502
- 29
src/main/webapp/index.html
File diff suppressed because it is too large
View File


+ 29
- 0
src/main/webapp/index2.html View File

@@ -0,0 +1,29 @@
1
+<!DOCTYPE html>
2
+<html lang="en">
3
+<head>
4
+<meta charset="utf-8">
5
+<title>Welcome to SWH Academy</title>
6
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+<meta name="description" content="Lectures in SWH Academy" />
8
+<meta name="author" content="tobby48@gmail.com" />
9
+</head>
10
+<body bgcolor=white>
11
+	<table border="5" cellpadding="10">
12
+		<tr>
13
+			<td>
14
+				<h1>Embedded Jetty 웹 페이지입니다.</h1>
15
+			</td>
16
+			<td>
17
+				<h3>22.</h3>
18
+			</td>
19
+		</tr>
20
+	</table>
21
+	<p>SWH아카데미 학습용 웹 페이지입니다.</p>
22
+	<p>후. 잘해보자.
23
+		<br>links:<br/>
24
+	</p>
25
+	<ul>
26
+		<li><a href="swhcoding.com">SWH Homepage</a>.
27
+	</ul>
28
+</body>
29
+</html>