2012-07-10 4 views
1

Я создаю веб-приложение Java, используя CDI. Моя война включает в себя различные файлы Jar, которые являются источниками бобов (включая файл META-INF/beans.xml). Мои бобы автоматически обнаруживаются при работе внутри контейнера Java EE, такого как JBoss (в настоящее время я использую JBoss AS 7.1.1). Это очень хорошо работает.Позднее обнаружение бобин с использованием CDI

Я хочу иметь возможность расширять веб-приложение, в идеале, позволяя ему загружать классы из файлов Jar, хранящихся в настраиваемом месте (поэтому в местоположении, указанном системным свойством). Это тоже нормально, поскольку я могу использовать ClassLoader для решения классов и ресурсов. То, что мне не хватает, - это возможность иметь CDI для сканирования этих внешних файлов Jar и включать их компоненты.

Это позволит моему приложению размещать подключаемые модули, включая новые ресурсы REST. Я не возражаю, если мне пришлось перезапустить приложение для его сбора классов и ресурсов, содержащихся в этих внешних файлах Jar.

Я не вижу возможности достичь этого. Это даже то, что нужно предпринять в такой среде?

ответ

1

Я не вижу возможности достичь этого.

Вы на самом деле есть два варианта:

  1. Используйте CDI extension mechanism для работы с фасолью/боб-архивов в время запуска и изменять их так, как вы хотите. Взгляните на примеры, приведенные в документации, это должно дать вам начало.
  2. Работа с BeanManager по адресу время исполнения. Посмотрите на this подобный вопрос.
+0

Спасибо. Я думаю, что вижу потенциальный подход. Я создал расширение CDI. Это @Observes событие AfterBeanDiscovery и отвечает путем поиска плагинов и регистрации их с событием. Это делает плагины доступными через BeanMananager. Мне нужно посмотреть дальше, чтобы узнать, могу ли я зарегистрировать ресурсы REST, которые могут существовать в подключаемом модуле, но для базовых функций, похоже, решает некоторые из моих проблем. – William

Смежные вопросы