리눅스 WAS JNI 설정 (Tomcat, Jeus, WebLogic, Websphere)

리눅스에서 자바로 개발된 애플리케이션을 구동할 때 별도 라이브러리를 가져와서 사용하는 경우가 있습니다. 이때 라이브러리 모듈이 C/C++로 개발되었다면 자바 코드로 C/C++ 코드를 호출해서 사용해야 합니다. C/C++ 코드는 네이티브 코드라고도 부릅니다. 자바 코드로 네이티브 코드를 호출하는 것. 이것이 JNI(Java Native Interface)의 개념입니다.
 
예를 들어 보겠습니다. 두 개의 정수의 합계를 반환하는 C 함수가 있습니다. 함수명은 add()입니다. 자바로 add() 함수를 호출하는 아래와 같은 형식으로 사용할 수 있습니다.

public class MyMath {
    static {
        System.loadLibrary("mymath"); // 네이티브 코드를 포함한 공유 라이브러리 호출
    }

    public static native int add(int x, int y);

    public static void main(String[] args) {
        int result = add(3, 4);
        System.out.println("3 + 4 = " + result);
    }
}

위 예시에서 호출한 mymath는 mymath.so처럼 공유 라이브러리로 WAS에 존재합니다.

JNI 설정

WAS는 각각 공유 라이브러리를 참조하는 경로를 가지고 있습니다. 국내에서 자주 사용되는 WAS 별로 JNI 설정을 기준으로 차이는 아래의 표와 같습니다. 차이를 확인하는 기준은 LD_LIBRARY_PATH와 CLASSPATH 설정 두 가지입니다.
 

LD_LIBRARY_PATH란?

LD_LIBRARY_PATH는 런타임 시 공유 라이브러리의 검색 경로를 지정하기 위해 유닉스 계열 운영체제에서 사용되는 환경 변수입니다. 위 예시에서 언급한 mymath.so 같은 공유 라이브러리의 위치를 WAS가 찾을 수 있게 표시하는 역할을 합니다.

LD_LIBRARY_PATH=/lib/mymath.so

 

Java CLASSPATH란?

CLASSPATH는 자바 프로그램에 필요한 클래스 및 기타 리소스 파일을 찾을 위치를 JVM(Java Virtual Machine)에 알려주는 환경 변수입니다. 예를 들어, MyMath.java 또는 MyMath.jar 같은 클래스 파일의 위치를 명시하는 변수입니다.

CLASSPATH=lib/MyMath.java

 
[JNI 설정 요약]

 제조사LD_LIBRARY_PATHCLASSPATH
Tomcat아파치 소프트웨어 재단startup.sh 파일에 설정Tomcat/common/lib 경로에 파일 위치 시 설정 불필요
Jeus티맥스소프트lib/system 경로에 파일 위치 시 설정 불필요lib/system 경로에 파일 위치 시 설정 불필요
WebLogic오라클startWebLogic.sh 파일에 설정startWebLogic.sh 파일에 설정
WebsphereIBMbin 경로에 파일 위치 시 설정 불필요lib 경로에 파일 위치 시 설정 불필요

 

반응형

댓글

Designed by JB FACTORY