Development/Daily Error 31

일간에러) 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..

일간에러 2022-03-15 WARN No appenders could be found for logger

Intro log4j:WARN No appenders could be found for logger (io.github.makbn.thumbnailer.util.mime.MimeTypeDetector). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.Spring Project 실행 시 위와 같은 에러가 발생했다. 일단 log4j 1.2 라는 에러 문구에서 쉽게 느낌이 왔기 때문에 어렵지 않게 해결 할 수 있겠다. 원인 일단 위에서 안내 해 주는 링크로 이동하면 https://logging.apache.or..

일간에러 2022-03-04 Lombok@Slf4j 적용 에러 해결

Error java: Can't get the delegate of the gradle IncrementalProcessingEnvironment. java: cannot find symbol symbol: variable log location: class openapi.OpenApiController롬복 플러그인을 활용해 @Slf4j 어노테이션을 사용하던 중 위와 같은 에러 발생. 해결 방법1 보통의 경우에는 Annotation Processor 설정이 안되있거나 Lombok 플러그인이 설치되어 있지 않을 때 발생. 둘중 하나라도 걸린다고 생각한다면 Lombok 플러그인이 설치되어 있는지 확인 하고, 없으면 설치 Preferences -> Build, Execution, Deployment -..

일간에러 2022-02-10 Name for argument of type [java.lang.String] not specified

Intro 영한님의 JDK 동적 프록시를 활용한 동적 프록시 기술을 실습 해보던 중 예기치 못한 에러가 발생했다. 응답 코드는 500이며 에러 전문은 아래와 같다. java.lang.IllegalArgumentException: Name for argument of type [java.lang.String] not specified, and parameter name information not found in class file either. at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.updateNamedValueInfo(AbstractNamedValueMethodArgumentResolver..

일간에러 2022-01-11 remaining connection slots are reserved for non-replication superuser connections

Postgres 에러 증상 remaining connection slots are reserved for non-replication superuser connections 커넥션이 충분히 있는데도 커넥션을 얻지 못함. iRods에서도 커넥션을 얻지 못하니 파일 업로드를 하다가 빈번히 Connection reset이 되어 버림 원인 커넥션이 말라버려서 더이상 제공할 커넥션이 없음. 해결 보통은 커넥션 수를 늘리는 방법으로 해결하는 경우가 많은데 max_connections 를 먼저 확인 해 본다. select * from pg_settings where name='max_connections'; max_connections가 100으로 세팅 되어 있는데, 이 경우에는 운영중인 서버도 아니고..

일간에러 2022-01-04 iRODS:-24000

iRods The Integrated Rule-Oriented Data System https://irods.org/ 아마 대부분 처음 들어보셨을 거라 생각해 간단한 설명을 붙여보려 합니다. iRODS는 전세계의 연구, 기업, 정부기관등이 사용하는 오픈소스 데이터 관리 소프트 웨어 입니다. mission critical 한 환경에서의 production 레벨을 목표로 릴리즈 되었으며, 데이터 저장소 리소스를 가상화하기 때문에 사용자가 데이터가저장된 디바이스와 상관 없이 데이터를 다룰 수 있게 해 줍니다. 사실 한국어로 된 레퍼런스는 논문 한두개를 제외하면 전무하기 때문에 영어로 자료를 검색 해야 하는데, 그마저도 잘 정리된 도큐먼트가 없기 때문에 정보를 얻으려면 주로 Github에 올라온 issue들을 ..

일간에러 2021-12-29

'append' called on an object that does not implement interface FormData. 문제 jQuery Ajax와 FormData를 이용해 파일을 비동기로 업로드 하던 중 해당 아래와 같은 에러 발생 'append' called on an object that does not implement interface FormData 코드는 다음과 같다. $('#migration_form').on('submit', function () { var formdata = new FormData(); const file = $('#input_file')[0].files[0]; formdata.append..

일간에러 2021-12-22 파일 다운로드시 한글 파일명 처리

문제 드디어 파일 업로드 모듈을 성공적으로 붙여서 테스트를 마치고 운영 서버에 반영을 해 보았다. 파일이 업로드도 잘되고, 업로드 한 파일을 다운로드도 잘 하고. 문제가 전혀 없는 듯 보였는데.. 하필(?) 샘플 코드로 받았던 jsp파일을 한글 파일명 테스트 겸사 해본다고 한글파일.jsp로 파일명을 바꿔서 업로드를 하니 업로드에는 문제가 없었는데 다운로드 할 때 404 에러가 발생했다. 정말 다 끝났다고 생각 했고, 같은 파일의 업로드가 개발 환경에서는 아무 문제가 없었기 때문에 굉장히 골치가 아파지던 상황. 원인 정말 신기한건 다른 한글 파일명에도 문제가 없었고, 심지어 확장자를 조금 변경해 한글파일.jyp 로 바꿔도 아무 문제 없이 작동했다. 또 어떤 다른 확장자가 들어갔을 때 같은 에러가 터질지 몰..

일간에러 2021-12-21 파일 업로드시 파일명 깨짐

오류 파일 업로드&다운로드 처리를 위한 모듈을 중간에 연결해 파일 업로드를 구현하던 중. 파일명이 영문이나 심지어 일본어로 되어 있어도 정상적으로 업로드 처리가 되었는데, 한글만 있으면 파일명이 깨지는 문제가 발생했다. 단순히 파일명만 깨지는 선에서 끝난다면 파일 명을 어딘가 기록 해 두고 어떻게든 우회하는 방법으로 처리 할 수 있겠지만, 문제는 위에 보이는 것 처럼 _start_offset 과 _end_offset을 기록하며 innorix 모듈이 파일을 쪼개서 전송하는 것 이었다. 파일 업로드가 한 요청으로 끝나는게 아니고 클라이언트 쪽에 설치된 이로릭스 클라이언트를 통해 브라우저 -> innorix(port:4033) -> 서버 과정으로 요청이 여러개로 쪼개져 전달되며 업로드 상태도 계속해서 업데이트..

일간에러 2021-12-20 Corrupt form data: premature ending

오류 innorix 파일 업로드 모듈을 진행중인 프로젝트에 붙이는 과정에 컨트롤러에서 다음과 같은 에러가 발생했다. Corrupt form data: premature ending 샘플 코드를 WAS에 단독으로 올려서 테스트 해봤을 때에는 문제없이 작동 되는걸 확인 했는데, 스프링 부트 프로젝트에서 모듈을 붙이려니 자꾸 에러가 발생했다. 심지어는 샘플 코드를 그대로 붙여 넣어 테스트 해보아도 같은 에러가 발생했다. 번역을 그대로 해 보면, 데이터가 손상되었고 조기에 종료 되었다는 내용이다. 원인 에러가 나는 코드를 타고 들어가보니, MultipartRequest를 모듈 내부에서 readNextPart() 돌리며 스스로 처리 하고 있었다. 스프링에서 익숙 하게 사용 하는 List files 방식을 사용는게..

일간에러 2021-12-01 createPopper is not a function

에러 s.createPopper is not a function라는 에러가 나오며 부트스트랩 드랍박스가 의도한 대로 작동하지 않았습니다. 혹시나 싶어 Bootstrap 공식 document의 엘리먼트 구조를 그대로 넣어도 봤지만, 여전히 작동하지 않았습니다. 원인 bootstrap.bundle.min.js 파일이 Popper를 포함하고 있다고 써 있습니다. Popper 라이브러리를 불러오지 않았기 때문에 에러 발생한 것 입니다. 해결 bootstrap.bundle.min.js 파일을 다운받아 추가합니다. 혹은 cdn으로 추가해도 무방합니다. 물론, Bootstrap 버전은 사용중인 버전을 찾아야 합니다. https://getbootstrap.com/docs/5.1/getting-started/downlo..

일간 에러 2021-11-19

I cannot be cast to java.lang.Integer 문제 JPA Restrictions의 in 절 파라미터에 int 배열을 전달 했더니, 쿼리를 만들어 내지 못하며 I cannot be cast to java.lang.Integer 에러가 발생했다. int[] actions = { Constants.READ, Constants.ADMIN, Constants.SUBMIT, Constants.REVIEW,Constants.WORKFLOW } Restrictions.in("actionId", actions))); 해결 과정 혹시 쿼리에는 String만 들어가야 하나 해서 Parameter를 String 배열로 변환 해 전달 해 보았다. Arrays.stream(collectionMembers)..