Нативная библиотека для загрузчика tomcat

Я оснастил Java.lang.System настраиваемым методом, который вызывает некоторый нативный код. Я использую bootclasspath, чтобы найти этот класс с помощью загрузочного ремешка Java, и помещаю собственную библиотеку в путь библиотеки jdk. Это прекрасно работает для обычного Java-приложения, но я бы хотел, чтобы оно работало под управлением tomcat.

Я поместил библиотеку как в библиотеку jdk, так и в общую / библиотеку tomcat, но, похоже, она не работает. Я получаю сообщение об ошибке UnsatisfiedLinkError: Native Library уже загружена в другой загрузчик классов. Не уверен, что tomcat использует собственный загрузчик начальной загрузки.

В любом случае, как мне получить собственную библиотеку для класса начальной загрузки (rt.jar) для загрузки с помощью tomcat?


person akula1001    schedule 07.11.2011    source источник


Ответы (1)


Переменная окружения JAVA_OPTS может использоваться для указания любых параметров JVM. Используйте те же параметры, которые вы использовали для обычных java-приложений в этой переменной среды, и Tomcat должен их подобрать. Держите нативные библиотеки подальше от пути Tomcat, чтобы они не подхватывались более одного раза.

person prunge    schedule 07.11.2011
comment
«Держите родные библиотеки подальше от пути Tomcat»… Не могли бы вы уточнить это? Кроме того, я не уверен, загружается ли библиотека даже один раз, потому что вызов метода для нативного также завершается с ошибкой UnsatisfiedLinkError. - person akula1001; 08.11.2011
comment
@ manu1001 manu1001 Я больше думал о JAR-файлах, чем о собственных библиотеках, когда держался подальше от каталогов Tomcat. Какие параметры JVM вы используете для загрузки собственной библиотеки с автономными приложениями Java? Установка системного свойства java.library.path через JAVA_HOME с параметром -Djava.library.path=‹путь к вашим родным библиотекам› может работать. - person prunge; 08.11.2011
comment
установка java.library.path не будет работать, потому что эта библиотека загружается классом начальной загрузки. java использует sun.boot.class.path для загрузки нативов для классов начальной загрузки; но это невозможно установить из-за этой проблемы. поместил библиотеку в уже определенный boot.class.path, который работал для автономной Java, но не для tomcat. - person akula1001; 08.11.2011