Создайте очень простой минималистичный контейнер Java-плагина

Я работаю над приложением, в котором мне нужно создать очень маленький и минимальный контейнер плагинов.

Ниже приведены вещи, которых я пытаюсь достичь.

  1. Приложение разделено на более мелкие плагины, упакованные в виде JAR-файлов.
  2. Плагин-контейнер должен получить их и загрузить все банки.
  3. Каждый плагин не должен мешать другим плагинам и должен работать сам по себе вместе со своими зависимыми библиотеками. В основном все плагины должны быть изолированы во время выполнения.

Я пытался использовать контейнер OSGI, но это усложняет задачу. Кроме того, многие сторонние библиотеки, несовместимые с OSGI, создают проблемы, на отладку которых уходит много времени. Также проверил Spring Boot, JPF и т. д. и не очень заинтересован. Поэтому задумался об использовании очень маленькой доморощенной платформы плагинов.

Я понятия не имею, как это сделать и с чего начать. Пожалуйста, кто-нибудь может указать мне правильное направление, где я могу получить подробную информацию об этом.

Заранее спасибо.


person Kumar Mullur    schedule 20.07.2018    source источник
comment
будет ли приложению нужен пользовательский интерфейс? Это будет веб-приложение? Или это будет какой-то демон?   -  person Leviand    schedule 20.07.2018
comment
Похоже на то, что вы могли бы реализовать с помощью Docker + Kubernetes или чего-то подобного. Не уверен, что именно вы хотите сделать, хотя tbh.   -  person Ben    schedule 20.07.2018
comment
Приложение не нуждается в пользовательском интерфейсе. Но все плагины должны иметь возможность взаимодействовать друг с другом. Контейнер должен иметь небольшой сервисный реестр.   -  person Kumar Mullur    schedule 20.07.2018
comment
Если ваша цель состоит в том, чтобы сделать все минималистичным для разработчика плагинов (но не возражаете против использования более сложной структуры в качестве платформы для плагинов), OSGI может быть хорошим вариантом. Например, несколько лет назад я использовал Apache Karaf для модульного веб-приложения — все, что нужно было сделать разработчику плагина, — это реализовать некоторые сервисные интерфейсы и поместить свой jar-файл с библиотеками (не OSGI) в папку, где Karaf автоматически запускает jar-файлы. как пакеты OSGI.   -  person kapex    schedule 20.07.2018


Ответы (1)


Если вы действительно хотите что-то минималистичное, взгляните на ServiceLoader. Вот руководство.

person bertilmuth    schedule 20.07.2018