在Glassfish Java EE应用程序上部署时,何处放置共享库.so用于JNI本机调用

Ran*_*num 4 java java-native-interface native-methods glassfish java-ee

我有一个运行Java EE 6的Glassfish 3.1.1 Web应用程序.我的一个类具有本机库依赖项.我正在使用JNI来使用这种原生方法.该过程的一部分涉及创建共享库.so文件.在我的一个Java类中,将有一个System.Loadlibrary("library"); 调用引用该library.so文件.

我的问题是,我应该在哪里放置此共享库以及它引用的本机代码,以便在Glassfish上访问和使用此JNI功能.

我需要调用几个C++程序,这些程序可以在Glassfish托管的机器上的任何位置移动.我应该把它们放在domain1/ext文件夹中吗?将它们作为本机库添加到构建路径中的jar.这是怎么做到的?

Gar*_*all 8

使用以下Glassfish命令设置本机库所在的路径:

asadmin set server.java-config.native-library-path-prefix=$NATIVE_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)

也可以通过管理控制台设置本机库位置.如果您希望灵活地移动/重命名库,则可以使用符号链接.

通过Eclipse构建路径添加本机库有什么好处?

JVM需要知道本机库路径.如果从Eclipse启动JVM(例如使用本机库进行单元测试),则需要在Eclipse中配置路径.但是,如果从Glassfish启动JVM(使用Eclipse Glassfish Adapter),则需要配置Glassfish本身.