簡體   English   中英

在Glassfish Java EE應用程序上部署時,何處放置共享庫.so用於JNI本機調用

[英]Where to place a shared library .so for JNI native calls when deploying on Glassfish Java EE application

我有一個運行Java EE 6的Glassfish 3.1.1 Web應用程序。 我的一個類具有本機庫依賴項。 我正在使用JNI來使用這種原生方法。 該過程的一部分涉及創建共享庫.so文件。 在我的一個Java類中,將有一個System.Loadlibrary(“library”); 調用引用該library.so文件。

我的問題是,我應該在哪里放置此共享庫以及它引用的本機代碼,以便在Glassfish上訪問和使用此JNI功能。

我需要調用幾個C ++程序,這些程序可以在Glassfish托管的機器上的任何位置移動。 我應該把它們放在domain1 / ext文件夾中嗎? 將它們作為本機庫添加到構建路徑中的jar。 這是怎么做到的?

使用以下Glassfish命令設置本機庫所在的路徑:

asadmin set server.java-config.native-library-path-prefix=$NATIVE_LIBRARY_PATH

也可以通過管理控制台設置本機庫位置。 如果您希望靈活地移動/重命名庫,則可以使用符號鏈接。

通過Eclipse構建路徑添加本機庫有什么好處?

JVM需要知道本機庫路徑。 如果從Eclipse啟動JVM(例如使用本機庫進行單元測試),則需要在Eclipse中配置路徑。 但是,如果從Glassfish啟動JVM(使用Eclipse Glassfish Adapter),則需要配置Glassfish本身。

當我在基於Windows的服務器中使用JNI Wrapped DLL時,請將DLL放入

    C:/Windows/System32

您可以嘗試在Linux機器上放置.so

   /usr/lib64/

試一試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM