【发布时间】:2015-08-13 07:33:11
【问题描述】:
我使用 javase 和解决方案 osgi (felix)+cdi(weld)+paxcdi。我有两个包 A 和 B。包 B 是一个 lib 包。
在捆绑包 A 中,我有一个类和一个包。
package com.example.firstpackage;
import com.example.secondpackage.Class2;
public class Class1{
@Inject
private Class2 class2;
}
在捆绑包 B 中,我有两个类和两个包
package com.example.secondpackage;
import com.example.thirdpackage.Class3;
public class Class2{
@Inject
private Class3 class3;
}
和
package com.example.thirdpackage;
public class Class3{
....
}
我安装并启动这两个包。
问题 - 用于在包 A 的类中注入的 pax(或焊接)仅扫描为包 A 中的类导入的那些包。在我的示例中 - CDI 用于在 Class1 中注入 Class2 将扫描包 B 的 com.example.secondpackage。但是,它会抛出异常,因为 Class2 需要 Class3 但不会扫描 com.example.thirdpackage 包 A(因为它没有导入!!!)。 com.example.thirdpackage 仅扫描包 B,但据我所知,cdi 的每个包都有自己的范围。如何解决?
【问题讨论】: