EJB ClassCastException

2 respostas
C

Galera ta dando um erro no ManagedBean... alguém podem me ajudar ?

@Stateless
@Local(IDao.class)
public class DaoImpl<T> implements IDao<T> {

	@PersistenceContext(name="NOCP")
	private EntityManager entityManager ;

public List<T> pesquisar(T t) {
		
		try{
			
			Query query = entityManager.createQuery("from " + t.getClass().getName());
			return query.getResultList();
			
		}catch(Exception e){
			e.printStackTrace();
			return null ;
		}
			
	}
@Name("alertaHandler")
@Scope(ScopeType.SESSION)
public class AlertaHandler {

	private Alerta alerta ;

	private IDao<Defeito> daoDefeito ;
	
	@NotEmpty
	private String descricao ;
	
	@NotEmpty
	private String defeito ;
	
	private List<SelectItem> defeitos ;
	
	@PostConstruct
	public void initialize(){
		
		try {
			InitialContext initialContext = new InitialContext();
			daoDefeito = (IDao<Defeito>) initialContext.lookup("xnocp-ear/DaoImpl/local");
		} catch (NamingException e) {
			e.printStackTrace();
		}
		
		carregaDefeitos();
		
	}

	public void carregaDefeitos(){
		
		List<Defeito> listaDefeitos = daoDefeito.pesquisar(new Defeito());
		
		defeitos = new ArrayList<SelectItem>();
		
		for (int x = 0 ; x < listaDefeitos.size(); x++)
			defeitos.add(new SelectItem(listaDefeitos.get(x).getDefeitoPK().getCod_defeito(), listaDefeitos.get(x).getDes_defeito()));
		
	}

no for da esse erro :

Caused by: java.lang.ClassCastException: br.brasif.entity.Defeito cannot be cast to br.brasif.entity.Defeito
	at br.brasif.handler.AlertaHandler.carregaDefeitos(AlertaHandler.java:57)
	at br.brasif.handler.AlertaHandler.initialize(AlertaHandler.java:46)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
	at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:144)
	at org.jboss.seam.Component.callComponentMethod(Component.java:2249)
	at org.jboss.seam.Component.callPostConstructMethod(Component.java:2196)
	at org.jboss.seam.intercept.JavaBeanInterceptor$1.proceed(JavaBeanInterceptor.java:133)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocatio

2 Respostas

C

Galera resolvido mudei o EJB pra @Remote, e funcionou, só não entendi o pq… pq estão ambos rodando na mesma JVM… alguém sabe ?

A

Isso pode ocorrer devido o fato do seu Servidor de Aplicação usar um classloader proprio, o que faz com que a mesma classe possa estar carregada em 2 lugares ao mesmo tempo mas tenha uma identificação diferente em cada uma.

Criado 4 de janeiro de 2010
Ultima resposta 4 de jan. de 2010
Respostas 2
Participantes 2