전체 글 (129) 썸네일형 리스트형 [Spring Boot] Quartz 배치 (scheduler) clustering Spring application을 구축하다 보면 spring scheduler를 이용해서 cron job을 많이 사용하게 된다. 그러나 이중화나 쿠버네티스에서 여러 pod를 실행하게 되면 다수의 was에서 job이 중복해서 실행이 되게 된다. 이를 위해서 특정 Node의 was에서만 job을 실행되게 인자나 property를 뺄 수 있으나 배포시에 노드마다 설정을 지정해주어야 하는 번거로움이 생긴다. 이럴때 Spring boot + Quartz 배치를 사용하고 Clustering 기능을 켜면 Cluster 기능으로 fail over를 방지 할 수도 있고 동시에 여러잡이 실행되는것도 방지 할 수 있다. Spring Quartz 라이브러리 Import pom.xml에 아래 spring-boot-starte.. [Spring boot] Tomcat (windows) + War 배포 하기 Apache Tomcat 다운로드 및 압축 해제 Apach Tomcat 9.0대 Download는 아래 Url에서 수행한다. https://tomcat.apache.org/download-90.cgi 추세에 맞게 64bit용 zip파일을 다운받고 원하는 위치에 Extract 해둔다. Spring boot application 수정 사항 Spring boot application main에서 다음과 같이 extend 및 implement를 추가한다. @EnableConfigurationProperties(AppProperties.class) @SpringBootApplication // Main class에서 SpringBootServletInitializer를 상속하고, implements를 구현한다. .. [Synology] Synology nas를 이용해 다른 PC wol로 켜기 얼마전까지 KT 기가 wifi 공유기를 DDNS설정 및 포트포워딩 설정해서 외부에서 잘 사용하고 있었는데 최근에 공유기 리셋 후 다시 설정해보니 동작을 하지 않는것을 발견하였다. 외부포트는 임의로 설정하고 공유기 IP 주소와 웹 서버 포트 8899를 포트포워딩으로 연결해주려고 하면 아래와 같이 에러를 내뿜고 저장이 안된다. 물론 DDNS 설정도 해주었다. 웹 서핑을 해보니 최근 펌웨어에서 공유기 어드민 원격 접속을 못하도록 막은거 같다.. 보안을 생각한다면 당연한 조치라고 생각을 한다. 그나저나 외부에서도 공유기로 들어와서 스마트 부팅 기능으로 데스크탑을 잘 켜왔었는데.. 갑자기 공유기 WOL기능을 사용못한다고 하니 너무 갑갑했다.. 급할때 로또 사야할때... 집 컴퓨터로 개발 동작 확인할때는 원격 기능.. [Spring boot] Exception에 따라 조건부로 Transaction Rollback 하기 아주 흔한 케이스는 아니지만 Rest Api호출 후 Exception으로 에러 코드를 전달할 시에 대부분은 Transaction rollback으로 DB에 저장된 내용은 다시 취소를 한다 그러나 특정 케이스에서는 DB 상태는 Rollback하지 않고 Front 단에는 에러코드를 전달하고 싶을때가 있다. 아래는 보통 사용하는 Transactional 처리이다. @Transactional public void executeService() { RestHistoryVO vo = new RestHistoryVO(); vo.setCalldtlsId(Integer.parseInt(Instant.now() .atZone(ZoneId.of("Asia/Seoul")) .format(DateTimeFormatter.ofP.. [Postgresql] max_connection 늘리기, 현재 connection 확인 (windows) postgresql db 를 실행하다 보면 connection pool이 다 차서 애플리케이션에서 연결을 못한다는 메세지를 볼 때가 있다. 현재 설치되어 있는 postgresql db의 설정값들을 쿼리로 쉽게 알아볼 수 있다. 현재 DB 설정값 조회 Heidisql 등의 DB Client 툴을 실행 시키고 Postgresql db에 접속 한다. 아래 쿼리를 수행하면 현재 설정되어있는 DB system 설정을 볼 수 있다 SELECT * FROM pg_settings; 여러가지 설정 중에 max_connections 값이 최대 동시 접속수를 지정하는 값이다. 기본값은 100으로 설정되어 있음을 볼 수 있다. 현재 사용되는 connection 정보 조회 최대 동시 접속 값은 찾았으나 여러 어플리케이션 수행중.. [Adobe XD] 컨트롤 정리 화면 확대 Ctrl 키 + 마우스 휠 화면 위아래 스크롤 마우스 휠 상하 조정 화면 좌우 스크롤 Shift 키 + 마우스 휠 상하 조정 [Mybatis] Mybatis interceptor 활용하기 Mybatis로 DB mapper를 수행하는데 interceptor를 등록하면 DB 쿼리 실행 전후로 등록한 interceptor를 수행해서 사전 작업을 할 수 있다. 예를 들어 조회 쿼리 수행시 Paging 처리를 일괄적으로 interceptor에서 할 수 도 있고 Mybatis 쿼리 인자로 세션 정보를 전역에서 설정해서 모든 쿼리마다 해당 세션 값을 넣을 필요 없이 만들 수도 있다. Mybatis interceptor 설정 방법 mybatis-config.xml 생성 아래와 같이 mybatis-config.xml 설정 파일을 생성한다. 기존에 이미 사용중이라면 plugins 밑에 interceptor class를 등록해준다. Interceptor Class 정의 Interceptor Class를 만들.. [Spring boot] Spring boot test시 Static class mock 만들기 JUnit으로 테스트 작성 시 Static Class를 Mocking해서 테스트를 해야할 경우가 많이 생긴다. sprin-boot-starter-test 패키지에서 기본으로 제공하는 mockito-core패키지에는 static class mocking을 위해 아래 함수를 제공한다. MockedStatic mockSecurityUtils = Mockito.mockStatic(SecurityUtils.class); mockSecurityUtils.when(() -> getPlainCredential(anyString(), any())).thenReturn("1q2w3e4r5t!!"); Mokito.mockStatic 메소드에 Mocking을 할 static class를 지정해 주고 when, thenRetu.. 이전 1 ··· 4 5 6 7 8 9 10 ··· 17 다음