Где разместить файл конфигурации 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
Сделав это, вы можете получить загрузчик сервисов, используя загрузчик классов вашего веб-приложения.