From 9e802f05ec07b149811de4d2dfd194c27017f9c7 Mon Sep 17 00:00:00 2001 From: haerong22 Date: Mon, 6 Mar 2023 02:11:35 +0900 Subject: [PATCH] #35 springboot: embeded tomcat - start(spring) --- .../hello/embed/EmbedTomcatSpringMain.java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 springboot/embed/src/main/java/hello/embed/EmbedTomcatSpringMain.java diff --git a/springboot/embed/src/main/java/hello/embed/EmbedTomcatSpringMain.java b/springboot/embed/src/main/java/hello/embed/EmbedTomcatSpringMain.java new file mode 100644 index 00000000..a7b672c7 --- /dev/null +++ b/springboot/embed/src/main/java/hello/embed/EmbedTomcatSpringMain.java @@ -0,0 +1,49 @@ +package hello.embed; + +import hello.spring.HelloConfig; +import org.apache.catalina.Context; +import org.apache.catalina.LifecycleException; +import org.apache.catalina.connector.Connector; +import org.apache.catalina.startup.Tomcat; +import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import org.springframework.web.servlet.DispatcherServlet; + +import java.io.File; + +public class EmbedTomcatSpringMain { + + public static void main(String[] args) throws LifecycleException { + System.out.println("EmbedTomcatSpringMain.main"); + + // 톰캣 설정 + Tomcat tomcat = new Tomcat(); + Connector connector = new Connector(); + connector.setPort(8080); + tomcat.setConnector(connector); + + // 스프링 컨테이너 생성 + AnnotationConfigWebApplicationContext appContext = new AnnotationConfigWebApplicationContext(); + appContext.register(HelloConfig.class); + + // 스프링 MVC 디스패처 서블릿 생성, 스프링 컨테이너 연결 + DispatcherServlet dispatcher = new DispatcherServlet(appContext); + + // 디스패처 서블릿 등록 + Context context = tomcat.addContext("", "/"); + + File docBaseFile = new File(context.getDocBase()); + + if (!docBaseFile.isAbsolute()) { + + docBaseFile = new File(((org.apache.catalina.Host) context.getParent()).getAppBaseFile(), docBaseFile.getPath()); + + } + + docBaseFile.mkdirs(); + + tomcat.addServlet("", "dispatcher", dispatcher); + context.addServletMappingDecoded("/", "dispatcher"); + tomcat.start(); + + } +}