Можно ли использовать Java 9 JPMS с SPI для динамической загрузки плагинов во время выполнения? - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть проект Java 8, который требует использования плагинов.Это файлы jar, которые могут быть помещены в определенный каталог и, если они есть, могут использоваться основным приложением.

План состоит в том, чтобы добиться этого с помощью Java 8 SPI, как подробно описано здесь: https://docs.oracle.com/javase/tutorial/ext/basics/spi.html

Пока все хорошо.Тем не менее, я хотел бы иметь возможность выбирать новые плагины, помещенные в этот каталог во время выполнения, без перезапуска приложения.Приведенная выше ссылка (написана для Java 8) гласит:

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

Некоторые изменения в этом механизме внесены в Java 9 JPMS, включаяне нужно (источник: https://dzone.com/articles/java-platform-module-systemjpms-migration-guide-fo) создавать файлы в META-INF / services для рекламы реализаций.

Так что вопрос: позволит ли переход на Java 9 сканировать каталог моих плагинов во время выполнения исделать какие-нибудь новые доступными? Есть ли другая альтернатива для достижения этой цели в Java 8? Я знаю OSGI, но это кажется излишним для моих целей.

Большое спасибо за любые ответы / идеи, которые у вас могут возникнуть !!

...