문제yum으로 설치가능한 OpenJDK는 11까지만 지원이 되기 때문에 17버전을 설치 할 수 없음 해결17버전이 필요하다면 아래와 같이 수동으로 설치할 수 있다. 1. 외부에서 소스를 받기 위한 패키지를 설치 (설치되어 있다면 생략)sudo yum -y install wget curl 2. 외부 링크에서 압축파일을 다운로드 후 해당 파일의 압축을 해제한다. https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_linux-x64_bin.tar.gzwget https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138e..
💻dev/🔧오류와 해결
바야흐로 7월 말.. 백엔드 리팩토링과 테스트 코드를 작성하고 있던 나에게 성큼 다가온 이슈... 브라우저에서 쿠키가 저장되지 않음 . . . 프론트엔드와 개발을 구분해서 하고있기 때문에 API 구현 후 postman과 swagger로 테스트를 마친 이후였다. 그래서 상상도 못했던 이슈였고... 프론트 팀원과 둘다 처음 겪는 문제여서 열심히 구글링을 해서 원인을 알게 되었다. 원인 백엔드 서버 = http, 프론트 서버 = http Chrome80 버전 이후 Cross Domain 상황에서의 Set-Cookie 정책이 변경됨 SameSite=None 을 통해서 제약없이 쿠키 교환이 가능하나 해당 옵션을 사용하기 위해서는 Secure Cookie + https 통신을 통해서만 교환이 가능 해결 1. HTT..
문제 발생 Spring Security로 로그인 기능 구현 당시 SecurityConfig 클래스를 WebSecurityConfigurerAdapter를 통해 Override하려고 했다. 그러나... 더 이상 사용되지 않는다고 한다... 어디로 가야하죠 아저씨... Deprecated 된 클래스가 처음인가요... 해결 공식 문서에 답이 있다! https://docs.spring.io/spring-security/site/docs/5.7.0-M2/api/org/springframework/security/config/annotation/web/configuration/WebSecurityConfigurerAdapter.html WebSecurityConfigurerAdapter (spring-securit..
문제 발생 프로젝트 도중 특정 API를 호출시 500에러가 뜬다고 프론트 측에서 요청을 받음 처음에는 샘플 데이터가 아예 없어서 생기는 오류인 줄 알고 샘플 데이터를 넣었으나 여전히 500에러... 대체 뭔데.. 하고 로컬에서 돌려보니 생각도 못한 오류가 발생했다 바로... Ambiguous handler methods mapped for HTTP path 오류! 원인 처음 보는 오류인데 아주 간단 명료한 원인이 있었다. 말 그대로 HTTP 경로에 대해 '모호한' 핸들러 메서드가 매핑되었다는 것이다. 좀 더 쉽게 말하자면 API의 경로가 동일한 메서드가 여러개 있다는 뜻이다. 해결 @GetMapping("/{id}") public getReviews1(@PathVariable Long id){} @Get..
어느날 갑자기 IP가 바뀌었다. 왜? 서버 무료 사용량이 끝나서 기존 서버를 내리고 내가 새 서버를 구축하게 되었다. AWS EC2 인스턴스를 생성하고 필요한 설정을 마치고 배포까지 완료되었다. 오늘은 다른 기능을 개발 후 PR을 올렸는데 빌드테스트에서 뜻밖의 오류가 잡혔다. Redis connection 실패 오류였고, 그럴리가 없는데? 하고 서버에 ssh 접속을 했는데...안됨.. 사유: IP가..바뀌었다... 인스턴스에 할당된 퍼블릭 IPv4 주소는 변한다. EC2 인스턴스를 만들면 기본적으로 인스턴스마다 매핑되는 IP주소가 있다. 그러나 할당된 IP는 쉽게 변경될 수 있는 값이다. 인스턴스를 중지 후 재시작 하거나 최대 절전모드로 전환되면 이 퍼블릭 IP는 새로 할당된다. 그러므로 해당 인스턴스를..
문제 발생: 서버가 자꾸 죽다..? 현재 커뮤니티에서 팀을 꾸려서 팀프로젝트를 진행중이다. 나와 다른 백엔드 팀원 1명이서 서버 개발을 맡고 있고, 팀원 분이 서버 배포를 담당하셨다. 진짜 API 개발에 앞서 mock API만 개발해두고 서버에서 프론트엔드 분들이 swagger로 테스트할 수 있게 먼저 배포를 진행했고... 서버에 많은 작업이 일어날 일이 전혀 없는 그런 상태...였다. 근데.. 서버가.. 죽다? 처음에는 외부로부터의 비정상적인 접속인 줄 알았다. 삐빅- 아니었다. 서버에 접속하니 아무것도 안하는데 아래와 같이 메모리가 혼자 87%나 사용중이었다...(이러니까 금방 죽지ㅠㅠ) 원인 열심히 원인을 찾아 본 결과 의외로 간단한 문제였다. 메모리 부족!! 우리는 서버에 Spring boot와 ..
결론부터 말하자면 Cookies에 속았다. 다시 생각해보면 내가 프론트엔드 쪽 지식이 너무 없었다. 상황 설명 프로젝트에서 JWT를 사용한 인증을 구현했다. 로그인시 서버는 클라이언트에게 Access Token과 Refresh Token을 반환한다. Access Token이 만료되면 클라이언트는 Refresh Token을 쿠키에 담아 토큰 재발급 API를 요청한다. 서버는 해당 Refresh Token이 유효하면 Access Token과 Refresh Token을 재발급해준다. 문제 발생 로그인시 클라이언트에게 Refresh Token을 반환할때 쿠키에 담아서 보낸다. 그러면 위의 캡쳐화면 속 Cookies에 알아서 세팅이 된다. 그래서 클라이언트가 서버에서 요청할 때도 Cookies안에 쿠키가 있으면 ..
오류 java.lang.ClassNotFoundException: javax.xml.bind.JAXBException 원인 Java11을 사용하는데 해당 버전에서는 JAXV API를 JDK에서 제거한 상태다. 해결 pom.xml에 아래 dependency를 추가해주면 해결된다. javax.xml.bind jaxb-api 2.3.0 참고 https://stackoverflow.com/questions/43574426/how-to-resolve-java-lang-noclassdeffounderror-javax-xml-bind-jaxbexception How to resolve java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException I have some c..