이전에 이와 거의 유사한 오류를 조치한 적이 있었다. An illegal reflective access operation has occurred 오류 조치 application의 OSS version을 올리는데 특정 기능을 수행중에 위와 같은 Warning이 발생하였다. WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apach.. oingdaddy.tistory.com 놀라운건 두달이 지난건데 기억이 전혀 나지 않는다.. 이때는 결국 poi 의 version 문제로 밝혀졌는데 이번에는 또 조금 다르다. WARNING: An illegal reflective acces..
어플리케이션 실행 시 UnsupportedClassVersionError을 만나는 경우가 있다. 이건 내 환경의 JVM의 버전보다 더 높은 버전의 java class 파일을 읽으려고 할 때 발생을 한다. 일단 java class file version을 살펴보자. JDK Version Bytecode Version Java 1.0 45.0 Java 1.1 45.3 Java 1.2 46.0 Java 1.3 47.0 Java 1.4 48.0 Java 5 49.0 Java 6 50.0 Java 7 51.0 Java 8 52.0 Java 9 53.0 Java 10 54.0 Java 11 55.0 Java 12 56.0 Java 13 57.0 Java 14 58.0 Java 15 59.0 Java 16 60.0 ..
Springboot를 성능개선하는 방법에 대해 지난번에 글을 쓴 적이 있었다. Springboot 속도 개선 방법 어떻게 하면 Springboot을 조금 더 빠릿빠릿하게 만들 수 있을까 찾아보았다. 지금 사용하고 있는 최신버전(2.5.4)도 만족스럽게 사용하고 있지만 찾아보면 자료가 있을것 같았다. 마침 좋은 자료가 oingdaddy.tistory.com 그중 Lazy Initialization을 하는 방법과 효과에 대해 테스트를 해봤다. 일단 Lazy Init이라고 하는건 bean을 기동시점에 생성하는것이 아닌 실제 사용시에 호출을 하는 방법이다. 그렇기 때문에 당연히 기동시간은 단축된다. 그리고 최초 호출 시점에는 느리다. 어떻게 보면 조삼모사같지만 그래도 bean의 개수가 늘어나면 늘어날수록 기동시..
java 9 이상에서는 다음과 같이 간단하게 application 자신의 pid를 확인할 수 있다. Long pid = ProcessHandle.current().pid(); 소스 상에서 가지고 오는 방법은 위와 같고, log상에서 확인하는 방법은 springboot의 기본 로깅 패턴을 사용한다면 바로 확인할 수 있다. logging pattern에 직접 넣어서 사용하려면 pid에 해당하는 ${PID:-} 를 pattern에 추가하면 된다. 끝!
예전에 Spring Batch 사용하면서 jobParameters를 주입받으려면 이렇게 하세요 하고 글을 쓴적이 있다. Spring Batch jobParameters 사용하는 방법 (with @JobScope, @StepScope) Spring Batch에서 실행할때 넘겨주는 Parameter 값을 받아서 동적으로 처리를 하고 싶은 경우가 있다. Springboot Batch에서는 이렇게 Program Arguments를 이용해 jobParameters를 전달한다. 바로 이 값을 어떻.. oingdaddy.tistory.com 이 글은 @JobScope와 @StepScope를 적절하게 사용해야 한다는 내용이 주된 내용이었다. 하지만 어느 프로젝트에서는 위와 같은 규칙을 잘 지켰는데도 불구하고 주입을 받..
오래전에 Jenkins에서 JaCoCo 연동하는 방법에 대해 기술을 한적이 있다. 오래전에 해서였을까.. 오랜만에 다시 연동을 하려고 하니 뭐가 문제였는지 다음과 같이 나오며 연동이 잘 되지 않았다. 예전에 하던것(Ant Build & Deploy)과는 다르게 Springboot로 배포된 war 파일을 압축풀고 이 class 파일로 jacoco.exec 파일로 매핑을 해서 이런 문제가 생기나 하고 한참 삽질을 했다. 결론을 먼저 말하자면 원인은 이런 문제 때문이 아니었다. 바로 Jenkins의 JaCoCo plugin이 문제였다. 필자는 예전에 설치된 Jenkins에 JaCoCo를 붙여야해서 Jenkins의 version은 2.1xx 였고 JaCoCo plugin은 3.0.1 이었다. 그리고 class ..
기존에는 jndi를 사용해서 tomcat에서 datasource 관련 설정을 할때는 tomcat 가이드에 있는대로 설정을 하면 되었다. 하지만 이제는 springboot 사용이 보편화됨에 따라 embedded tomcat을 사용하므로 application 단에서 datasource 관련설정을 모두 해야 한다. application 단에서 datasource 관련설정을 어떻게 하는지, 그중에서도 대표적인 Connection Pool 설정 방법에 대해서 알아보겠다. 참고로 필자의 환경은 springboot 2.5.x 이다. 1. spring default datasource 사용 시 (application.yml) spring: datasource: driver-class-name: oracle.jdbc.O..
Springboot 환경에서 Maven (pom.xml) 의 기본 설정은 다음과 같다. . org.springframework.boot spring-boot-maven-plugin 이상태로 프로젝트를 maven install을 진행하면 다음과 같이 class 파일이 들어있는 jar파일이 하나 생성이 된다. 여기에 프로젝트의 source (.java) 도 같이 빌드 및 배포를 하고 싶은 경우가 있다. 이럴 경우에는 pom.xml 을 다음과 같이 설정해준다. pom.xml org.springframework.boot spring-boot-maven-plugin org.apache.maven.plugins maven-source-plugin attach-sources jar maven-source-plugin..