次のように、スーパークラスに Bean を注入しようとしています。
public class DsmCrudDaoProcuder
{
@Produces
public static DsmCrudDao produceDao(InjectionPoint injectionPoint) {
return ((CRUDSessionBase)injectionPoint.getBean()).createCrudDao();
}
}
public abstract class CRUDSessionBase{
@Resource public SessionContext context;
protected static Log log = LogFactory.getLog(CRUDSessionBase.class.getName());
protected static Log logger = LogFactory.getLog(CRUDSessionBase.class.getName());
@Inject @New
DsmCrudDao dao;
/**
* Get the concrete DAO
*
* @return
*/
protected abstract DsmCrudDao createCrudDao();
....
}
これは展開時に失敗します:
WELD-001409 注入ポイント [[field] @Inject com.windriver.dsm.ejb.CRUDSessionBase.dao] での修飾子 [@Default] を持つ型 [DsmCrudDao] のあいまいな依存関係。可能な依存関係 [[Managed Bean [class com.windriver.dsm.labmanagement.dao.TECodeCoverageDao] with qualifiers [@Any @Default]]、Managed Bean [class com.windriver.dsm.enterprise.dao.BinaryGroupDao] with qualifiers [@Any] @Default]、修飾子付きマネージド Bean [class com.windriver.dsm.labmanagement.dao.TeBlockCoverageDao] [@Any @Default]、修飾子付きマネージド Bean [class com.windriver.dsm.enterprise.dao.DeviceSupportedServiceDao] [@Any @デフォルト]、 ....
エラーのリストにある Bean はすべて の派生クラスですDsmCrudDao
。
これを機能させる方法はありますか?