# 개요

내장 톰캣만 쓰다가 외장 톰캣 설치해서 연동해보았는데 생각보다 삽질을 많이했다.

삽질한 과정 정리

 


 

# 톰캣 설치

 !! 중요: 설치할 때 버전 확인을 잘 해야한다. 버전에 따라 Servlet, JSTL, EL, JDK 버전이 다르기 때문에 내가 어떤 버전의 톰캣을 사용할 지 알고있어야 한다. ("Which version?"에 나와있다.)

나는 Tomcat 9를 사용했다.

  • Tomcat 10 부터는 Java EE가 아닌 Jakarta EE 패키지를 사용하기 때문에 이식성이 높지 않다고 생각했다.
  • 물론 Migration Tool이 있다고는 하지만 Migration Tool 관련 문서를 참고할 시간에 그냥 Tomcat 9 쓰는게 낫다고 판단했다.

설치 과정은 그냥 zip 파일 다운 받아서 압축 해제 하면 된다.

 


 

# intelliJ 프로젝트 생성

intelliJ 버전: 2020.03.1

## File → new → project → Java Enterprise

  • Project template는 Web application, REST service, Library가 있는데 Web application을 선택, 다른 template은 사용해보지 않았다.
  • Application Server는 설치한 Tomcat의 경로로 설정해주면 된다.
  • Build tool은 더 익숙하기도 하고 편하기도 한 Gradle 선택

 

## Java EE (Jakarta EE), Libraries and Framework

Tomcat 9를 사용하기 때문에 Jakarta EE가 아닌 Java EE를 선택했고, 간단하게 톰캣 연동과 마이바티스만 추가할 것 이기 때문에 별도의 라이브러리나 프레임워크는 선택하지 않았다. (Servlet은 기본 선택인듯 하다)

이후 Name, Group, Location 등 설정 후 Finish

 


 

# Tomcat 설정

프로젝트 빌드가 성공적으로 된다면 build.gradle, Servlet, jsp 파일이 생성되어 있을 것이다.

나는 이전에 톰캣 Configuration을 추가해서 저렇게 있지만 없다면 직접 추가하면 된다.

Edit configurations 선택

 

## 톰캣 Run/Debug Configuration 추가, 설정

Tomcat Server → Local 선택

처음 선택하면 아래쪽에 "Warning: No artifacts marked for deplyment"가 있다. artifact를 추가해주기 위해 Deployment 탭으로 이동한다.

Artifact 선택

war 와 war (exploded)가 있다.

war (Archive)

  • 아카이브(.war, .ear) 파일로 배포
  • WAS(Tomcat)에 의해 압축이 풀린다.
  • 파일이 많은 경우 압축을 푸는 시간이 오래 걸릴 수 있다.
  • 원격 서버에 배포시 하나의 파일만 전송하면 된다.
  • WAS에서 제공하는 업로드를 통한 배포가 가능하다.

exploded (Expended)

  • 아카이브를 압축 해제한 형태의 디렉토리로 배포
  • 별도의 디렉토리에 원본 소스를 복사하여 만든다. 
  • 압축 및 해제 과정이 불필요하다.
  • 원본 소스를 건드리지 않고 배포하는 경우에 적합하다.

나는 exploded를 선택했다.

Application context가 길게 쓰여있는데 그대로 사용해도 되지만 나는 / (root)로 변경 후 설정 완료했다.

 


 

# 서버 실행

이제 서버를 실행 해보자

실행해보면 로그가 쭉 뜨다가 완료되었다고 뜬다.

근데 이상하다. 보통 다른 블로그 참조했을 때는 실행이 완료되었다고 뜨면서 자동으로 브라우저가 실행되던데.. 브라우저가 실행되지도 않고 밑의 창을 자세히 보면 주황색 X 아이콘이 보이고 로그도 not found for the web module이라고 뜬다. 뭔가 잘못 된 것 같다.

localhost:8080으로 접속해봐도 index.jsp가 나오지 않고 404페이지가 나온다.

 


 

# Artifact를 다시 한 번 보자

연필모양 눌러보면 artifacts settings 창이 나온다

저 경로를 자세히 보면 project/build/libs/exploded/project~~~.war로 되어있다. 

근데 실제 경로를 확인해보면 libs디렉토리 내에 exploded라는 디렉토리는 없고 바로 project~~~.war만 있다. 그러므로 libs뒤에 있는 exploded를 지워준다.

 


 

# 수정 후 서버 다시 실행

not found the web module이라는 로그도 안보이고, 브라우저도 자동으로 실행된다.

 


 

# Artifact를 exploded로 선택한 이유

exploded가 아니라 war를 선택한다면 위 설정(경로에 exploded 빼는 것)할 필요없이 잘 된다. 근데 exploded를 선택한 이유는

바로 요놈 때문이다. 

자바 코드가 변경되면 (클래스, 패키지,  라이브러리 등) 서버를 재시작 해야한다.

이것은 내장톰캣 쓸때도 마찬가지였기 때문에 상관 없는데

문제는 resource(html, jsp, css 등)도 바로 적용이 안된다는 것이다. 내장 톰캣 쓸 때는 바로 적용이 되었는데.. 외장 톰캣을 쓰니 바로 적용이 안되어서 매우 불편했다.

찾아보니 exploded로 deployment 설정을 해야 저 on update → update classes and resources가 생긴다고 하더라.

그래서 exploded를 사용했다.

 


 

# 후기(?)

그냥 내장 톰캣 쓰는게 나을 것 같다 ㅋㅋ;; 어짜피 스프링부트도 내장 톰캣 사용하는데.. 스프링은 아닌가?

 


 

# Reference

 

IntelliJ + Apache tomcat 연동 및 설정

IntelliJ(인텔리제이) 다운로드 링크https://www.jetbrains.com/ko-kr/idea/download/?section=windowsApache tomcat(아파치 톰캣) 다운로드 링크 zip 파일로 다운https://tomcat.

velog.io

 

 

금주의 실패사례 - IntelliJ 버전 업 후 Tomcat에서 exploded artifact 실종 « Personal Tech Note

IntelliJ에서 exploded된 artifact를 못찾는 문제 무슨 바람이 불었을까? 한참 잘 쓰던 IntelliJ를 2020.1.1로 업그레이드 했다. 이것 저것 좀 더 좋아지려나 했더니, 왠걸.. 잘되던 Tomcat 실행만 안된다. 잘 되

mystria.github.io

 

[Intellij] 웹 어플리케이션 배포 위한 패키지 유형과 war, war(exploaed) 차이

tomcat 으로 war 파일을 배포할 때 궁금증이 생겼다. war와 war(exploaed)의 차이가 무엇일까? 빌드(Build) : 소스코드 파일을 실행 가능한 소프트웨어 산출물로 만드는 일련의 과정을 말한다. Maven에서 Arti

velog.io

'Java > Tomcat' 카테고리의 다른 글

[Tomcat] JSTL 라이브러리 추가 (부제: Tomcat 9 vs 10)  (0) 2024.04.04

개요

코드 스타일 통일을 위해 IntelliJ에 Linter와 Formatter를 적용해보았다

옛날에 파이썬 쓸 때, black, flake8같은 도구들이 매우 좋았는데 자바에는 없나 싶어서 찾아보니 있었다!

 


CheckStyle 설치

IntelliJ에서 설정 → Plugins → Marketplace에 CheckStyle 플러그인 설치

나는 이미 설치되어있어서 Installed에 있지만 Marketplace에서 설치해야한다.

 

 


Linter(CheckStyle), Formatter(Code Style) 적용

네이버 캠퍼스 핵데이 Java 코딩 컨벤션

1. Formatter (Code Style)

naver-intellij-formatter.xml 설치

설정 → Editor → Code Style → Java에서 설치한 naver-intellij-formatter.xml import

적용

 

2. Linter (CheckStyle)

naver-checkystyle-rules.xml, naver-checkstyle-suppressions.xml 설치

설정 → Tools → Checkstyle에서 설치한 naver-checkstyle-rules.xml import

next → 설치한 naver-checkstyle-suppressions.xml 등록

주의점!! CheckStyle 버전을 8.24로 해야한다고 한다.

 


Google Java Style

1. Formatter (Code Style)

intellij-java-google-style.xml 설치

설정 → Editor → Code Style → Java에서 설치한 intellij-java-google-style.xml import

  •  

적용

2. Linter (CheckStyle)

google_checks.xml 설치

설정 → Tools → Checkstyle에서 설치한 google_checks.xml import

별도의 Property 작성이나 버전 변경 없이 그대로 사용

참고사항!! Missing JavaDoc Warning은 표시하고 싶지 않을 때

설치한 google_checks.xml에서 이 부분에 위처럼 작성

 


Reference

https://velog.io/@geun/Intellij-Formatter-Checkstyle-세팅하기

 

[Intellij] Formatter, Checkstyle 세팅하기!

Formatter, Linter를 적용해서 클린 코드를 작성해봅시다..!

velog.io

https://naver.github.io/hackday-conventions-java/#class-noun

 

캠퍼스 핵데이 Java 코딩 컨벤션

중괄호({,}) 는 클래스, 메서드, 제어문의 블럭을 구분한다. 5.1. K&R 스타일로 중괄호 선언 클래스 선언, 메서드 선언, 조건/반복문 등의 코드 블럭을 감싸는 중괄호에 적용되는 규칙이다. 중괄호

naver.github.io

https://stackoverflow.com/questions/23868476/how-to-fully-disable-javadoc-checking-with-checkstyle-maven-plugin

 

How to fully disable javadoc checking with checkstyle maven plugin

i want to use the Maven Checkstyle plugin with a custom configuration that tells Checkstyle to not warn or error on missing Javadoc. Is there a way to do this?

stackoverflow.com

 

# 개요

JUnit에 Display()에 작성한 한글들이 깨진다.

해결법 간단하게 정리하고 다음에 또 찾아보지 않게 블로그에 포스팅


# 상황

테스트 실행하는데 한글이 깨져서 나온다..


# 해결

VM Custom Option에서 

-Dfile.encoding=UTF-8을 작성한다.

Help → Edit Custom VM Options

 

주의할 점

작성했는데도 안된다면 해당 테스트로 가서 한 글자만 지우고 실행해보면 됨;

깨진 테스트 가서 한 글자만 지우고 테스트 실행하면 잘 된다.. 뭐임;;

# 개요

IntelliJ에서 No Matching in any candidates test task 뜨면서 테스트가 안 되는 상황이 발생하면서

간단하게 정리하고 다음에 또 찾아보지 않게 기록함


# 상황

다른 로컬에서 작업하다가 노트북에서 이어서 작업해야해서 Github에 올려놓고 노트북에서 pull 이후에 테스트를 실행했는데 이런 에러가 뜨면서 테스트 실행이 안된다.


# 해결

정확히는 모르겠지만 Gradle 프로젝트라서 발생한 오류같다. 찾아보니 Settings → Build, Execution, Deployment → Build Tools → Gradle에서 Run tests using을 Gradle에서 IntelliJ로 바꿔주면 된다고 한다.

Gradle로 되어있는 부분을 IntelliJ로 변경

주의할점

변경했다고 바로 Alt + Shift + X 눌러서 최근 실행 다시 실행 하지 말고 Ctrl + F10으로 실행해야한다.

근데 한글은 왜깨져;;

 

IntelliJ와 git bash 연동하기

Window에서 IntelliJ를 처음 설치하면 기본 터미널은 윈도우 cmd이다.

윈도우 기본 cmd 특) ls 안됨 ㅂㄷㅂㄷ

기본 cmd에서도 git 명령어가 안 되는 것은 아니지만 그래도 git bash가 더 가시성도 좋고 현재 branch도 표시를 해주니까 git bash로 변경해보자.

 

Ctrl + Alt + S → Tools → Terminal

Ctrl + Alt + S키는 Settings인데 (File → Settings도 가능) 여기서 Tools → Terminal 탭을 보면 Shell path가 cmd.exe이다. 이것을 git bash로 바꿔주면 끝!

 

 

 

 

"git bash path" -login -i

본인의 sh.exe파일은 git/bin 디렉토리에 있다. 본인 로컬의 git 경로를 찾아서 넣어주고, 경로에 쌍 따옴표(" ")를 붙여주고 -login, -i를 붙여주면 된다.

"C:\Program Files\Git\bin\sh.exe" -login -i

 

 

 

 

설정 후 터미널 창을 열면 git bash가 잘 나온다

참 쉽죠?

'Etc' 카테고리의 다른 글

인증/인가 - Session vs Token  (0) 2024.07.05
내가 배운 팀 프로젝트 협업 1 - 코딩 컨벤션  (0) 2021.10.17

+ Recent posts