OSGI中的CDI - 它没有看到bean

时间:2014-04-04 05:16:48

标签: java java-ee dependency-injection glassfish osgi

我有两个OSGI包:
第一个包含:service,servlet,pojo
第二个包含:消费者(服务的)。

事实:
A)我通过CDI(@OSGiService)将服务(捆绑1)注入到消费者(捆绑2) - 一切正常。
B)我通过CDI将pojo注入servlet(手动使用beanManager.getBeans,beanManager.resolve) - 一切正常。
C)我通过CDI注入pojo(手动使用beanManager.getBeans,beanManager.resolve) - 错误 - 找不到bean。

我使用手动注入的原因是我无法使用@Inject并开始使用Google搜索。我找到了this

  

CDI允许注入非组件类,但实例   必须仍由CDI创建。您的激活器由OSGi实例化   框架和CDI无法进入该过程。您可以   以编程方式获取CDI注入管理器并请求   来自它的实例,而不是在主类中使用@Inject。

我认为(C)必须有效,因为实例是通过CDI创建的,但实际上并非如此。错误在哪里?

编辑:Glassfish4,焊接,apache felix

可以下载3个捆绑包的源代码(1个带接口的捆绑包)here。有两个servlet:
第一个可以访问/ testme1 / NewServlet1(包1)
第二个可以访问/ testme2 / NewServlet2(包2)

0 个答案:

没有答案