Development/Daily Error 27

[JPA] No Dialect mapping for JDBC type: 1111

Intro JPA 사용 중 native 쿼리를 사용해야 할 일이 있어 nativeQuery = true 옵션을 걸고 쿼리를 작성 했습니다. 그런데 생소한 에러메시지가 나오며 UUID의 맵핑이 제대로 이루어지지 않았습니다. org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111 원인 https://github.com/spring-projects/spring-data-jpa/issues/1796 이미 오래전부터 알려져있었지만 고치지 않기로 결정 된 Hibernate 이슈 라고 합니다. Hibernate 구현체에서는 addScalar를 활용 하길 추천하지만 특정 구현체에 의존하지 않고 Spring Data JPA 를 이용할 경우에는 cas..

[Maven 에러] java.lang.IllegalStateException: Unable to load cache item

문제 Linux 운영체제에 maven 을 설치 하고, mvn 명령어를 실행 하던 중 아래와 같이 오류가 발생 했습니다. [ERROR] Error executing Maven. [ERROR] java.lang.IllegalStateException: Unable to load cache item [ERROR] Caused by: Unable to load cache item [ERROR] Caused by: Could not initialize class com.google.inject.internal.cglib.core.$MethodWrapper원인 사용중인 메이븐 버전이 설치되어있는 JDK 의 버전을 지원하지 않기 때문에 발생한 문제 입니다. 해결 최신버전의 메이븐을 설치해서 문제를 해결 할 수 있습니..

SCP 사용중 Permission denied 대처법

Intro 모두 알고 계시는 것 처럼 리눅스에서 scp 명령어를 사용하면 손쉽게 remote 저장소에 있는 파일을 로컬에 copy 해 올 수 있습니다. 그런데 대부분의 상황에서 문제 없이 작동하는 이 기능에서도 어쩔 수 없이 Permission denied 에러를 뿜으며 안될 때가 있습니다. scp: Documents/root_file: Permission denied 이때의 대처법을 나누어 보려고 합니다. 원인 원인은 방금의 SCP 접근이 해당 파일에 대한 접근 권한을 가지고 있지 않기 때문입니다. sudo 권한을 가지고 있는 유저라고 하더라도 ssh 로 접속해서 sudo 명령어로 해당 파일에 접근하는건 가능 하지만, scp로 한번에 빼오는건 불가능 합니다. 해결 상황은 매우 당황스럽지만 어렵지 않은 ..

Docker ERROR: the image for the service you’re trying to recreate has been removed

Intro 단순히 도커 이미지를 Puling 하는 과정에서 무시무시한 에러가 발생 했습니다. docker pull browserless/chrome ERROR: The image for the service you're trying to recreate has been removed. If you continue, volume data could be lost. Consider backing up your data before continuing.에러 문구를 읽어보면.. 다시 생성하려고 하는 이미지가 삭제 되었기 때문에, 계속 진행 하게 되면 볼륨 데이터가 삭제 될 수 있다라고 합니다. 이정도 경고면 섣불리 엔터 치기 힘들죠.. 그러면서 계속 하기 전에 데이터를 백업 하라더니, 계속 진행 할 건지..

OAuth2 Redirect 주소 문제 해결

Intro 특정 사이트의 OAuth 로그인이 정상적으로 이루어지지 않고 있는 이슈가 접수되었습니다. 등록된 리다이렉트 URI와 일치하지 않다는 에러가 발생하고 있었고, 확인을 해 보니 등록된 리다이렉트 URL도, 실제 사용 중인 프로토콜도 https 인데, 리다이렉트 uri가 자꾸 http 로 시작하는 주소가 넘어가고 있었습니다. 문제 현 설정은 아래와 같습니다. application.yaml oauth2: clientA: clientId: ${clientA_CLIENTID} clientSecret: ${clientA_SECRET} accessTokenUri: ${clientA_URI} userAuthorizationUri: ${clientA_AUTHURI} redirectUri: "${BASE}/oau..

The getKey method should only be used when a single key is returned

Intro JDBC의 KeyHolder를 사용 하던 중 위와 같은 에러를 만났습니다. 에러 전문은 아래와 같습니다. org.springframework.dao.InvalidDataAccessApiUsageException: The getKey method should only be used when a single key is returned. The current key entry contains multiple keys: [{id=13, item_name=M2Air, price=1690000, quantity=12}] keyHolder.getKey() 를 했을때 하나의 키가 반환 되어야 하지만 여러개의 키가 반환 되어 발생한 에러라고 메시지에 쓰여 있습니다. 상황 NamedParameterJdbcTe..

NGINX 대용량 파일 업로드 502 응답

Intro 대용량의 파일 업로드를 시도 할 때, 특정 용량을 넘어가면 업로드가 되지 않고 502 응답이 오는 문제가 있었습니다. 로컬 개발환경에서는 아무 문제 없지만 운영 및 개발 서버에서 문제가 재현 되었습니다. 300MB 업로드 요청시 응답 시간 정보 일단 20MB, 100MB, 300MB, 1000MB 크기의 더미 파일을 각각 준비 해두고 더미 파일 생성 방법은 아래의 링크를 참고 해 주세요 Linux) 대용량의 더미 파일 생성하기 업로드 테스트를 진행 해 본 결과 300MB 까지는 문제 없이 업로드가 되었으나, 1000MB 파일을 업로드 하려고 하면 자꾸 NginX에서 502 응답을 보내고 있었습니다. 원인 저의 경우에 Nginx 설정 값이 원인 이었습니다. nginx.conf 파일을 확인 해 보..

Spring Boot2.6에서 Springfox3 실행 실패 에러

Intro Kotlin 프로젝트 였지만, Spring Boot 설정과 관련된 내용이기 때문에 java 로 프로젝트를 진행 하시는 경우에도 문제 해결을 하실 수 있습니다. Kotlin 과 스프링 부트를 이용해 API 서버를 만드는 강의를 따라 실습 해 보던 중 에러가 발생했습니다. 강의에서는 springfox 2.x 버전을 사용하며 새로나온 3.x 버전은 설정과정이 살짝 다르기때문에 구버전을 사용한다고는 했지만, 저는 얼마전 회사에서 진행중인 프로젝트에 springfox3.0.0 버전을 이용해 적용을 시켜본 경험이 있기 때문에 별 고민없이 3.0.0 버전을 적용 시켰습니다. build.gradle.kts implementation("io.springfox:springfox-swagger-ui:2.9.2")..

IntelliJ IDEA에서 Lombok 패키지를 못 찾을 때

Intro 이제 스프링 부트 2.5 버전으로 마이그레이션 해서 프로젝트를 진행한지도 한달이 넘었습니다. 간만에 확인할게 좀 생겨서 다시 예전 버전으로 돌린 뒤에 인텔리제이에서 프로젝트를 실행 하려고 했는데 빌드가 맘처럼 되질 않았습니다. java: JPS incremental annotation processing is disabled. Compilation results on partial recompilation may be inaccurate. Use build process "jps.track.ap.dependencies" VM flag to enable/disable incremental annotation processing environment. 위와 같은 에러가 먼저 뜨고 이어서 java:..

Spring Boot 단독실행시 no main manifest attribute 에러 해결

Intro no main manifest attribute, in 에러 발생 지금까지는 외장 톰캣을 이용해서 어플리케이션을 배포 해 왔습니다. 하지만 스프링부트는 내장 톰캣을 가지고 있기 때문에 단독실행이 가능한데요, 단독 실행 했을때와 외장 톰캣으로 띄웠을때 각각의 성능 및 부하 테스트를 진행 해 보고 더 나은 방향으로 진행하기로 하여 기존에 만들어둔 war 파일을 바로 실행 해 보았습니다. 문제 그런데 기대와는 다르게 manifest 관련 에러가 발생 했는데요, 복잡한 문제는 아니지만 생각보다 검색했을 때 뚜렷한 해법을 찾기가 어려웠기 떄문에 글로 남겨 보려고 합니다 실행이 안되는 상황의 war 패키지 내 트리 구조 원인 말그대로 manifest 파일을 찾지 못했기 때문입니다. jar 혹은 war파일..

일간에러) java: incompatible types: java.lang.String cannot be converted to org.slf4j.Marker

Intro 오래전부터 이어진 Spring Boot 버전 마이그레이션 작업의 일환으로, 메인급 프로젝트들의 작업은 마무리가 되었지만 여러가지 요구사항에 의해 fork 이후 여러 갈래로 갈라진 branch 격의 프로젝트들도 손을 봐야 하는 상황. 워낙 스프링부트 마이그레이션 작업 후 고생을 많이 했던 덕에 이제는 왠만한 오류는 떠도 한번쯤 봤던 내용들이기 때문에 크게 당황하는 일도 없고, 속도도 꽤나 붙은 상황이다. 그러던 중 간만에 새로운 에러메시지가 보여 반가운 마음에 미래를 대비해 정리 해 두려고 한다. 오류 java: incompatible types: java.lang.String cannot be converted to org.slf4j.Marker 단순하게 log를 찍는 상황인데, 기존에 작성 ..

일간에러) 3 Spring WebApplicationInitializers detected on classpath

Intro 톰캣 8.5 버전으로 프로젝트를 실행하는데 어플리케이션이 기대한 대로 동작 하지 않았다. 로컬에서는 아무 문제 없이 잘 작동했는데 도커로 톰캣 컨테이너를 띄워 실행키기면 계속 문제가 발생했다. 심지어 에러 로그도 쉽게 찾을 수가 없었다. tomcat/logs 경로에서 catalina.2022-04- 으로 시작하는 로그에서는 마치 정상적으로 실행 된 것 처럼 보였는데 localhost.2022-04- 로 시작되는 로그 파일을 확인 하자 그제서야 아래와 같은 에러 메시지를 보여줬다. 13-Apr-2022 13:10:54.092 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log 3 Spring WebApplica..

Development/Daily Error 2022.04.15 (2)

일간에러) application.yml 파일을 못읽을때 spring.config.location

문제 최근 프로젝트의 Spring Boot 버전을 1.5 에서 2.5로 마이그레이션을 진행 한 후 로컬에서 수많은 테스트를 거쳤습니다. 최근에는 개발 서버에도 올려서 정상적인 작동을 확인 하였고 이제 운영 서버에 반영을 시도 할 때가 되었습니다. 스프링부트 버전을 업그레이드 한 7개의 패키징을 갈아 끼우고, docker-compose up -d 을 외칩니다. 도커 컨테이너가 하나 둘 씩 문제없이 뜨기 시작합니다. status를 보니 UP, UP, UP, UP, UP, 그 가운데 슬며시 껴있는 Restarting 하나. 어플리케이션이 딱 하나 구동되지 못하고 계속 재 시작 되고 있습니다. 로그를 확인 해 보니 Caused by: java.lang.IllegalArgumentException: Could n..

Spring Session과 Cookie SameSite 정책

Intro SpringBoot 1.5 버전에서 2.5 버전으로 마이그레이션 작업이 대부분 완료 되었는데 SAML을 이용한 SSO 로그인 부분에서 굉장히 오래동안 해결하지 못하던 문제가 있었습니다. 분명 해당 부분의 코드는 전혀 변경이 없었는데 단지 스프링부트 버전이 달라졌다고 해서 예전 버전에서는 되고 지금은 안되는게 통 이해가 되지 않았습니다. 문제 일단 원인은 본 글의 제목처럼 Spring Session에서의 Cookie SameSite 정책 변경 때문이었습니다. 왜 이게 문제가 되었고 스프링부트 버전과 Cookie 정책이 어떤 연관관계가 있으며 어떻게 해결을 할 수 있는지에 대해 알아보겠습니다. 로그인 성공과 실패시 요청의 차이 SSO 로그인에 성공하던 요청 SSO 로그인에 실패하고 있는 요청 일단..

일간에러 More than one fragment with the name [spring_web] was found.

Intro Caused by: java.lang.IllegalArgumentException: More than one fragment with the name [spring_web] was found. This is not legal with relative ordering. See section 8.2.2 2c of the Servlet specification for details. Consider using absolute ordering. adm_1 | at org.apache.tomcat.util.descriptor.web.WebXml.orderWebFragments(WebXml.java:2205) adm_1 | at org.apache.tomcat.util.descriptor.web.WebX..