Где разместить файл конфигурации ServiceLoader в веб-приложении

Я пишу веб-приложение в Eclipse.

Я пытаюсь использовать класс ServiceLoader для загрузки некоторых плагинов.

Документы для ServiceLoader говорят, что мне нужно поместить файл в META-INF/services.

Я поместил файл в папку WebContent/META-INF/service, но когда я запускаю тест JUnit через Eclipse, он не находит никаких плагинов.

Это правильное местоположение для файла?

Кроме того, как я могу получить больше информации об отладке из ServiceLoader, такой как папки, в которых он ищет файл?

1 ответ

Решение

META-INF/services должен находиться в корне файла jar или каталога ресурсов в пути к классам загрузчика классов, используемого для поиска плагинов.

Если у вас есть веб-приложение, то вы можете иметь структуру каталогов, например:

<webappname>/WEB-INF/classes/META-INF/services

Но идеальный способ - поместить его в файл jar вашего плагина. Например, если у вас есть плагин в комплекте WEB-INF/lib/myplugin.jarи ваш класс плагинов com.example.plugin.MyPlugin Тогда баночка должна иметь структуру:

myplugin.jar!/META-INF/services/com.example.plugin.MyPlugin

Сделав это, вы можете получить загрузчик сервисов, используя загрузчик классов вашего веб-приложения.

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