hs_err_pid 파일은 JVM이 어떤 이유에 의해 강제로 종료되면서 왜 종료되었는지 단서를 남긴 파일이다. [13:50:05.414][INFO ]19108[org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.prepareWebApplicationContext:line290] - Root WebApplicationContext: initialization completed in 655 ms OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000093b00000, 4005# # There is insufficient memory for the Jav..
이전에 이와 거의 유사한 오류를 조치한 적이 있었다. 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 ..
java 9 이상에서는 다음과 같이 간단하게 application 자신의 pid를 확인할 수 있다. Long pid = ProcessHandle.current().pid(); 소스 상에서 가지고 오는 방법은 위와 같고, log상에서 확인하는 방법은 springboot의 기본 로깅 패턴을 사용한다면 바로 확인할 수 있다. logging pattern에 직접 넣어서 사용하려면 pid에 해당하는 ${PID:-} 를 pattern에 추가하면 된다. 끝!
Javascript를 이용해 어떤 브라우저로 application에 접속했는지에 대한 정보를 확인할 수 있다. 이때 사용되는게 User-Agent이다. 개발자 도구에서도 확인해 볼 수 있다. 이런 User-Agent 정보를 이용해 Javascript에서는 클라이언트로부터 온 요청을 브라우저에 따라 처리할 수 있다. 그럼 일단 User-Agent 가 브라우저에 따라 어떤 모습인지 알아야 한다. browser User-Agent IE Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko Edge Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)..
여러국가에 적용되는 시스템을 구현해야 하는 상황이라 timezone에 대해 고민하고 있었는데 생각지도 못한 Summer Time 에 대한 이야기가 흘러나왔다. 이것도 고려가 되어야 한다고 한다. 우리나라도 이 Summer Time을 시행한적이 있었다고 한 사실을 알고 놀랐다. 우리나라에서 Summer Time을 겪은 사람은.. 많이 고참들이시다. (라떼 주의) Summer Time에 대해 궁금하면 이 글을 참조하도록 하자. Summer Time이 어려운점은 이게 기업의 로비같은걸로도 바뀔수 있을만큼 동적이라는 것이다. 예를 들자면 어느 나라에서는 2020년에는 4월 14일부터 시작하고 2021년에는 4월 30일에 시작할수도 있다. 따라서 이걸 library 형태로 만들어서 계속 쓰는건 불가능에 가깝다. ..
JAVA app을 기동시 콘솔 최상단에 다음과 같은 로그가 뜨는 경우가 있다. Picked up JAVA_TOOL_OPTIONS: -Djava.net.preferIPv4Stack=true 이건 ip 표현방식을 기본으로 되어 있는 ip6방식을 사용하지 않고 ip4방식을 사용하겠다는 것이다. 음.. 나는 jvm 옵션으로 아무것도 주지 않았는데... 이거는 어디서 어떻게 설정이 되어서 로그에 찍히는것일까.. 답은 시스템에 존재하는 모든 jvm에 대한 전역 설정이 되어 있어서 그렇다. 이건 시스템 환경변수 설정에서 할 수 있다. 아무것도 설정하지 않았는데 Picked up JAVA_TOOL_OPTIONS 어쩌고 저쩌고 뜨는건 환경변수 세팅하는 곳(내컴퓨터 - 고급시스템 설정 - 고급 - 환경변수)에 가보면 답이..
application의 OSS version을 올리는데 특정 기능을 수행중에 위와 같은 Warning이 발생하였다. WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apache.poi.util.DocumentHelper (file:/C:/Users/User/.m2/repository/org/apache/poi/poi-ooxml/3.17/poi-ooxml-3.17.jar) to method com.sun.org.apache.xerces.internal.util.SecurityManager.setEntityExpansionLimit(int) WARNING: Please co..