[DEV] 기록 170

[Spring Batch] ForbiddenClassException

개요 Marshaller, Unmarshaller 바인딩 기능을 제공하는 오픈소스인 Xstream을 이용해 StaxEventItemReader 코드를 작성하는데 아래와 같은 에러가 발생했습니다. com.thoughtworks.xstream.security.ForbiddenClassException 원인 Xstream 1.4.18 버전은 역직렬화 진입 시점에 공격을 방지하기 위한 설정이 기본적으로 설정되어 있습니다. You need to configure the security framework in XStream. It is designed to prevent attacks to your deserialization entry point. 해결 방법 두 가지 해결 방법이 있습니다. 첫 번째는 아래와 같이..

[DEV] 기록 2023.07.26

[Java] Long, Integer 값 비교는 ==이 아닌 equals로 해야하는 이유

개요 리스트를 Long 타입 id 기준으로 필터링하는데 id 값이 둘 다 203으로 동일한데도 불구하고 빈 리스트가 돌아오는 버그가 발생했습니다. 반면 id 값이 127 이하일 때는 id 값이 같으면 해당 id가 포함된 리스트가 반환되었습니다. 원인 기본적으로 ==은 메모리 주소값을 비교하기 때문에 값이 같더라도 메모리 위치가 다르면 false를 반환합니다. id 값이 127 이하일 때는 equals가 아닌 ==으로 비교해도 정상적으로 동작한 것은 Java에서는 -128부터 127까지의 범위 내에 있는 Integer와 Long 객체를 캐싱하여 동일한 객체로 취급하기 때문입니다. 위와 같이 동작하는 이유는 JVM에서 성능 향상을 위해 수행되는 옵티마이제이션을 진행하기 때문입니다. 해결 방법 제목에서도 명시..

[DEV] 기록 2023.06.23

[SpringBoot 2.6.X] QueryDSL Unable to load class 'com.mysema.codegen.model.Type'

개요 SpringBoot 2.7.12 버전에 QueryDSL 디펜더시를 추가한 후 QClass 생성을 위해 compileQuerydsl 명령을 호출하니 아래와 같은 에러가 발생했습니다. QueryDSL Unable to load class 'com.mysema.codegen.model.Type' External Libraries에 추가된 라이브러리 목록은 아래와 같습니다. 원인 SpringBoot 2.6.X 버전 이상부터는 build.gradle에 QueryDSL 버전을 직접 명시해야 하고, querydsl-jpa 및 querydsl-apt를 추가하도록 변경이 되었습니다. 해결 방법 아래 build.gradle 파일과 같이 querydsl 세팅을 변경하면 정상적으로 compileQuerydsl 명령이 실..

[DEV] 기록 2023.06.20

[ssh] WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

개요 ssh 접속을 시도했는데 아래와 같은 오류가 발생했습니다. 원인 내용을 해석하자면 원격 호스트 식별 정보 즉, RSA 키가 변경되었기 때문에 위와 같은 오류가 발생한 것입니다. 이는 극단적으로 해석하자면 man-in-the-middle attack에 의해 발생했을 수도 있고 등록된 호스트 정보 외 다른 호스트에서 접근을 시도해서 발생했을 수도 있습니다. 저 같은 경우 local에서 docker로 실행된 서버에 접속하려고 하는 도중 발생한 오류였기 때문에 후자였습니다. 해결 방법 해당 경고를 제거하기 위해서는 /root/.ssh/known_hosts에 올바른 Host Key를 추가하거나 기존 Host Key를 제거하면 됩니다. local에서 작업한다면 Window 기준 C:\Users\USER\.ss..

[DEV] 기록 2023.06.20

[VirtualBox] 윈도우에서 VirtualBox putty로 접속하는 방법

개요 내부망에서만 접속 가능한 CentOS7 서버에 MariaDB를 설치하기 위해 아래 블로그를 참고하며 진행했습니다. https://dohee-studyroom.tistory.com/entry/LinuxCentOS79%EC%97%90-%EC%98%A4%ED%94%84%EB%9D%BC%EC%9D%B8%EC%9C%BC%EB%A1%9C-MariaDB-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0 [Linux]CentOS7.9에 오프라인으로 MariaDB 설치하기 안녕하세요! 아이티공부하는도히 입니다! 오늘은 Linux, 그 중에도 CentOS7.9 버전에서의 마리아DB를 오프라인으로 설치해보겠습니다! CentOS7.x 버전이라면 이 가이드만 보셔도 문제 없으실 거예요!:D dohee-st..

[DEV] 기록 2023.05.19

[k8s] kubeadm init 명령어 사용 시 발생하는 에러

개요 쿠버네티스 마스터 노드 초기화하는 단계에서 sudo kubeadm init 명령어를 실행했더니 아래와 같은 에러가 발생했습니다. [init] Using Kubernetes version: v1.27.1 [preflight] Running pre-flight checks error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR CRI]: container runtime is not running: output: E0502 15:26:44.163693 9987 remote_runtime.go:616] "Status from runtime service failed" err="rpc error: code = Unavai..

[DEV] 기록 2023.05.03

[Intellij] error: invalid source release

개요 프로젝트 실행 시 아래와 같은 에러 메시지가 나타났습니다. error: invalid source release: 16 해결 방법 아래 설정들을 모두 maven/gradle에서 설정한 JDK 버전과 맞추면 해결이 됩니다. File > Project Structure > Project > Project SDK, Project Language Level File > Project Structure > Module > Sources > Language level File > Project Structure > Module > Dependencies > Language level File > Settings > Build, Execution, Deployment > Compiler > Java Compil..

[DEV] 기록 2023.04.21