[Java] Загрузка dll
Но тогда смысл redeploy пропадает.
А метод статический или нет?
Например, поместить MyClass на уровень сервера.Класс запакован в некий trali_vali.ear. В кач-ве сервера используется JBoss.
Но тогда смысл redeploy пропадает.
На уровень сервера - это куда?
Неужели действительно нет возможностей перезагрузить библиотеку?..
К тому же мне не вполне понятно, почему метод не находится, хотя библиотека уже подгружена (хоть и другим объектом ClassLoader).....
На уровень сервера - это куда?в lib?
просто в JBoss нестандартная модель загрузки классов, которая нарушает некоторые конвенции.
Unload library - это слишком OS-specific.
Предлагают, например, такой вариант:
> In all of Sun's jdk1.4 runtimes, native libraries are
> unloaded when (actually shortly after) the ClassLoader
> that loaded them is garbage collected.
>
> In theory you have no control over when the garbage
> collection happens, but in practice calling
> System.gc and System.runFinalization several times
> will force it.
Cм. также остальное.
это прочти, может чего полезного найдешь для своего случая.
Еще Оставить комментарий
Nikitin
Существует некий native метод MyClass.getOrigin к примеру. Для него подгружаю написанную на C++ dll-ку mydll.dll с помощью System.loadLibrary("mydll"); в статической инициализации класса.Все работает нормально, а проблема состоит в следующем:
Все это крутится на сервере приложения, приходится частенько делать redeploy приложения, при этом сервер, видимо, загружая класс вновь, говорит, что библиотека уже загружена, однако метод getOrigin уже не вызывается (UnsatisfiedLinkError).
Инструментов для проверки загруженных динамических библиотек и выгрузки их не нашел.
как выйти из этой ситуации?