반응형 개발/기타51 poi SXSSFWorkbook createSheet FontConfiguration NullPointException Java에서 엑셀을 다룰 때 Apache POI 라이브러리를 자주 사용하게 된다. 그리고 대용량 처리를 위해서 Streaming API를 사용하는 SXSSFWorkbook을 사용하는데 서버에 올려서 테스트 중에 아래와 같은 에러가 발생했다. Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.InternalError: java.lang.reflect.InvocationTargetException] with root cause java.lang.NullPointerException: null at j.. 2023. 7. 3. DBeaver posgresql JDBC 드라이버 수동 설정 DB Clinet Tool로 많이 사용하고 있는 DBeaver에서 DB 드라이버 수동 설정하는 방법을 알아본다. 먼저 posgresql의 드라이버를 다운로드 받는다. https://jdbc.postgresql.org/download/ 이제 DBeaver에서 postgresql database 연결 설정을 시작한다. 'DB 연결 설정'에서 우측하단의 Driver Settings를 클릭한다. Driver Settings 팝업에서 두번째 탭 "Libraries"를 클릭한다. 그럼 기본으로 설정된 라이브러리들이 몇가지 보이는데 불필요함으로 모두 선택하고 Delete를 한다(Optional). 그리고 Add File를 선택해서 다운로드 받은 postgresql jdbc 드라이버를 추가 후 OK를 눌러 팝업을 닫는.. 2023. 6. 19. PostgreSQL 문자열 합치기 PostgreSQL에서 문자열을 합치는 방법을 알아보자. PostgreSQL은 기본적으로 Oracle과 문법이 많이 비슷하다. 1. '||' 사용 // 문법 STR1 || STR2 || ... // 예시 'Hello' || 'World' // HelloWorld 한가지 주의할 부분은 합치려는 문자열 중에 NULL이 있는 경우 NULL이 리턴된다는 것이다. 'Hello' || NULL || 'World' // NULL 2. CONCAT 사용 // 문법 CONCAT(STR1, STR2,...) // 예시 CONCAT('Hello', 'World') // HelloWorld CONCAT을 사용할 때는 NULL이 포함이 되어도 NULL을 무시한다. 'Hello' || NULL || 'World' // Hello.. 2023. 5. 29. PostgreSQL Upsert(Update&Insert) 사용 PostgreSQL를 사용해서 upsert를 실행하는 문법을 알아보자. upsert는 Insert 시 pk가 중복 등으로 Insert 하려는 값이 존재하는 경우 해당 row를 update하는 쿼리이다. 먼저 문법을 보면 아래와 같다. INSERT INTO // insert문 ON CONFLICT // 충돌 체크 DO UPDATE // update문 문법을 기준으로 쿼리를 작성해보면 아래와 같은 예시가 된다. USER테이블에 insert문을 실행하는데 'id' 컬럼에 해당하는 row가 없으면 insert, 이미 존재하면 age에 +1을 한 값으로 update한다. INSERT INTO USER (id, name , age) VALUES('user1', 'Hong', 1) ON CONFLICT (id) DO.. 2023. 5. 29. Gradle 멀티모듈에서 특정(one) 모듈(subproject)만 빌드 Gradle에서 멀티모듈 환경으로 개발을 하는 경우 기본적으로 빌드 시 매번 전체 모듈이 빌드가 된다. 하지만 상황에 따라서 특정 모듈(subproject)만 빌드를 수행하고 싶을 때가 있다. 이럴때 매번 전체 모듈을 빌드하더라도 원하는 결과물은 생성되겠지만 불필요하게 빌드시간이 증가하게 된다. 아래와 같이 간단한 Gradle 명령으로 특정 모듈만 빌드가 가능하다. Parent(Root) - A모듈 - B모듈 - C모듈 위와 같이 Parent에 A, B, C 프로젝트가 자식 모듈(subproject)로 구성된 멀티 모듈 환경이 있다고 가정하자. 먼저 일반적인 Gradle 명령은 다음과 같다. Parent(Root) 기준으로 전체 모듈이 빌드가 된다. gradle build 특정 모듈만 빌드를 하고 싶은 .. 2023. 5. 27. 크롬 CORS 에러 -blocked by CORS policy: The request client is not a secure context and the resource is in more-private address space `private` 오랜만에 개발하면서 크롬에서 CORS를 만났다. 처음에 CORS 설정을 다 해줬는데도 에러가 발생하여 원인을 찾는데 시간이 걸렸다. 이번에 발생한 발생한 CORS 에러는 일반적으로 봤던 CORS 에러와 달랐는데 에러 메시지를 끝까지 안본것이 문제였다. 먼저 일반적으로 발생하는 CORS 에러는 다음과 같다. Access to XMLHttpRequest at 'http://xxxx' from origin 'http://xxxxx' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the r.. 2023. 2. 1. STS(Eclipse) git failed to write credential 에러 STS(Eclipse)에서 git 관련 pull, push 등 명령을 수행할 때 메시지창이 뜨면서 failed to write credential 에러 메시지가 나타는 경우가 있다. 아래 메시지가 뜨면 매번 git 계정정보를 작업 시 마다 입력해줘야 되서 많이 불편하다. 이 현상이 나타나는 이유는 STS의 git 저장소 Key가 꼬여서 나타나는 현상으로 저장된 Key를 모두 삭제해주면 해결 된다. 삭제 방법은 STS에 "Preferences > General > Security > Secure Storage > Contents(탭)" 메뉴로 접속해서 GIT 부분의 내용을 삭제하면 된다. 2022. 9. 18. Tomcat SymbolicLink(심볼릭링크) 허용 Tomcat 구성 중에 NAS로 심볼릭링크를 설정했는데 링크가 먹히지 않는 상황이 발생했다. 검색을 해보니 Tomcat은 보안상의 이유로 심볼링 링크를 막는다고 한다. 아래와 같이 conf/context.xml간단한 설정으로 심볼릭링크를 허용할 수 있다. 참고로 아래는 Tomcat 버전은 8버전 이상인 경우에 해당하는 설정이다. ... Tomcat 7버전 이하에는 conf/server.xml에서 context부분에 allowLinking="true"를 추가한다. 참고로 심볼릭링크를 사용하면 성능적으로는 좀 안좋다는 얘기가 있다. 필요한 경우에만 사용하자 2022. 9. 5. 이전 1 2 3 4 5 6 7 다음 반응형