Re: ServiceLoader в дебрях classloaders
От: Blazkowicz Россия  
Дата: 09.07.13 12:31
Оценка:
Здравствуйте, mkind, Вы писали:

M>в текстовый файлик EAR/core.jar/META-INF/services/com.site.MyInterface записываются все реализации

M>в коде пишется ServiceLoader<MyInterface> loader = ServiceLoader.load(MyInterface .class)

M>Теперь EARов стало больше, у каждого есть своей перечень имплементаций, но не хочется в каждом дублировать MyInterface (и несколько сопутствующих классов), поэтому вынес общую часть из core.jar в отдельный separated.jar, который кладу в EAR/libs.

M>Но имплементации теперь не загружаются, т.е. ServiceLoader.load(MyInterface .class) пуст.

M>Что не так? Вся структура EARа осталась без изменений: по-прежнему есть файл EAR/core.jar/META-INF/services/com.site.MyInterface, все описанные в нём имплементации по-прежнему лежат в EAR/core.jar.

M>Есть подозрение в разных класспассах межде EAR/libs и EAR/core.jar, тогда как в даннам случае можно выйти из положения?

Что-то я не понял структуру. EAR был один. Стало много. Но почему-то общий код находится в EAR/libs, т.е. внутри конкретного EAR, а не где-то в общих либах сервера.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.