2010-07-06 3 views
1

Я создал Java-апплет, который зависит от некоторых сторонних либерри, а также от DLL, которая вызывается через JNI. Очевидно, что они не будут установлены на клиентских компьютерах. Есть ли все равно, чтобы упаковать эти сторонние либерри и внешние DLL в JAR Applet, чтобы он мог запускаться любым клиентом с базовой установкой Java?Развертывание Java-апплета с зависимостями сторонних разработчиков

ответ

1

Использование JNI в веб-приложении - рецепт изжоги, особенно в Windows.

  • Вы, очевидно, не можете развернуть DLL в своем WAR-файле, и, возможно, потребуется предварительный запуск отдельного установщика развертывателем.
  • Вы должны убедиться, что ваш java.library.path настроен правильно, что обычно делается с помощью настроек на сервере приложений, а не с помощью чего-либо, развертываемого в WAR-файле.
  • Способ, которым JNI связывает родной класс с библиотекой, приведет к головным болям загрузчика класса, если вы попытаетесь запустить более одного экземпляра этого веб-приложения. Один из способов обойти это - переместить содержащий JAR-файл в общий загрузчик классов (например, в общую папку Tomcat), но у этого есть свои собственные сложности.
+0

Спасибо, подумал, что это не стоит головной боли. Выключить, чтобы найти другое решение. –

1

Есть в любом случае, чтобы упаковать этот третьих партии libriaries

В Eclipse, в свойствах проекта Java (правая кнопка мыши), я могу сделать:

Export... => Export as Runnable JAR 

Тогда я скажу, чтобы упаковать мои зависимости jar в экспортированный JAR. Экспортированный JAR будет иметь все свои зависимости, упакованные в него.

alt text http://www.ubuntu-pics.de/bild/97131/selection_016_mg6IDm.png

+0

Это не будет обрабатывать собственные библиотеки, необходимые для поддержки родных классов JNI. –

+0

Никогда не говорил так и не стоил головной боли. Я урезал цитату из ОП, чтобы отразить это. – bakkal

1

Я не эксперт по этой теме, но являются рабочие решения всех этих проблем. Они могут дать вам головную боль, но некоторые вещи могут быть сделаны только такими способами (и я уверен, что ваша проблема с Entrust CSP является одной из них).

Вы можете посмотреть OpenSign от OpenOCES-project. Магия происходит в org.openoces.opensign.client.applet.bootstrap.

Я также считаю, что JNLPAppletLauncher решает ту же проблему, но у меня нет опыта работы с i.