Ответ 1
Я попытаюсь предоставить несколько возможных решений. Я потратил некоторое время на подготовку небольших PoC для проекта, над которым я работаю, поэтому позвольте надеяться, что варианты ниже релевантны.
Важное замечание: очень просто определить некоторую точку расширения, разрешить и найти доступные реализации. Есть много доступных решений, например, хороший и простой - JSPF
Ресурсы являются основной проблемой для WEB-приложений
OSGi
OSGi, не так уж плохо и может быть полезным. Это кажется тяжелым (и некоторые реализации тяжелы), но это цена стандартизированной платформы. Я бы предложил проверить Apache Felix. Его можно использовать в "легком" режиме. Кстати, он включает в себя веб-консоль, которая создается как свободно связанное приложение на основе плагинов, может быть полезно:
Некоторые примеры Расширение веб-консоли Apache Felix
Веб-консоль может быть расширена путем регистрации службы OSGi для интерфейс javax.servlet.Servlet с свойством службы felix.webconsole.label установлен на метку (последний сегмент URL-адреса) страница. Соответствующая услуга называется плагином веб-консоли или плагин для краткости.
Вы также можете проверить eie-manager, который является чистым и простым и использует OSGi для управления плагинами. Может быть хорошим примером для вас.
Пользовательская инфраструктура плагинов
Я бы предложил рассмотреть решение Jenkins/Hudson. Я бы сказал, что подключаемая система Jenkins довольно зрелая и надежная. Может быть использован как хороший пример.
Также проверьте Архитектура Hudson Plugin
Простое решение
Для моего проекта я создал слой абстракции плагина на основе JSPF с пользовательским преобразователем зависимостей.
ПЛЮСЫ:
- простой и маленький
- чистая концепция
- работает хорошо
МИНУСЫ:
- без правильного управления плагином может быть медленным (полный поиск в classpath)
- предоставляет очень простые функции.
- может потребоваться дополнительное внимание
Я бы предложил использовать JSPF, только если вам действительно нужна простота и вы хотите контролировать все. JPF предоставляет множество интересных функций из коробки, например:
Плагины могут быть "горячими" и даже отменены во время исполнение приложения. Что еще, зарегистрированные плагины могут быть активируется и деактивируется "на лету", сводя к минимуму ресурс времени выполнения использование.
Проблема заключается в том, что JPF мертв.
Предложение
Проведите некоторое время с Apache Felix. Он достаточно зрелый, поэтому ваши инвестиции времени могут окупить много.