AWS EC2 + Spring Boot + Supabase(PostgreSQL) 조합으로 배포하면서 에러 해결 과정을 정리해보려 한다.프로젝트 환경Spring Boot (Gradle)JPA + HibernatePostgreSQL (Supabase Free Plan)배포: AWS EC2 (Amazon Linux)에러배포 후 /review API를 호출했을 때 계속 500 에러가 떴다.로그를 출력하여 이런 에러를 발견했다.Caused by: org.postgresql.util.PSQLException: Bad value for type long : 저는 ... 에러의 뜻은 DB에서 문자열을 읽어오는데 드라이버가 숫자(long) 로 변환하려다가 실패했다는 뜻이다.그런데 나는 content의 타입을 text로..
전체 글
·CLD4
TogetherPop지역 균형 발전을 위한 가치있는 팝업 티켓팅 플랫폼 특정 지역에서 열린 팝업 이벤트의 수익 일부를 해당 지역 균형 발전을 위한 후원으로 연계하도록 설계한다.팝업이 주로 서울에서 열리는 현실을 고려하여, 지방 지역에 수익을 환원함으로써 지역 간 균형 발전을 추구한다. 짧은 팝업 기간과 예측 가능한 사용량 특성을 고려해 비용 최적화된 서버리스 아키텍처를 적용하며, AWS 서버리스 인프라 기반의 안정적이고 확장 가능한 구조를 통해 고객에게 대기 시간 없는 빠른 티켓팅 경험을 제공한다.주요 기능 요약팝업 이벤트 예약 및 티켓팅후원금 자동 분배 및 지역별 기부 데이터 관리관리자용 대시보드 (팝업 승인, 결제 통계, 지역별 후원 관리)예약/결제 알림 (이메일/SNS)이벤트 트래픽 분석 및 이상 ..
index.jsp /WEB-INF/views/list.jsp 서버를 실행시키고 "localhost:8080/" 으로 접속시, 먼저 가장 첫번째 인 index.jsp를 불러온다. 하지만 index.jsp가 나오지 않고 자꾸 톰캣의 시작페이지만 나왔다... 난 두가지 방법 모두 사용하고 오류를 해결할 수 있었다.오류 해결 - @RequestMappingcontroller에 @RequestMapping에 경로를 "/"로 잡은 항목이 있으면 해당 항목이 가장 상위페이지("localhost:8080/")가 된다.따라서 해당 부분을 주석처리 해주었다. 오류 해결 - 8080 포트 shutdownlifecyclebase.handlesubclassexception 구성요소 [connector["ht..
오류 원인이 오류는 대부분 경로문제라고 한다. 나는 다음에 나오는 3가지 방법을 다 써서 오류를 고칠 수 있었다. 오류 해결 - context root대부분 tomcat의 context root의 경로가 틀렸기 때문에 에러가 났다고 한다.따라서 Application context를 /로 바꾸었는데도 에러는 고쳐지지 않았다. 오류 해결 - web, WEB-INF web 폴더에 직접적으로 존재하는 jsp 파일은 브라우저로 직접 접근이 가능하다.하지만 WEB-INF 하위의 jsp 파일은 브라우저에서 직접 접근이 불가능한 경로라는 것이다...!!! web과 WEB-INF 폴더의 차이를 알아보자. webWEB-INF장점web 하위에 있을 경우 바로 jsp 파일을 볼 수 있다. 유저의 직접 접근이 어려워 보안성이 ..
오류 원인, 해결mac 터미널로 EC2에 접속하려고 했으나.. 자꾸 오류가 떴다.오류는 .ssh 파일에 안 들어가지는 것!!!!cd: not a directory: ~/.ssh 구글링을 해보니 ssh 키가 생성이 안되었다면 파일이 없을 수 있다는 것이었다.그래서 파일을 생성해보려해도.. mkdir: ~/.ssh: File exists 파일이 이미 존재한다는 것..! 도대체 파일이 존재하는데 왜 안들어가지고 파일을 수정할 수도 없는 거지..?라고 생각하고,ssh 키를 생성하려고 하자 내가 만날 수 있는 모든 에러를 맞닥뜨리고 난 뒤...ssh 파일을 지워버리기로 결정했다. 다시 .ssh 파일을 생성하고 보니까 생성된 파일은 실행파일이 아니었던 것이다.. 지금까지 Unix 실행 파일 가지고 이리저리 해보..
JPA로 테이블과 엔티티를 매핑할 때, @Id와 @Column 어노테이션을 활용하여 테이블의 PK를 매핑시킬 수 있다. public class CustomerEntity { @Id @Column(name = "customer_id") private Long customer_id;} 하지만 식별자로 사용될 값을 일일히 수동으로 넣어줘야 하는 불편함이 있는데, 이는 @GeneratedValue로 해결할 수 있다. @GeneratedValue식별자 값을 자동 생성 시켜줄 수 있다. @GeneratedValue에는 4가지 옵션이 존재한다.@GenerationType. AUTOhibernate.dialect에 설정된 DB 방언 종류에 따라, 하이버네이트가 자동으로 전략을 선택하게끔 위임한다. 데이..
ANSI SQLSQL(Structured Query Language)란 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어이다. DBMS Vendor(벤더, 공급업체)란 MS-SQL, Oracle, MySQL, PostgreSQL 등 DBMS을 개발하고 판매하는 기업을 말한다. 각 DBMS Vendor에서는 자신만의 기능을 추가한 SQL이 있다. 그림에서 볼 수 있듯이, ANSI SQL이 모든 DBMS에서 공통으로 사용가능한 핵심 표준 SQL이다.ANSI : 미국 표준 협회 ANSI SQL 특징표준 SQL문이기 때문에 특정 DBMS의 종류에 제약을 받지 않는다.가독성이 일반 Query보다 좋다. 마치 대한민국의 서울에서 사용하는 표준어가 있고, 충청, 강원, 제주, 경상 등 여러 지방에..
영속성 컨텍스트 #1편 보러가기 오늘은 1편에 이어서 영속성 컨텍스트 2편을 포스팅해보려 한다. 영속성 컨텍스트 특징1차 캐시동일성(identity) 보장트랜잭션을 지원하는 쓰기 지연(transactional write-behind)변경 감지 (Dirty Checking)지연 로딩 (Lazy Loading) 영속성 컨텍스트는 식별자 값으로 엔티티를 구분한다.따라서 영속 상태는 식별자 값(@Id로 테이블의 기본키와 매핑한 값)이 반드시 있어야 한다! 영속성 컨텍스트에 엔티티를 저장하고 트랜잭션을 commit 하는 순간에 DB에 반영하는데, 이것을 플러시(flush)라고 한다. 엔티티 조회영속성 컨텍스트 내부에는 1차 캐시를 가지고 있다.영속 상태 엔티티는 모두 이곳에 저장된다.// 객체를 생성한 상태(..