[Spring] 전역 예외, Global Exception 생성
·
Server/Spring&Spring Boot
스프링부트의 예외처리 방식 웹 서비스 애플리케이션에서는 외부에서 들어오는 요청에 담긴 데이터를 처리하는 경우가 많습니다. 그 과정에서 예외가 발생하면 예외를 복구해서 정상으로 처리하기보다는 요청을 보낸 클라이언트에 어떤 문제가 발생했는지 상황을 전달히는 경우가 많습니다. - 스프링 부트 핵심 가이드 中- ExceptionManager 클래스 생성 @RestControllerAdvice public class ExceptionManager { @ExceptionHandler(SNSAppException.class) public ResponseEntity SNSAppExceptionHandler(SNSAppException e) { Map result = new HashMap(); result.put("er..
[Spring] Custom Response 생성
·
Server/Spring&Spring Boot
REST API를 호출하기 위해 API의 반환을 ResponseEntity를 사용하는 경우가 많습니다. 원하는 기능들을 생성하여 ResponseEntity를 대체하는 Custom Response를 제작하겠습니다. 회원가입 예제 기존의 ResponseEntity public ResponseEntity join2(@RequestBody UserJoinRequest dto){ UserDto user = userService.join(dto); return ResponseEntity.ok().body(new UserJoinResponse(user.getId(), user.getUserName())); } 커스텀 된 Response 사용 public Response join(@RequestBody UserJoin..
[CI/CD] 배포 스크립트 작성, 크론탭을 활용해서 자동 배포
·
Server/Infra
깃을 푸시하고, 도커에서 풀하고 실행시키는 과정을 계속해서 반복하기란 너무 번거로운 작업입니다. 해당 작업을 자동화시키기 위해 배포 스크립트 작성 및 크론탭을 이용해보도록 하겠습니다. 배포 스크립트 작성 Xshell에서 배포 스크립트를 만들어 보겠습니다. 먼저 pwd명령어를 사용해서 현재 위치를 알아봅니다. vim deploy.sh를 입력하면 vim 입력창으로 들어가게 되는데, i를 눌러 Insert 모드로 변환한 후 아래의 스크립트를 입력합니다. #!/bin/bash set -ex docker pull registry.gitlab.com//:latest | grep "Image is up to date" && pull_status="already_pulled" || pull_status="newly_p..
[CI/CD] GitLab CI/CD 후 Docker에서 띄우기
·
Server/Infra
GItLab Pipeline 등록 [CI/CD] GitLab CI/CD (자바, gradle) Dockerfile 해당 프로젝트에 도커 파일이 존재해야 합니다. FROM gradle:7.4-jdk11-alpine as builder WORKDIR /build # 그래들 파일이 변경되었을 때만 새롭게 의존패키지 다운로드 받게함. COPY build.gradle settings.grad chordplaylist.tistory.com Container Registry 복사 지난 글에서 Pipeline을 만들게 되면 Container Registry에 위와 같이 생성됩니다. 복사 버튼을 눌러 경로를 복사한 후 Xshell로 들어가서 Docker를 사용하여 해당 서버를 띄워보도록 하겠습니다. Xshell dock..
[AWS] EC2 접속하기
·
Server/Infra
이전글 (EC2 만들기) [AWS] AWS EC2 Free tier 생성 Free tier? AWS에서는 프리 티어라는 무료 체험 서비스를 제공하고 있습니다. 가입한 지 1년 이내면 제공되는 시간, 메모리 안에서 무료로 AWS에서 제공하는 서비스들을 사용할 수 있는 서비스입니다 chordplaylist.tistory.com AWS 인스턴스 확인 이전 글에서 올린 인스턴스를 확인합니다. Xshell 여러 툴이 있지만 저는 익숙한 Xshell을 사용하도록 하겠습니다. Xshell 설치 무료 라이선스 - NetSarang Website 무료 라이선스 무료 사용자의 최고의 선택 ㈜넷사랑컴퓨터는 강력한 SSH와 SFTP/FTP 클라이언트 프로그램을 지난 10년간 무료로 배포해온 것에 대해 자부심을 느낍니다. 저희..
[AWS] AWS EC2 Free tier 생성
·
Server/Infra
Free tier? AWS에서는 프리 티어라는 무료 체험 서비스를 제공하고 있습니다. 가입한 지 1년 이내면 제공되는 시간, 메모리 안에서 무료로 AWS에서 제공하는 서비스들을 사용할 수 있는 서비스입니다. Free tier 확인 Billing Management Console에 들어가시면 위와 같이 어느 서비스를 얼만큼 사용하였고, 어느정도 더 사용할 수 있는지 확인할 수 있습니다. 본인의 경우에는 5 GB-Mo정도 사용하고 있었나보네요. 아직 충분히 남았으니 EC2를 생성해보겠습니다. (Amazon Elastic Compute Cloud = AECC = EC2) EC2 만들기 인스턴스 시작 이름 지정 애플리케이션 및 OS 이미지 지정 저는 우분투를 사용할 예정이기 때문에, 우분투를 선택하였고 AMI의..
[CI/CD] GitLab CI/CD (자바, gradle)
·
Server/Infra
Dockerfile 해당 프로젝트에 도커 파일이 존재해야 합니다. FROM gradle:7.4-jdk11-alpine as builder WORKDIR /build # 그래들 파일이 변경되었을 때만 새롭게 의존패키지 다운로드 받게함. COPY build.gradle settings.gradle /build/ RUN gradle build -x test --parallel --continue > /dev/null 2>&1 || true # 빌더 이미지에서 애플리케이션 빌드 COPY . /build RUN gradle build -x test --parallel # APP FROM openjdk:11.0-slim WORKDIR /app # 빌더 이미지에서 jar 파일만 복사 COPY --from=builde..
[ERROR] JPA, JWT Error. java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException, java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
·
Server/Error
JPA를 사용할 때 발생하는 에러 java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException JWT를 사용할 때 발생하는 에러 java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter 두 가지의 해결 방법은 동일합니다. javax.xml.bind를 추가하면 됩니다. 해당 에러는 Java의 JDK 버전이 9로 올라가면서 모듈이 제거되고, Java 11 버전에 이르러서는 JAXV API가 JDK에서 완전히 제거되어 발생하는 에러입니다. gradle 추가 implementation 'javax.xml.bind:jaxb-api:2.3.1' maven 추가 javax.xml.bind jaxb-api 2..
코드플리
'Server' 카테고리의 글 목록 (13 Page)