KeyCloak을 설치하면 같이 WildFly Admin Console도 사용할 수 있다. WildFly Admin Console은 KeyCloak과 같이 사용되므로 기본적으로 KeyCloak war를 deploy하고 있다. 바로 실행을 해보자. KeyCloak이 설치된곳의 bin디렉토리 하위의 standalone.bat 파일을 실행한다. KeyCloak이 실행되면서 WildFly Admin Console도 같이 실행이 된다. 마지막에 나오는 admin console은 WildFly의 admin console이고 http://127.0.0.1:9990 로 접근이 가능하다고 명시되어 있다. WildFly Admin Colsole Login 및 계정초기화 KeyCloak을 실행했을때 로그로 나온 http:/..
KeyCloak은 기본포트를 8080으로 사용하고 있다. 센스가 없다. 바꿔보도록 하자. 간단하게 바꿀수 있다. 각 운영체제의 실행파일 뒤에 -Djboss.socket.binding.port-offset=100 옵션을 넣어주면 된다. 여기서 100은 포트 offset이다. 즉 기본이 8080이고 offset을 100이라고 입력을 하면 8180으로 설정하겠다는 것이다. linux : ./standalone.sh -Djboss.socket.binding.port-offset=100 windows : standalone.bat -Djboss.socket.binding.port-offset=100 이렇게 실행을 하면 된다. 매번 이렇게 입력하는게 귀찮다면 실행파일 안에서 이 실행옵션을 추가해주면 된다. 예를들면..
KeyCloak은 또 무엇인가? MSA를 준비하면서 정말 많은 신문물을 접하게 된다. 원래 꿈은 수학선생님이나 윤리선생님같이 불변의 진리를 한번 습득하고 그것으로 평생 돈벌면서 살고 싶었는데.. 정반대의 성격인 IT쪽으로 진로를 잡게 되어 아주 다이나믹하게 새로운 기술을 끊임없이 공부하고 있다. 나중에 치매는 안걸릴것 같다. 다시.. KeyCloak은 Red Hat이 만들었고 인증(Authentification)과 인가(Authorization)을 쉽게 해주고 SSO(Single-Sign-On)을 가능하게 해주는 오픈소스(Apache License 2.0)이다. 주요 기능은 다음과 같다. 출처 : en.wikipedia.org/wiki/Keycloak 사용자 등록 소셜 로그인 동일한 Realm에 속한 모..
Springboot로 넘어가면서 yaml 파일이 많이 사용되고 있지만 여전히 properties 파일도 많이 사용된다. yaml 파일일때는 고민없이 사용할수 있는 Value에 대한 입력방식이 properties 파일에서는 고민이 되는 부분이 있다. 바로 제목에 쓴 것처럼 multiline의 value와 list, array인 경우이다. application.properties #multiline test.multiline=aaaaa\n\ bbbbb\n\ ccccc #list or array test.list.fruit=apple,banana,watermelon multi line은 문자열 뒤에 \n\ 을 입력하면 된다. 줄 수만큼 넣어줘야한다. list, array는 , 로 구분지어 넣을 항목들을 쭉 넣..
아주 기본적인건데 삽질을 많이 했다. 나름 spring과 오랜 시간을 보내며 조금 안다고 생각을 했는데 한참 부족한것 같다. 지난번에 Springboot Batch Tasklet에 대해 글을 쓰며 두가지 방식에 소개를 했었는데 이와 관련해 @Value로 application.yml 파일에서 값을 가져오는 부분의 이슈를 발견했다. 무슨 문제인지 보자. application.yml test: oingdaddy: Oing is the prettiest in the world! 이 test.oingdaddy 라는 값을 작성하는 tasklet에서 가져다 쓰고 싶은 경우이다. 일반적인 Spring에서 그러하듯 @Value("${test.oingdaddy}) 를 통해서 값을 가져올 것이다. Case1. 하나의 클래스..
Spring Batch의 기본적인 기능들을 지난 포스팅들을 통해 알아보았다. 이번에 알아볼 Skip/Retry도 Spring Batch에서는 기본적으로 제공을 하는 기능이다. 간단한 예제를 통해서 알아보자. us-500.csv (웹에서 쉽게 구할수 있음) Chunk Example을 볼때 잠깐 나왔었던 500 row의 csv 파일이다. 테스트를 위해 사용이 될 것이고 Chunk 방식의 Batch를 사용해 이 파일을 읽어서 가공하고 DB에 쓸 것이다. 테스트는 파일을 가공하는 단계(Processor)에서 강제로 오류를 내고 그것을 잘 skip하는지 또는 잘 retry 하는지 살펴볼것이다. 여기서는 일단 Art라는 사람과 Donette라는 사람이 있다는것 정도 알아두자. Spring Batch Skip Exa..
지난 포스팅으로 Chunk 방식과 Tasklet 방식의 Spring Batch에 대해 알아보았다. 이제는 이 방식을 조금 응용하여 이를 병렬처리하는 방법에 대해 알아보겠다. Chunk와 Tasklet과 마찬가지로 이것도 매우 직관적이라 이해가 쉬울 것이다. SampleParallel.java import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import o..
Chunk 방식은 정형화된 방식이라면 Tasklet 방식은 비교적 자유로운 방식이다. 따라서 실제로 batch를 사용할때 적어도 내가 경험해본 프로젝트에서는 Tasklet 방식을 훨씬 선호하였다. 이것도 Chunk와 마찬가지로 전에 Xml Config 방식으로 어떻게 사용하는지 살펴본적이 있는데 Springboot 기반의 Batch에서는 어떻게 사용을 하는지 알아보자. batch application 구조를 어떻게 잡느냐에 따라 Tasklet을 작성하는 방법은 다양하게 변할 수 있다. (Tasklet 내부를 작성하는건 동일하다. 표현법만 다를 뿐이다..) 필자는 크게 두가지 방법으로 구성을 해봤는데 Job 구성 클래스 외부에 tasklet 클래스를 만들어서 참조하는 방식이 있다. 이것은 tasklet 클..