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

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

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

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

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

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

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

1 Ответ

9 голосов
/ 06 августа 2010

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

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

...