Development/Daily Error 20

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

일간 에러 2021-11-12

save(object) 메서드 먹통 문제 dao.save(object)를 아무리 호출해도 저장이 되지 않아 테스트 케이스를 통과 하지 못하던 에러. 저장만 안되고, 기존에 이미 있던 DB를 조회 하거나 수정 하는데는 문제가 없어서 당황스러웠다. 원인 Spring Data JPA를 사용할때는 save 메서드를 당연하게 사용했는데, 이번에는 다중 쓰레드에서의 DB 커넥션을 관리해줘야 하는 상황이다 보니, Hibernate가 제공하는게 아닌 다른 구현체를 상속해서 데이터 접근 객체를 만들어 사용하고 있었다. 하다 하다 안되어서 메서드 목록을 보니 create 메서드가 따로 있기에, 그럼 save와 어떤 식으로 차이가 있는지 살펴보려고 코드를 타고 들어가니.. public abstract class Abstra..