Веб-приложение Java - LoadLibrary при запуске приложения - PullRequest
1 голос
/ 07 октября 2011

Я разработал веб-приложение с Java-сервлетами.Он работает на сервере GlassFish (на платформе Windows).Теперь мне нужно загрузить DLL с JNI.Я использую System.loadLibrary (DLL), чтобы сделать это.Сейчас я ищу способ загрузить эту библиотеку при запуске приложения, чтобы ее можно было использовать со всеми экземплярами приложения.Мои вопросы сейчас:

  • Как мне определить такое событие запуска, куда его поместить и что настроить, чтобы оно было выполнено
  • Как у менячтобы реализовать это событие запуска, что все экземпляры WebApp могут после использования загруженной библиотеки и как я могу использовать его из моих существующих сервлетов

Спасибо за вашу помощь.

Томас

1 Ответ

2 голосов
/ 07 октября 2011

Вы можете реализовать ServletContextListener и после получения события contextInitialized вы можете загрузить dll в этой точке.

Если вы используете Spring (даже лучше), вы можете загрузить dll статически (при запуске Spring), а затем использовать Spring, чтобы получить «обработчик» для dll.

Обратите внимание, что если вы непосредственно загружаете dll из вашего веб-приложения и dll падает, ваше приложение также будет аварийно завершать работу.

Возможно, вам следует рассмотреть (хотя это требует дополнительных усилий) загрузку через другой процесс и использовать, например, RMI, чтобы взаимодействовать с dll. Таким образом, если dll падает, ваше приложение все еще остается в целости.

...