Я создал связку осги из уже существующей войны.В приложении есть класс, который реализует весенний интерфейс ApplicationContextAware, затем он использует контекст для программного получения бинов (не знаю почему, но в конечном итоге это требует рефакторинга).Теперь приложение использует OsgiBundleXmlApplicationContext, но я полагаю, что при использовании этого метода существует проблема, из-за которой метод setApplicationContext не вызывается ни в каких классах, реализующих ApplicationContextAware, поэтому теперь контекст в этом классе всегда равен нулю.
В качестве обходного пути я реализовал BundleContextAware, чтобы я мог получить ссылку на опубликованный контекст и таким образом получить доступ к bean-компонентам.Это работает нормально, однако единственным компонентом в контексте является warDeployer (следует упомянуть, что я использую spring dm bundle spring-extender для развертывания войны).Пакет, представленный в контексте, является моим пакетом, поэтому я не понимаю, почему в контексте, который я получаю, нет ни одного из моих компонентов.Код, который я должен получить для контекста приложения: </p>
<p>ServiceReference ref = bundleContext.getServiceReference(ApplicationContext.class.getName());
applicationContext = (OsgiBundleXmlApplicationContext) bundleContext.getService(ref);
Я вижу в журналах, что большая часть моего контекста создается, поэтому я не могу понять, почему они не соответствуют контексту, который я получаю,
Может кто-нибудь посоветовать, что не так?Я понимаю, что этот подход немного хакерский, но он временный, пока не реорганизован существующий код.
Заранее спасибо.
Барри