404 Not Found
계속 jsp 파일을 찾지 못하는 에러 메시지가 뜬다..
jar 파일을 만들어 docker로 배포했었는데
war 파일로 변경한 후 이를 해결할 수 있었다.
jar & war
-
jar(Java Archive)
.jar 확장자 파일에는 Class와 같은 Java 리소스와 속성 파일,
라이브러리 및 액세서리 파일이 포함되어 있다.
쉽게 Java 어플리케이션이 동작할 수 있도록
자바 프로젝트를 압축한 파일이라고 할 수 있다.
path등의 경로를 유지하기 때문에 jar파일을 사용하는 사용자들은
각 파일들에 대한 path문제에서 벗어날 수 있다.
ex) ojdbc14.14, servlet-api, jar 등 -
war(Web Application Archive)
.war 확장자 파일은 servlet/jsp 컨테이너에 배치할 수 있는
웹 어플리케이션 압축 파일 포맷이다.
JSP, Servlet, jar, class, xml, html 등
Servlet Context 관련 파일들로 패키징되어 있다.
(jar과 같은 맥락으로 servlet context 접근을 위해 관련된 모든 파일들을 패키지화)
웹 어플리케이션에 관련된 파일들을 포함한다.
ex) jsp, servlet 파일 등
war는 jar와 달리 WEB-INF 및 META-INF 디렉토리로 사전 정의 된 구조를 사용하고,
war를 실행하려면 Tomcat, Weblogic, Websphere 등
웹 서버 또는 웹 컨테이너가 필요하다.
결론 : war로 바꾸자 !
jar를 생성했을 때 jar에 jsp 파일이 포함되지 않아서
계속 404 not found 에러가 발생했었다.
war를 생성하니까 jsp와 css가 포함되어
배포했을 때 정상적으로 파일을 찾았다.
war 생성을 위해 아래 파일들을 변경해줘야 한다.
- change package
위 처럼 jsp와 css의 경로를 다시 설정해줬다.
- application.yml
spring:
profiles:
active: local
session:
store-type: redis
mvc:
view:
prefix: /jsp/
suffix: .jsp
spring.mvc.view.prefix 설정 변경
- Dockerfile
FROM openjdk:8-jdk-alpine
ADD litebook-0.0.1-SNAPSHOT.war litebook.war
EXPOSE 8080
ENTRYPOINT ["java","-jar","litebook.war"]
- pom.xml