반응형
지난 포스팅에는
외장톰캣을 활용한 SpringMVC를 구현해보았다.
개발자가 작성한 코드가 WAR로 압축되고 톰캣WAS로 배포된 뒤, WAS서버가 실행되어야 했다. 서버의 실행주체는 외장톰캣이다.
발상을 바꾸어,
어차피 톰캣도 JAVA언어로 구현되어있는데 톰캣을 라이브러리로 만들고 개발자가 톰캣설정 및 실행을 하는 코드를 구현하여 main 메소드로 실행시키면 어떨까?
이것이 내장톰캣이다.
build.gradle
plugins {
id 'java'
}
group = 'hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
repositories {
mavenCentral()
}
dependencies {
//내장 톰캣 추가
implementation 'org.apache.tomcat.embed:tomcat-embed-core:10.1.5'
}
tasks.named('test') {
useJUnitPlatform()
}
톰캣을 외부에서 설치하는 것이 아닌 Gradle을 통해 라이브러리를 받는다.
내장톰캣 실행 Main 클래스
import hello.servlet.HelloServlet;
import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.startup.Tomcat;
public class EmbedTomcatServletMain {
public static void main(String[] args) throws LifecycleException {
System.out.println("EmbedTomcatServletMain.main");
// 톰캣 설정 톰캣 서버 설치 없이 코드로만 설정가능
Tomcat tomcat = new Tomcat();
Connector connector = new Connector();
connector.setPort(8080);
tomcat.setConnector(connector);
// 서블릿 등록
Context context = tomcat.addContext("", "/");
tomcat.addServlet("", "helloServlet", new HelloServlet());
context.addServletMappingDecoded("/hello-servlet","helloServlet");
// 톰캣 실행
tomcat.start();
}
}
HelloServlet.java
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
public class HelloServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("HelloServlet.service");
resp.getWriter().println("hello servlet!");
}
}
결과
이와같이, 따로 Tocat서버를 설치하거나 실행시키지 않아도 된다. Gradle로 라이브러리를 받고 JAVA코드로 설정을 하면 끝난다. 다음 포스팅에서는 내장톰캣을 활용하여 Spring Boot클래스를 만들어 보겠다.
참고자료
반응형
'SPRING > Spring Boot' 카테고리의 다른 글
[SpringBoot] 실행가능한 JAR (2) | 2023.04.27 |
---|---|
[SpringBoot] SpringBoot 웹환경 구성 원리 (0) | 2023.04.27 |
[SpringBoot] 내장톰캣에서 Spring Boot클래스 만들기 (0) | 2023.04.02 |
[SpringBoot] 외장톰캣에서 SpringMVC 구현하기 (0) | 2023.04.02 |
[SpringBoot] 외장톰캣으로 WAS 띄우기 with IntelliJ(무료버전) (0) | 2023.04.02 |