YOUNG-JIN.OH
웃어라. 온 세상이 너와 함께 웃을 것이다.
울어라. 너 혼자만 울게 될 것이다.

Spring Boot 기동시 Tomcat Native Library를 찾지 못할 때

참고 사이트:

Spring Boot를 실행할 때 보면 Tomcat 이 기동되면서 Tomcat Native library를 찾을 수 없다는 내용이 표시가 됩니다. “The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path”

이 라이브러리는 Tomcat 기동시 네트워크 관련해서 옵션사항인데 적용되면 다음과 같이 동작을 하게 된다고 합니다.

  • Non-blocking I/O for Keep-Alive requests (between requests)
  • Uses OpenSSL for TLS/SSL capabilities (if supported by linked APR library)
  • FIPS 140-2 support for TLS/SSL (if supported by linked OpenSSL library)

로컬 개발환경에서는 굳이 설정할 필요는 없지만, Tomcat 을 운영환경에 배포하려고 할 때는 사용하는 것이 좋을 것 같습니다. 여기서는 저 메시지가 눈에 거슬리므로 표시가 되지 않도록 설정을 해보도록 합니다.

MacOS 환경에서 만들어지는 모든 Tomcat 으로 구동되는 웹 프로젝트에서 인식이 되도록 하려면 라이브러리를 java.library.path 인 아래 디렉토리 중 하나에 넣어주는 것이 좋을 것 같습니다.

  • Users/youngjin.oh/Library/Java/Extensions
  • /Library/Java/Extensions
  • /Network/Library/Java/Extensions
  • /System/Library/Java/Extensions

$ brew install tomcat-native

CATALINA_OPTS=”$CATALINA_OPTS -Djava.library.path=/usr/local/opt/tomcat-native/lib”


$ sudo ln -s /usr/local/opt/tomcat-native/lib/libtcnative-1.* /Library/Java/Extensions

brew 로 tomcat-native 를 설치한 뒤에 라이브러리를 /Library/Java/Extensions 으로 심볼릭 링크를 걸어주고 프로젝트를 재기동 해봅니다.

최신 Tomcat 9.0.16 기준으로는 APR 1.2.21 로 설치하는 걸 권장한다고 나옵니다. 그대로 사용할려면 작업을 끝내고, 1.2.21 로 설치하려면 소스파일에서 컴파일을 해야 하므로 brew로 설치했던 내용은 모두 삭제를 합니다.

$ brew remove tomcat tomcat-native
$ sudo rm /Library/Java/Extensions/libtcnative-1.*

소스는 C언어로 작성되어 있고 아래 순서대로 컴파일 작업을 진행합니다.

# 사전설치
$ brew install wget apr openssl

# 설치할 곳으로 이동
$ cd /Library/Java/Extensions

# 소스 다운로드
$ sudo wget http://mirror.apache-kr.org/tomcat/tomcat-connectors/native/1.2.21/source/tomcat-native-1.2.21-src.tar.gz

# 압축해제
$ sudo tar -xvf tomcat-native-1.2.21-src.tar.gz

# 소스 이동
$ cd tomcat-native-1.2.21-src/native

# configure 설정 –with-apr, -with-java-home, –with-ssl 패스지정
$ sudo ./configure –with-apr=/usr/local/opt/apr/bin –with-java-home=/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home –with-ssl=/usr/local/Cellar/openssl/1.0.2q

#컴파일
$ sudo make install


# 라이브러리 생성이 완료되면 심볼릭 링크를 걸어줍니다.
$ sudo ln -s /usr/local/apr/lib/libtcnative-1.* /Library/Java/Extensions

# 작업파일 삭제
$ sudo rm -rf tomcat-native-1.2.21-src*

프로젝트를 재기동하면 최신버전의 Tomcat Native 가 제대로 동작되고 있음을 알 수 있습니다. 배포 운영환경이 Linux인 경우에도 동일한 방법으로 설치가 가능합니다.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.