Extends BaseCDIBean com extends

4 respostas
java
M

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 [<a class="mention" href="/u/default">@Default</a>] at injection point [[BackedAnnotatedField] @Inject private Controller.Administracao.ControllerUsuario.controllerGeral]. Possible dependencies [[Managed Bean [class Controller.Administracao.ControllerUsuario] with qualifiers [<a class="mention" href="/u/default">@Default</a> <a class="mention" href="/u/any">@Any</a> <a class="mention" href="/u/named">@Named</a>],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)

   

4 Respostas

H

Coloca o código completo das classes.

M

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 ....
H

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

M

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 ...
Criado 29 de janeiro de 2017
Ultima resposta 30 de jan. de 2017
Respostas 4
Participantes 2