Использование SIGAR API внутри файла WAR

Я наткнулся на Sigar API от Hyperic (http://www.hyperic.com/products/sigar), который представляет собой API системной информации и отчетов для Java. Он активно использует JNI для сбора данных, а отдельная версия содержит файлы .SO и .DLL в папке /lib.

Он отлично работает в автономном режиме, но я хочу использовать эту библиотеку внутри WAR. Можно ли это сделать без указания пути к библиотеке в «-Djava.library.path» при запуске сервера? Я хочу иметь возможность упаковать его в файл WAR и развернуть на работающем сервере.

Спасибо.


person Yohan Liyanage    schedule 27.11.2011    source источник
comment
Неа; так работает JNI. Если вы не сообщите приложению, как найти библиотеки DLL, оно не сможет понять это самостоятельно.   -  person duffymo    schedule 27.11.2011


Ответы (2)


У меня это работает со следующей настройкой.

Я скопировал все файлы содержимого (SO/DLL) в папку lib файла WAR. Затем я развернул его в JBoss, и он работал без какой-либо пользовательской настройки системных свойств.

Это конкретно для JBoss? или я могу ожидать такого поведения на любом сервере, совместимом с J2EE?

person Yohan Liyanage    schedule 27.11.2011
comment
Не могли бы вы пояснить: вы поместили все файлы .so в WEB-INF/lib .war? Спасибо - person alfonx; 01.04.2012
comment
@alfonx Да. Я скопировал все .so, .dll, .dylib вместе с JAR-файлом sigar в WEB-INF/lib. - person Yohan Liyanage; 24.06.2012

Я работал над Sigar для отдельной Java-программы, где мне требовался доступ к информации о хосте. Мне пришлось использовать переменную java.library.path для загрузки файлов JNI. Этот путь используется Sigar API внутри для загрузки библиотек. Я настроил этот путь с помощью maven. Вы можете обратиться здесь, если это поможет.

Спасибо.

person arviarya    schedule 22.09.2013