diff --git a/study/src/main/resources/application.yml b/study/src/main/resources/application.yml index e3f03c808a..c152bb20db 100644 --- a/study/src/main/resources/application.yml +++ b/study/src/main/resources/application.yml @@ -3,8 +3,8 @@ handlebars: server: tomcat: - accept-count: 2 - max-connections: 2 + accept-count: 1 + max-connections: 1 threads: min-spare: 2 max: 2 diff --git a/tomcat/src/main/java/com/techcourse/controller/AbstractController.java b/tomcat/src/main/java/com/techcourse/controller/AbstractController.java index 9ee8cae097..d91f52d861 100644 --- a/tomcat/src/main/java/com/techcourse/controller/AbstractController.java +++ b/tomcat/src/main/java/com/techcourse/controller/AbstractController.java @@ -10,11 +10,9 @@ public abstract class AbstractController implements Controller { public void service(HttpRequest httpRequest, HttpResponse httpResponse) { if (httpRequest.isMethod(HttpMethod.GET)) { doGet(httpRequest, httpResponse); - return; } if (httpRequest.isMethod(HttpMethod.POST)) { doPost(httpRequest, httpResponse); - return; } throw new IllegalArgumentException("유효하지 않은 메소드입니다."); diff --git a/tomcat/src/main/java/org/apache/catalina/connector/Connector.java b/tomcat/src/main/java/org/apache/catalina/connector/Connector.java index 2cf5e9e874..d171bb84a8 100644 --- a/tomcat/src/main/java/org/apache/catalina/connector/Connector.java +++ b/tomcat/src/main/java/org/apache/catalina/connector/Connector.java @@ -4,8 +4,6 @@ import java.io.UncheckedIOException; import java.net.ServerSocket; import java.net.Socket; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; import org.apache.coyote.http11.Http11Processor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -16,19 +14,16 @@ public class Connector implements Runnable { private static final int DEFAULT_PORT = 8080; private static final int DEFAULT_ACCEPT_COUNT = 100; - private static final int DEFAULT_MAX_THREADS = 250; private final ServerSocket serverSocket; - private final ExecutorService executor; private boolean stopped; public Connector() { - this(DEFAULT_PORT, DEFAULT_ACCEPT_COUNT, DEFAULT_MAX_THREADS); + this(DEFAULT_PORT, DEFAULT_ACCEPT_COUNT); } - public Connector(final int port, final int acceptCount, final int maxThreads) { + public Connector(final int port, final int acceptCount) { this.serverSocket = createServerSocket(port, acceptCount); - this.executor = Executors.newFixedThreadPool(maxThreads); this.stopped = false; } @@ -43,8 +38,10 @@ private ServerSocket createServerSocket(final int port, final int acceptCount) { } public void start() { + var thread = new Thread(this); + thread.setDaemon(true); + thread.start(); stopped = false; - executor.execute(this); log.info("Web Application Server started {} port.", serverSocket.getLocalPort()); } @@ -69,7 +66,7 @@ private void process(final Socket connection) { return; } var processor = new Http11Processor(connection); - executor.execute(processor); + new Thread(processor).start(); } public void stop() { @@ -78,8 +75,6 @@ public void stop() { serverSocket.close(); } catch (IOException e) { log.error(e.getMessage(), e); - } finally { - executor.shutdown(); } } diff --git a/tomcat/src/main/java/org/apache/coyote/http11/Http11Processor.java b/tomcat/src/main/java/org/apache/coyote/http11/Http11Processor.java index 20e12ff933..e623c76679 100644 --- a/tomcat/src/main/java/org/apache/coyote/http11/Http11Processor.java +++ b/tomcat/src/main/java/org/apache/coyote/http11/Http11Processor.java @@ -55,6 +55,7 @@ private HttpResponse createResponse(HttpRequest httpRequest) { HttpResponse httpResponse = new HttpResponse(); try { handle(httpRequest, httpResponse); + return httpResponse; } catch (NotFoundException e) { httpResponse.location(httpRequest, NOT_FOUND_PATH); } catch (UnauthorizedException e) { diff --git a/tomcat/src/main/java/org/apache/coyote/http11/httpresponse/HttpResponse.java b/tomcat/src/main/java/org/apache/coyote/http11/httpresponse/HttpResponse.java index 8d4c448715..f57c27375f 100644 --- a/tomcat/src/main/java/org/apache/coyote/http11/httpresponse/HttpResponse.java +++ b/tomcat/src/main/java/org/apache/coyote/http11/httpresponse/HttpResponse.java @@ -122,8 +122,7 @@ public byte[] toResponse() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(httpStatusLine.createStatusLineResponse()) .append(RESPONSE_LINE_DELIMITER) - .append(httpResponseHeader.createHeadersResponse()) - .append(RESPONSE_LINE_DELIMITER); + .append(httpResponseHeader.createHeadersResponse()); if (httpResponseBody != null) { stringBuilder.append(RESPONSE_LINE_DELIMITER) .append(httpResponseBody.getBody()); diff --git a/tomcat/src/main/java/org/apache/coyote/http11/session/Session.java b/tomcat/src/main/java/org/apache/coyote/http11/session/Session.java index c92567d2ae..9054689244 100644 --- a/tomcat/src/main/java/org/apache/coyote/http11/session/Session.java +++ b/tomcat/src/main/java/org/apache/coyote/http11/session/Session.java @@ -1,8 +1,8 @@ package org.apache.coyote.http11.session; import com.techcourse.model.User; +import java.util.HashMap; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; public class Session { @@ -13,7 +13,7 @@ public class Session { public Session(String id) { this.id = id; - this.attributes = new ConcurrentHashMap<>(); + this.attributes = new HashMap<>(); } public boolean hasAttribute(String name) {