inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Jenkins를 이용한 CI/CD Pipeline 구축

tomcat 배포 문제 war? jar?

해결된 질문

466

charo

작성한 질문수 3

1

안녕하세여 강의듣다가 현재 진행중인 프로젝트를 tomcat에 올려볼까 시도하고 있는데 잘안되서 여쭤봅니다. gradle 프로젝트이고 .jar -> .war으로 변환해서 올리고있는데 404에러가뜹니다.

 

maven 프로젝트로만 사용해야되는 건가요 ?

ansible jenkins kubernetes ci/cd sonarqube

답변 1

0

Dowon Lee

안녕하세요, 이도원입니다.

Spring Boot 애플리케이션을 외부 Tomcat으로 기동하기시 위해서는 소스를 조금 수정하셔야 합니다.

  1. Application 파일을 아래와 같이 수정합니다.

@SpringBootApplication
public class MyRestfulServiceApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(MyRestfulServiceApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(MyRestfulServiceApplication.class);
    }

}
  1. pom.xml 파일에 Dependency를 확인합니다. (아래 내용이 없으면 추가합니다)

...
<packaging>war</packaging>
...
<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
  </dependency>
</dependencies>

Maven에 대한 예시를 드렸는데, Gradle 도 유사하게 작업하시면 됩니다.

apply plugin: 'war' 
...
dependencies { 
  ... // war 패지키 파일 생성시 톰캣 라이브러리를 포함하지 않도록 추가 해야 합니다. 
  providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' 
}
  1. 패키징 된 war 파일을 Tomcat 폴더에 복사합니다.


    <TOMCAT_HOME>/webapps 폴더에 war 파일을 복사하고, 톰캣을 기동하면, war 파일의 이름으로 폴더가 생성되는데, API 호출 시, http://localhost:8080/<패키징된파일의폴더명>/<api> 이렇게 호출하시면 됩니다. 예를들어, embedded tomcat에서 http://localhost:8080/hello-world로 호출하셨다면, my-restful-service.war 파일의 경우 외장 톰캣에서는 http://localhost:8080/my-restful-service/hello-world 이런식으로 호출하시면 됩니다.

만약 위와 같은 방법으로 했을 때에도, 404 오류가 발생한다면, 작업하신 JDK 버전과 Tomcat의 버전이 서로 호환되는지 확인해 보셔야 할 것 같습니다. 만약 Java17 + Spring Boot 3 버전으로 테스트 중이라면, Tomcat9 버전이 아닌 Tomcat 10나 Tomcat 11 버전으로 테스트해 보시기 바랍니다.

감사합니다.

0

charo

감사합니다. Tomcat 버전 10으로 바꾸니 잘 작동하네요! 감사합니다

git 에 강의내용에 필요한 파일들 존재하지 않음

0

84

2

젠킨스에 등록된..

0

98

2

필요한 파일만 가지고 배포할 수 있나요?

0

91

2

yml 파일 db 접속정보 수정 후 배포 시 미반영

0

108

2

jdk 버전 17

0

81

2

섹션2 강의자료

0

103

2

DOCKER 이미지 PULL

0

266

1

36강 edowon0623/cicd-project-ansible이 호환이 안되는것 같아요

0

63

1

질문이 있습니다!!

0

68

1

exec /usr/local/tomcat/bin/catalina.sh: invalid argument 오류 해별법(공유)

1

203

4

m2 mac: ansible-server에서 container 실행 안됨

0

159

2

Jenkins와 k8s 연동과 관련한 질문입니다.

0

97

2

Ansible 과 연동에서 이미지 및 컨테이너 생성과 관련한 질문 드립니다.

0

176

2

맥북 실리콘칩 invalid argument 에러 해결 (수동 설치)

0

255

3

Docker Container에서 Tomcat 설치

0

221

2

ec2 여러대에서 각각 직접 설치 이유

0

154

1

P@ssw0rd 설정시기

0

147

2

ansible 원리

0

135

2

ansible 존재여부

0

116

2

젠킨스 빌드 성공후 shutdown

0

249

2

Docker Hub에 Push 무한 로딩

0

120

2

컨테이너에 ssh로 접속 비밀번호 불일치

0

117

1

maven project 오류

0

118

2

엔서블을 이용하여 톰캣 이미지 배포 후, 되돌리는 방법

0

150

2