Extends BaseCDIBean com extends

Estou desenvolvendo um projeto utilizando JEE7 + Glassfish V4 +NetBeans 7.3.1 + JPA. Tenho uma classe com vários métodos que serão utilizados pela maioria dos MagedBeans. Estes MangedBeans extendem a classe BaseCDIBean, e esta classe extende a minha classe genérica. Defino assim as classes:

Os ManagedBeans:

 @ManagedBean
 @Named
 @SessionScoped
 public class ControllerUsuario extends BaseCDIBean<Usuario>

A BaseCDIBean:

public abstract class BaseCDIBean<T> extends Basico.ControllerGeral {

A classe ControllerGeral

public abstract class ControllerGeral implements java.io.Serializable {

Gostaria de uma ajuda pois quando vou construir o projeto aparece o seguinte ERRO:

Advertência: AS-CDI-005
Grave: Exception during lifecycle processing
org.glassfish.deployment.common.DeploymentException: CDI deployment failure:Exception List with 2 exceptions:
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001409 Ambiguous dependencies for type [ControllerAvantis] with qualifiers [@Default] at injection point [[BackedAnnotatedField] @Inject private Controller.Administracao.ControllerUsuario.controllerGeral]. Possible dependencies [[Managed Bean [class Controller.Administracao.ControllerUsuario] with qualifiers [@Default @Any @Named],org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:406)
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:325)
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:177)
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:208)
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:519)
at org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:505)
at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:480)
at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:536)
at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:216)
… … … …

Coloca o código completo das classes.

Henrique muito obrigado por me ajudar.
Abaixo trecho inicial das Classes:

BaseCDI Bean:

package Basico;

import java.text.MessageFormat;
import java.util.Enumeration;
import java.util.ResourceBundle;
import javax.faces.application.Application;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public abstract class BaseCDIBean extends Basico.ControllerGeral {

private static final long serialVersionUID = 1L;
private T selectedBean;
@PersistenceContext
protected EntityManager em;

public T getSelectedBean() {
    return selectedBean;
}

public void setSelectedBean(T selectedBean) {
    this.selectedBean = selectedBean;
}

Outros Métodos ....

ControllerGeral:

package Basico;

import Entidades.Administracao.Usuario;
import Entidades.Administracao.Empresa;

import Model.Administracao.ModelUsuario;
import Model.Administracao.ModelEmpresa;

import java.io.Serializable;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Date;
import java.util.Iterator;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.math.BigDecimal;
import java.net.InetAddress;
import java.net.UnknownHostException;
import javax.annotation.ManagedBean;
import javax.faces.application.FacesMessage;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpSession;
import javax.enterprise.context.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.ViewScoped;

import org.primefaces.context.RequestContext;

public abstract class ControllerGeral implements java.io.Serializable {

private static final long serialVersionUID = 1L;
private static SimpleDateFormat FORMATTER = new SimpleDateFormat("HH:mm:ss");

@Inject
private Model.Administracao.ModelEmpresa                    selectedEmpresa;
@Inject
private Model.Administracao.ModelUsuario                    selectedUsuario;
         
private Usuario                                             loggedUsuario;     
private Empresa                                             loggedEmpresa;
     
public ControllerAvantis() {
    setLoggedEmpresa     (new Empresa       ());
    setLoggedUsuario     (new Usuario       ());
}

Outros Métodos ....

ControllerUsuario:

package Basico;

import Entidades.Administracao.Usuario;
import Entidades.Administracao.Empresa;

import Model.Administracao.ModelUsuario;
import Model.Administracao.ModelEmpresa;

import java.io.Serializable;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Date;
import java.util.Iterator;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.math.BigDecimal;
import java.net.InetAddress;
import java.net.UnknownHostException;
import javax.annotation.ManagedBean;
import javax.faces.application.FacesMessage;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpSession;
import javax.enterprise.context.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.ViewScoped;

import org.primefaces.context.RequestContext;

public abstract class ControllerGeral implements java.io.Serializable {

private static final long serialVersionUID = 1L;
private static SimpleDateFormat FORMATTER = new SimpleDateFormat("HH:mm:ss");

@Inject
private Model.Administracao.ModelEmpresa                    selectedEmpresa;
@Inject
private Model.Administracao.ModelUsuario                    selectedUsuario;
         
private Usuario                                             loggedUsuario;     
private Empresa                                             loggedEmpresa;
     
public ControllerAvantis() {
    setLoggedEmpresa     (new Empresa       ());
    setLoggedUsuario     (new Usuario       ());
}

Outros Métodos ....

ModelUsuario:

package Model.Administracao;

import Basico.BasicSessionBean;
import Basico.Conexao;
import Entidades.Administracao.Usuario;
import Entidades.Administracao.Empresa;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Date;
import java.util.List;
import java.util.HashMap;
import java.util.Map;
import javax.ejb.*;
import javax.persistence.Query;

@Stateless
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.REQUIRED)

public class ModelUsuario extends BasicSessionBean {

private String  jpqlCount  = " "  ;

private String  query      = " "  ;
private Integer idRegistro = null ;
Connection        conn;
PreparedStatement stmt;

public Usuario getById(Integer IdUsuario) {
    return getPojo(Usuario.class,IdUsuario);
}

public Usuario getByCodigo(Integer CodEmpresa, String Identidade) {
    return getPojo(Usuario.class,
          "SELECT usuario FROM Usuario usuario" +
          " WHERE usuario.CodEmpresa                = ?1" +
          "   AND usuario.Identidade                = ?2" ,CodEmpresa,Identidade);
}

Outros Métodos ....

Você colocou o ControllerGeral duas vezes no lugar do ControllerUsuario.

Ups… Falha nossa !

ControllerGeral:

package Basico;

import Entidades.Administracao.Usuario;
import Entidades.Administracao.Empresa;

import Model.Administracao.ModelUsuario;
import Model.Administracao.ModelEmpresa;

import java.io.Serializable;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Date;
import java.util.Iterator;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.math.BigDecimal;
import java.net.InetAddress;
import java.net.UnknownHostException;
import javax.annotation.ManagedBean;
import javax.faces.application.FacesMessage;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpSession;
import javax.enterprise.context.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.ViewScoped;

import org.primefaces.context.RequestContext;

public abstract class ControllerGeral implements java.io.Serializable {

private static final long serialVersionUID = 1L;
private static SimpleDateFormat FORMATTER = new SimpleDateFormat("HH:mm:ss");

@Inject
private Model.Administracao.ModelEmpresa                    selectedEmpresa;
@Inject
private Model.Administracao.ModelUsuario                    selectedUsuario;
         
private Usuario                                             loggedUsuario;     
private Empresa                                             loggedEmpresa;
     
public ControllerGeral() {
    setLoggedEmpresa     (new Empresa       ());
    setLoggedUsuario     (new Usuario       ());
}

Outros Métodos ....

ControllerUsuario:

package Controller.Administracao;

import Basico.BaseCDIBean;
import Basico.ControllerGeral;
import Entidades.Administracao.Usuario;
import Entidades.Administracao.Programa;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import javax.faces.bean.ManagedBean;
import javax.enterprise.context.SessionScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import org.primefaces.context.RequestContext;
import org.primefaces.event.SelectEvent;
import org.primefaces.event.UnselectEvent;
import org.primefaces.event.TabChangeEvent;
import org.primefaces.model.SelectableDataModel;

@ManagedBean
@Named
@SessionScoped
public class ControllerUsuario extends BaseCDIBean {

private static final long serialVersionUID = 8L;

@Inject
private ModelUsuario                                        bean;
     
private List<Usuario>                                       list;
private Usuario                                             loggedRegistro                = null;


public ControllerUsuario() {
    setSelectedBean(new Usuario());
}

Outros Métodos ...