2024. 9. 25. 15:34ㆍJava
스프링 부트로 "프디아" 파이널 프로젝트를 하면서
한국투자증권 OpenAPI를 활용했었는데,
오픈api를 활용하기 위해서
한투에서 접근 토큰을 발급 받아서 사용해야 했습니다.
이 토큰은 하루의 유효 기간을 가지고 있기 때문에
매일 23시 30분마다 메서드를 실행하여
토큰 값을 갱신할 수 있도록
스케쥴링을 걸었습니다.
그럼 23시 30분에
한투에서 토큰이 새로 발급 됐다고
카톡이 날라와요!
어우 근데 안 오더라고요;;
유추해볼 수 있는 건
애플리케이션의 시간 설정과
OS의 시간 설정이었습니다.
UTC 기준으로 되어 있었기 때문에
한국 서울 시간(UTC+9)으로 설정해줄 필요가 있었어요.
package com.partners.total;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
import java.util.TimeZone;
@SpringBootApplication
@EnableScheduling
public class PartnersApplication {
public static void main(String[] args) {
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Seoul"));
SpringApplication.run(PartnersApplication.class, args);
}
}
위와 같이 애플리케이션을 한국 시간으로 설정해 주면
스케쥴링이 원했던 시간에 잘 돌아가게 됩니다.
근데도 안 되더라고요 ㅋㅋ
OS 시간대가 UTC로 설정되어 있다고 하더라도,
애플리케이션에서 설정을 해줬으면
JVM 내부에서 동작하는 애플리케이션은
설정한 시간대에 맞춰 동작을 하게 된다고 해요.
따라서, OS 시간대와는 상관없이
잘 작동해야 하는데 안 됐습니다.
그래서 OS 시간도 한국 서울 시간으로 설정을 해줬어요.
OS 시간 설정을 하는 건
검색하면 잘 알려주는 블로그가 많아서
따로 올리진 않을게요.
우선 이렇게까지 하니까 잘 되긴 했는데...
애플리케이션 시간 설정을 했을 때
토큰 갱신이 안 됐던 이유가
'스케쥴링이 되지 않아서' 라고
단정하기가 어렵긴 해요.
제가 토큰 발급을 위한
APP_KEY 등 환경 변수를
잘못 넣어 주고 있었거든요...ㅎ
그래서 OS 시간 설정까지 해주어야
애플리케이션의 시간 설정이
잘 이루어진다고 말할 수는 없을 것 같네요.
나중에 기회가 되면 테스트 해봐야 할 것 같아요!
'Java' 카테고리의 다른 글
스프링 시큐리티를 이용한 로그인 구현2 [Spring Boot] (0) | 2024.09.30 |
---|---|
스프링 시큐리티를 이용한 로그인 구현 [Spring Boot] (0) | 2024.09.29 |
프디아 파이널 프로젝트 - WebFlux 활용 [Spring Boot] (0) | 2024.09.24 |
프디아 파이널 프로젝트 웹소켓, SSE (0) | 2024.09.15 |
프디아 4기 파이널 프로젝트 기술 및 코드 정리 [SpringBoot] (0) | 2024.09.14 |