2010-04-28 3 views

답변

1

예, 일반적인 Java 응용 프로그램에서와 동일한 방법으로 JNI/System#loadLibrary()을 사용할 수 있습니다. 이 작업은 클라이언트 측에서 이 아닌이 서버 측에서 실행된다는 것을 알아야합니다. 클라이언트 측에서 이것을 실행하려는 의도라면 applet 또는 webstart application의 맛으로 제공해야합니다.

1

먼저 응용 프로그램 서버는 System # loadLibrary가 작동하도록 응용 프로그램 클래스 로더에서 기본 라이브러리를로드 할 수 있어야합니다. 즉, ClassLoader # findLibrary를 구현해야합니다. 그렇지 않으면 System # load를 사용해야하며 어떻게 든 dll의 절대 경로를 알아야합니다.

둘째, J2EE 응용 프로그램에 기본 라이브러리를 배치하면 JNI가 여러 클래스 로더가 동일한 기본 라이브러리를로드하는 기능을 제한하기 때문에 응용 프로그램을 다시 시작하는 기능에 영향을줍니다. 응용 프로그램의 첫 번째 인스턴스에서 응용 프로그램 클래스 로더가 누수로 인해 또는 GC가 예측 가능하지 않기 때문에 응용 프로그램을 다시 시작하려고 시도하기 전에 가비지 수집되지 않으면 응용 프로그램의 두 번째 인스턴스가 실패 할 때 작동하지 않을 가능성이 높습니다. 네이티브 라이브러리를로드하십시오. 이러한 이유로 네이티브 라이브러리와이를 사용하는 클래스는 서버 전체 클래스 로더 또는 적어도 다시로드하지 않도록 보장 된 하나 이상의 클래스 로더에 배치하는 것이 좋습니다.

1

필요한 것은 Java Native Interface입니다.

JNI Basics - 1을 (를) 통해 매우 쉽게 안내 할 수 있습니다. 깊이있는 "article"(또는 더 나은 책)은 The JavaTM Native Interface Programmer 's Guide and Specification입니다. 또 다른 유용한 자습서는 IBM developerworks의 을 사용할 수 있습니다. JNI를 사용한 Java 프로그래밍 (등록해야하지만 무료이며 보람 있습니다).

관련 문제