Где разместить разделяемую библиотеку .so для собственных вызовов JNI при развертывании в Java-приложении EE Glassfish - PullRequest
4 голосов
/ 21 января 2012

У меня запущено веб-приложение Glassfish 3.1.1 для Java EE 6.один из моих классов имеет родную библиотечную зависимость.Я использую JNI, чтобы использовать этот нативный метод.Частью этого процесса является создание общей библиотеки .so файла.В одном из моих классов Java будет System.Loadlibrary ("библиотека");вызов, который ссылается на этот файл library.so.

Мои вопросы: куда мне поместить эту общую библиотеку, а также собственный код, на который она ссылается, для доступа и использования этой функциональности JNI на Glassfish.

Мне нужно будет позвонить нескольким программам на C ++, которые можно переместить в любое место на компьютере, на котором размещен Glassfish.Должен ли я положить их в папку domain1 / ext?добавьте их как нативную библиотеку в jar в пути сборки.Как это сделать?

Ответы [ 2 ]

8 голосов
/ 21 января 2012

Используйте следующую команду Glassfish, чтобы указать путь к расположению ваших собственных библиотек:

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

Также можно установить расположение собственной библиотеки через консоль администратора.Если вам нужна гибкость при перемещении / переименовании библиотек, вы можете использовать символические ссылки.

В чем преимущество добавления нативной библиотеки через путь сборки Eclipse?

JVM должна знать собственный путь к библиотеке.Если вы запускаете JVM из Eclipse (например, модульное тестирование с собственной библиотекой), вам нужно будет настроить путь в Eclipse.Однако, если вы запускаете JVM из Glassfish (используя адаптер Eclipse Glassfish), необходимо настроить сам Glassfish.

0 голосов
/ 21 января 2012

Когда я использую JNI Wrapped DLL на сервере под управлением Windows, поместите DLL в

    C:/Windows/System32

Вы можете попробовать разместить .so на машине linux на

   /usr/lib64/

просто попытка.

...