I have two OSGI bundles:
The first contains: service, servlet, pojo
The second contains: consumer (of the service).
FACTS:
A) I inject service (bundle 1) to consumer (bundle 2) via CDI (@OSGiService) - everything
is OK.
B) I inject pojo to servlet via CDI (manually using
beanManager.getBeans,beanManager.resolve) - everything is OK.
C) I inject pojo to service via CDI (manually using
beanManager.getBeans,beanManager.resolve) - Error - can't locate the bean.
The reason why I use manual injection is that that I couldn't get it to work with
@Inject and started googling. And I found this
CDI allows injection into non-component classes, but the instances
must still be created by CDI. Your activator is instantiated by OSGi framework and CDI has
no way to hook into that process. You can programmatically get hold of the CDI injection
manager and request an instance from it instead of using @Inject in your main class.
I think that (C) must work, because instance is created via CDI but it doesn't.
Is this a bug? How can it be fixed?
--
Александр Свиридов