У меня есть консольное приложение Java, которое я пишу, и я хочу, чтобы люди могли писать плагины для него, а затем распространять эти плагины в виде jar-файлов.Я хочу, чтобы пользователи могли поместить плагин (jar) в папку «plugins», перезапустить приложение и загрузить и запустить плагин.Я не хочу, чтобы пользователю приходилось указывать класс / метод для выполнения для плагина или чего-то подобного.
Я могу загрузить банки с подстановочным символом classpath в каталог "plugins", но мне нужнокаким-то образом эти плагины могут зарегистрироваться в приложении, запустив метод register()
, который каждый плагин должен где-то определить.Как плагин (jar) может указать, где (пакет и класс) определен его метод register()
, так что мое приложение будет знать, как его вызвать?
Я понимаю, что OSGi может это сделать, но это довольно малоприложение, и я предпочел бы не использовать OSGi, если существует более простое решение.
Справочная информация:
Эти плагины регистрируют события из приложения, которое они хотят обрабатывать.Пользователь сможет отключить обработку определенных событий для каждого плагина, поэтому конфигурация для этих плагинов будет сохранена в базе данных приложения.Когда плагин регистрируется сам, приложение проверит базу данных, чтобы увидеть, существует ли конфигурация для этого плагина, и если нет, то создаст новую конфигурацию по умолчанию для него в базе данных.