Добрый день!
Жил был механизм подгрузки имплементаций одного интерфейса в пределах EARа, по классической схеме:
в текстовый файлик EAR/core.jar/META-INF/services/com.site.MyInterface записываются все реализации
в коде пишется ServiceLoader<MyInterface> loader = ServiceLoader.load(MyInterface .class)
Теперь EARов стало больше, у каждого есть своей перечень имплементаций, но не хочется в каждом дублировать MyInterface (и несколько сопутствующих классов), поэтому вынес общую часть из core.jar в отдельный separated.jar, который кладу в EAR/libs.
Но имплементации теперь не загружаются, т.е. ServiceLoader.load(MyInterface .class) пуст.
Что не так? Вся структура EARа осталась без изменений: по-прежнему есть файл EAR/core.jar/META-INF/services/com.site.MyInterface, все описанные в нём имплементации по-прежнему лежат в EAR/core.jar.
Есть подозрение в разных класспассах межде EAR/libs и EAR/core.jar, тогда как в даннам случае можно выйти из положения?