Java

embed tomcat 설정하기

Declan Andrew 2020. 1. 29. 15:26
반응형

인텔리제이(Intellij)에서 내장톰캣을 사용하려면 얼티밋버전이어야한다는데,

사실 얼티밋버전이 아니더라도 내장톰캣을 사용할 수 있다! (조금 귀찮기는 하지만)

 

난 참고로 얼티밋 버전이지만 어떻게 될 지 몰라서 일단 설정법을 올려놓는다.

 

의존성 설정 (pom.xml)

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <tomcat.version>8.5.23</tomcat.version>
    </properties>
    
    
    <dependencies>
        <!--- 톰캣 컨테이너 의존성 --->
    	<dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-catalina</artifactId>
            <version>${tomcat.version}</version>
        </dependency>
        
		<!-- 아래는 톰캣에 컨테이너 대한 의존성들 -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-core</artifactId>
            <version>${tomcat.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <version>${tomcat.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jasper</artifactId>
            <version>${tomcat.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jasper-el</artifactId>
            <version>${tomcat.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jsp-api</artifactId>
            <version>${tomcat.version}</version>
        </dependency>
    </dependencies>

 

 

의존성을 설정하고나면, 실제 컨테이너를 동작시켜야한다.

 

실제 톰캣 가동 소스(Main.class)

// 톰캣서버가동
public class Main {
    public static void main(String[] args) throws LifecycleException, ServletException {
        String webappDirLocation = "src/main/webapp";
        Tomcat tomcat = new Tomcat();

        String webPort = System.getenv("PORT");

        if(webPort == null || webPort.isEmpty())
        {
            webPort = "8000";
        }

        tomcat.setPort(Integer.parseInt(webPort));

        StandardContext ctx = (StandardContext) tomcat.addWebapp("/",
                new File(webappDirLocation).getAbsolutePath());
        System.out.println(new File("./" + webappDirLocation).getAbsolutePath());

        File additionWebInfClass = new File("target/classes");

        WebResourceRoot resources = new StandardRoot(ctx);
        resources.addPreResources(new DirResourceSet(resources, "/WEB-INF/classes",
                additionWebInfClass.getAbsolutePath(), "/"));

        ctx.setResources(resources);

        tomcat.start();
        tomcat.getServer().await();

    }
}

 

 

톰캣을 굳이 내장시켜서 쓰는 이유는

인텔리제이의 디버깅을 쓰기 위함이다!!

반응형