Библиотеки, использующие Typesafe Config, обычно зависят от одной большой конфигурации, объединенной из /reference.conf
файлов в пути к классам.
Например, Spray ожидает найти свои разделы конфигурации в экземпляре Typesafe Config ActorSystem
, но они недоступны, если пакет, в котором я создаю ActorSystem
, не импортирует пакеты Spray. В моем приложении такого импорта нет, потому что у меня есть специальный пакет, единственной целью которого является публикация ActorSystem
как сервиса. Другие пакеты используют это, и некоторые из них зависят от Spray, но не от пакета, который просто экспортирует AS.
Это привело меня к общей проблеме, когда Typesafe Config находит /reference.conf
файлов в среде OSGi. Я знаю, что BundleDelegatingClassLoader
akka-osgi
ищет ресурсы в цепочке зависимостей пакетов, поэтому я подумал, почему бы просто не просмотреть все пакеты в системе, чтобы соответствовать идиологии слияния Typesafe Config?
Как правильно работать с Typesafe Config в OSGi? Я представлю свое общее решение в ответе, но я не эксперт OSGi и хотел бы услышать, если это неправильно и почему, и как лучше всего справиться с слиянием.