私のプロジェクト (JBoss MSC バージョン 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 を拡張し、インターフェイス VDAO を実装します。
@Named("qManager")
@ApplicationScoped
public class QManager extends JDAO {...}
JDAO implements VDAO
プロキシ プロジェクト (VProxyProj)
Proxy Project (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;
}
このプロキシ オブジェクトを使用して、サービス クラスはマネージャなどを呼び出します。
Web プロジェクト (VWebProj)
これで、サービス クラスが挿入された Web プロジェクト (VWebProj) 内にサーブレットができました。
@Inject
private QService qService;
問題は、qService を除いて、他のインジェクションが機能しないことです。つまり、QService プロキシ インスタンス内が null です。
ただし、このようにすべてのインジェクションをサーブレット クラスに直接追加すると
@Inject @Named("qManager")
private VDao vdao;
@Inject @Named("vProxyImpl")
private static VProxy proxy;
それらはすべて初期化されていますが、QService を経由すると null になります
すべてのプロジェクトに beans.xml を配置しました。
前もって感謝します チャーリー