프로젝트 변경사항이 있어서 BootApplication.java (springboot main class)의 위치를 변경하였다. 변경하고 나니 다음과 같은 오류가 발생을 했다. WARNING: Failed to scan [file:/C:/Users/tester/.m2/repository/com/sun/xml/ws/jaxws-rt/2.1.7/jaxws-api.jar] from classloader hierarchy java.io.FileNotFoundException: C:\Users\tester\.m2\repository\com\sun\xml\ws\jaxws-rt\2.1.7\jaxws-api.jar (The system cannot find the file specified) at java.util.zi..
Springboot 기동시 콘솔의 아래와 같은 메세지가 나오고 시작이 정상적으로 되지 않는 경우가 있다. The Class-Path manifest attribute in [path]/xxxx.jar referenced one or more files that do not exist어플리케이션은 정상적으로 작동하는데 이 오류 메세지들이 거슬린다. 이 오류가 나기전 필자가 한 작업은 두개의 프로젝트를 하나로 병합을 했다. 원인병합(Merge)이 되며 프로젝트에 설정해 놓은 spring-boot-devtools의 설정이 꼬였다. 해결spring-boot-devtools dependency를 제거하고 재시작을 한다. spring-boot-devtools 내부적으로 가지고 있던 값들이 꼬이면서 발생한 문제인것 ..
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. 하나의 클래스..
springboot는 이게 정말 왜 되지? 할 정도로 내장되어 있는 편리한 기능들이 많이 있다. 이번에 소개할 내용도 그렇다. 내부 로직을 까보지 않아서 정확한 동작원리는 파악하지 못했지만 그래도 급하게 DB 연동해서 테스트 할일이 있을때 편리하게 사용할 수 있는 샘플 프로젝트다. springboot 와 embedded hsql db의 조합이다. 빠르게 살펴보자. 프로젝트 생성 New Spring Starter Project 를 통해 프로젝트를 생성한다. dependency는 Spring Data JPA만 넣어준다. pom.xml org.hsqldb hsqldb runtime pom.xml 에는 위와 같이 hsqldb dependency를 추가해준다. 프로젝트 생성이 완료되면 위와 같은 모습일것이고 re..
지난 포스팅으로 RabbitMQ를 설치하는 방법에 대해서 알아보았다. 이 설치한 RabbitMQ와 management를 띄워놓고 Springboot를 연동하여 비동기통신을 하는 간단한 샘플을 만들어보자. 설치에 앞서 간단한 개념을 알아보자. Publisher(=Provider) 라는 메세지 발생의 주체가 있고 메세지를 발생 시킨다. 메세지를 rabbitTemplate (restTemplate 같은 개념이라고 이해하면 됨. RabbitMQ와 통신을 쉽게 해준다.) 이라는 RabbitMQ의 API를 이용해 RabbitMQ 영역으로 보내면 이를 받아주는건 Exchange이다. 메세지를 보낼때 어느 Exchange로 보낼지에 대한 정보와 이 Exchange는 어느 Queue로 routing이 되야 하는지에 대한..
springboot application을 기동하니 기동하자마자 로그 몇줄 찍히고는 바로 terminated 상태가 되어버린다. 오류도 나오지 않는다.. logging.level을 debug로 내리니 그래도 몇줄 더 보인다. 그리고 맨 마지막에는 아래와 메세지가 나왔다. 2020-10-08 23:00:35.704 DEBUG 17864 --- [extShutdownHook] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@7fcf2fc1, started on Thu Oct 08 23:00:33 KST 2020, parent: org...
springboot는 내장 톰캣을 사용하기에 server.xml 이라던지 context.xml 등등의 xml 설정파일이 없다. 하지만 이런 설정파일을 java config로 대체할 수 있다. 기존에 server.xml 에서 tomcat 간 session clustering을 했던것을 토대로 java config를 작성해본다. 기존 글과 비교해가면서 보면 이해가 쉽다. 필자의 환경은 springboot 2.1.15.RELEASE, tomcat 9.0.36, openjdk 11 version 을 사용중이다. pom.xml org.apache.tomcat tomcat-catalina-ha ${tomcat.version} 일단은 tomcat-catalina-ha 라는 dependency를 추가해줘야한다. Tom..