legacy 환경은
spring 4.3.16 ver
packaging : war
로 되어있었다.
뭐 앞서 boot의 장점중 하나가 tomcat같은 내장 서버가 있고 또 다른 추가적인 설정이 필요없어서 굉장히 개발자 친화적이게 개발이 가능하다고 언급했었다.
즉, spring 프로젝트는 따로 java -jar {jar파일이름}.jar|{jar파일이름}.war
으로 간단하게 서버를 실행할 수 없다는 것이다.
하지만 spring으로는 그게 불가능 하여 웹 서버
또는 서블릿 컨테이너
(예: Apache Tomcat, Jetty 등)에 해당 .war 파일을 배포해야 한다.
사실 그냥 stable한 버전이라면 아무 버전이나 갖다 써도 되는 줄 알았다. 하지만 이는 큰 착각이었다. 약 2시간이 넘는 삽질에는 바로 톰캣 버전이 범인이었다.
톰캣 버전은 Spring Framework와 각각의 버전이 서로 호환되어야 제대로 작동한다.
Tomcat 10은 Servlet 5.0, JSP 3.0, EL 4.0, WebSocket 2.0 및 Authentication 2.0을 지원하며, 이는 Jakarta EE 9의 스펙을 따르고 있다.
반면에 Tomcat 9은 Servlet 4.0, JSP 2.3, EL 3.0, WebSocket 1.1 및 JASPIC 1.1을 지원하며, 이는 Java EE 8의 스펙을 따르고 있다.
즉, 당신의 Spring 프로젝트가 해당 라이브러리들의 버전에 맞지 않는다면 당연 지원을 하지 않기에 동작하지 않는다.
따라서, 당신의 Spring 프로젝트가 Java EE 8 스펙을 기반으로 하고 있다면 Tomcat 9를 사용해야 한다.
서버와 프레임워크의 버전을 맞추는 것은 중요한 작업 중 하나이다.
설치완료 후 실행하면 세션을 설정하고 들어가면 된다. 참고로 사용자, 암호, 포트는 db 설치했을 때 본인이 설정한 값을 넣으면 된다.
최초에 설치를 하고나면 위 사진에서 "sincheon" DB를 제외하고 나머지 4개가 있을 텐데 DB는 본인이 사용하고 싶은 대로 생성 후 SQL 파일 실행 버튼으로 .sql
파일을 찾아서 실행해주면 위 사진처럼 데이터가 들어간다.
DB까지 설치했다면 해당 config 정보를 spring 플젝의 config.properties
파일에 잘 작성하고
mvn clean package
명령어를 통해서 .war 파일을 생성하면 된다.
그리고 앞서 선택한 톰캣 버전을 열고 원하는 폴더에 위치하고 webapps에 들어가면 이렇게 5개의 폴더가 위치할 텐데 여기서 ROOT 폴더가 현재 127.0.0.1:8080
로 들어가면 나오는 톰캣 광고 html이다.
그래서 이 ROOT를 날려주고 위에서 설정한 .war 파일을 여기에 복붙하고 이름을 ROOT.war
로 바꿔준다.
그리고 bin 폴더에서 startup.sh를 누르면 알아서 ROOT.war 폴더를 압축해제하여 실행한다.
그리고 127.0.0.1:8080 으로 들어가면 비로소 legacy spring project를 만날 수 있다.
마지막으로 압축이 풀린 ROOT 폴더에 \WEB-INF\classes\config.properties
파일에 설정이 잘 되어있는지 까지 확인하면 된다.
spring boot가 등장하면서 spring에서 위에처럼 WAS설치하고(여기서는 tomcat) war를 만들고 WAS에 배포하고 또 그전에 설정을 잡아줘야하는데 되게 복잡하고 귀찮은데 이를 한큐에 해결해버렸다.
spring boot를 build하면 jar 파일이 나오는데 이 jar파일안에 서버를 넣어서 build 해버린다. 그래서 그냥 이 jar 파일을 서버pc에 가져가서 java --jar 하면 서버가 뜨는게 그 이유이다.
이는 node version 에러다. 따라서 nvm을 통해서 front-end 와 back-end 의 버전을 맞춰주는 작업을 우선 해야한다.
하단 사진에서 혹은 setting dptj Edit Configurations 들어가서
Tomcat Server Local 에 들어간다. 이때 아마 대부분 무료로 쓸꺼니까 TomEE 를 선택하지 않도록 하자.
참고로 위의 TomEE 는 잘 못 설정 한 사진이다.
설치한 톰켓의 bin 바로 위 폴더까지 잡아주고
Deployment 로 넘어와서 +
를 눌러
아티팩트와 하단 Application context 를 본인의 프로젝트 기본 경로에 맞춰 넣어주면 된다.
나같은 경우는 기본 경로가 없기에 /
로 설정해두었다.