Что еще можно использовать в Java в качестве альтернативы ServiceLoader?

Я ищу что-то вроде ServiceLoader, но это не зависит от файла SPI, где все реализации служб должны быть перечислены, а затем добавлены к пути какого-либо загрузчика классов, чтобы их можно было найти.

Допустим, есть приложение, которое имеет интерфейс и некоторые реализации службы. Какую инфраструктуру можно использовать, которая позволяет вам добавить новый JAR-файл в приложение, который содержит несколько новых реализаций, и они могут автоматически добавляться в путь классов всех загрузчиков классов внутри этого приложения? Все загрузчики классов здесь очень важны, потому что, если это приложение модуля NetBeans, платформа NetBeans совершает странную магию, и вы никогда не знаете, какой загрузчик классов используется каким потоком, с каким путем к классу и т. Д., если приложение не нужно перезапускать, чтобы найти новый JAR, но это не является важным требованием.

Я уже слышал об OSGi, но он кажется слишком большим, и мне нужен только 1% его возможностей.

Спасибо за любые предложения!

3 ответа

Решение

Самое простое решение - использовать JSPF.

Более "корпоративным" можно было бы использовать OSGi ... но в этом случае вам придется взглянуть на iPOJO, в качестве примера. Извините, я наконец перечитал ваше сообщение. Я думаю, что вопреки тому, что вы говорите, OSGi точно подходит для ваших нужд, так как он точно позволяет загружать сервисы и динамически подключаться.

И контейнеры IoC могут предоставлять, с некоторыми расширениями, такую ​​функцию (я думаю, что по крайней мере возможно использовать расширение Guice).

Похоже, что вы ищете Netbeans Lookup API - Ссылка

Более новая альтернатива (это старый вопрос) может быть sezpoz.

Это очень похоже на JDK ServiceLoader в том, что он использует META-INF поиск ресурсов, за исключением того, что ресурсы автоматически создаются процессором аннотаций. Таким образом, его аннотации очень тяжелые и обычно более безопасные по типу за счет последующей обработки. Его использует Хадсон / Дженкинс.

Я думаю, что Kohsuke был первым, кто предложил эту идею обработки аннотаций: http://metainf-services.kohsuke.org/

Другие вопросы по тегам