我的项目(JBoss MSC version 1.0.2.GA-redhat-2)的基本架构是这样的
(VWebProj) --- >compile dependency ---> service project (QServiceProj)
(QServiceProj) ---->compile dependency ---> proxy project(VProxyProj)
(VProxyProj) ---->compile dependency ---> Manager project(VQManagerProj)
经理项目(VQManagerProj)
我在管理器项目(VQManagerProj)中有一个管理器类,它扩展了一个 JDAO 类,而 JDAO 又实现了一个接口 VDAO
@Named("qManager")
@ApplicationScoped
public class QManager extends JDAO {...}
JDAO implements VDAO
代理项目 (VProxyProj)
我在代理项目(VProxyProj)中有一个代理类,它实现了一个接口 VProxy 并将管理器注入它
@Named("vProxyImpl")
@ApplicationScoped
public class VProxyImpl implements VProxy {
@Inject @Named("qManager")
private VDao vdao;
}
服务项目 (QServiceProj)
我在服务项目(QServiceProj)中有一个服务类,它扩展了一个抽象类
@Named
@ApplicationScoped
public class QService extends AbstractService {..}
在抽象类中,我注入了代理
public abstract class AbstractService{
@Inject @Named("vProxyImpl")
private static VProxy proxy;
}
并使用此代理对象,服务类调用管理器等
网络项目 (VWebProj)
现在我在注入服务类的 Web 项目(VWebProj)中有一个 servlet
@Inject
private QService qService;
问题是除了 qService 没有其他注入工作,即 QService 代理实例内部为空
但是,如果我像这样直接在 servlet 类中添加所有注入
@Inject @Named("qManager")
private VDao vdao;
@Inject @Named("vProxyImpl")
private static VProxy proxy;
它们都已初始化,但如果我通过 QService 它们为空
我已将 beans.xml 放入所有项目中,
提前感谢查理