Bom dia .
Galera estou tendo um erro na minha aplicação cliente para acessar um EJB no JBoss.
minha entidade
package br.com.persistence.entity;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@Table(name="Usuario",schema="ATHENA")
@NamedQueries({
@NamedQuery(name="Usuario.findAll",query="SELECT u FROM Usuario u"),
@NamedQuery(name="Usuario.findById",query="SELECT u FROM Usuario u WHERE id = :id"),
@NamedQuery(name="Usuario.findByName",query="SELECT u FROM Usuario u WHERE name like :name")
})
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@SequenceGenerator(name="SEQ_USUARIO", sequenceName="SEQ_GERAL",allocationSize =1,initialValue=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_USUARIO")
private long id;
private long expired;
private String login;
private String nome;
private String senha;
//bi-directional many-to-one association to Grupo
@ManyToOne
@JoinColumn(name="GRUPO")
private Grupo grupo;
public Usuario() {
}
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
public long getExpired() {
return this.expired;
}
public void setExpired(long expired) {
this.expired = expired;
}
public String getLogin() {
return this.login;
}
public void setLogin(String login) {
this.login = login;
}
public String getNome() {
return this.nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSenha() {
return this.senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public Grupo getgrupo() {
return this.grupo;
}
public void setgrupo(Grupo grupo) {
this.grupo = grupo;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (int) (id ^ (id >>> 32));
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Usuario other = (Usuario) obj;
if (id != other.id)
return false;
return true;
}
public String toString(){
return id+" - "+nome+" Login: "+login;
}
}
A interface
package br.com.enterprise.eao;
import java.util.List;
import javax.ejb.Local;
import br.com.persistence.entity.Usuario;
@Local
public interface UsuarioEao {
public Usuario persist(Usuario usuario);
public void remove(Usuario usuario);
public Usuario findById(long id);
public List<Usuario> findAll();
public List<Usuario> findByName(String name);
public boolean login(Usuario usuario);
}
a implementação dessa interface
package br.com.enterprise.eao.impl;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import br.com.enterprise.eao.UsuarioEao;
import br.com.persistence.entity.Usuario;
@Stateless
public class UsuarioEaoImpl implements UsuarioEao{
@PersistenceContext(unitName="AthenaPersistence")
protected EntityManager entityManager;
@SuppressWarnings("unchecked")
public List<Usuario> findAll() {
Query query = entityManager.createNamedQuery("Usuario.findAll");
List<Usuario> usuarios = query.getResultList();
return usuarios;
}
public Usuario findById(long id) {
Query query = entityManager.createNamedQuery("Usuario.findById");
Usuario usuario = (Usuario)query.setParameter("id",id).getSingleResult();
return usuario;
}
@SuppressWarnings("unchecked")
public List<Usuario> findByName(String name) {
Query query = entityManager.createNamedQuery("Usuario.findByName");
List<Usuario> usuarios = query. setParameter("name",name).getResultList();
return usuarios;
}
public boolean login(Usuario usuario) {
Usuario user = (Usuario)entityManager.find(Usuario.class,usuario);
if (user.equals(usuario)){
return true;
}
return false;
}
public Usuario persist(Usuario usuario) {
entityManager.persist(usuario);
return usuario;
}
public void remove(Usuario usuario) {
entityManager.remove(usuario);
}
}
acessando via cliente
import javax.naming.InitialContext;
import javax.naming.NamingException;
import br.com.enterprise.eao.UsuarioEao;
public class Execute {
/**
* @param args
*/
public static void main(String[] args) {
try {
UsuarioEao usuarioEao = (UsuarioEao)new InitialContext().lookup("UsuarioEaoImpl");
System.out.println(usuarioEao);
}catch (NamingException e) {
e.printStackTrace();
}
}
}
meu jndi.properties
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost:1099
e o erro que aparece
Exception in thread “main” java.lang.ClassCastException: org.jnp.interfaces.NamingContext cannot be cast to br.com.enterprise.eao.UsuarioEao
at Execute.main(Execute.java:18)
ele não está conseguindo fazer o Cast.
isso que eu não entendo
no deploy no Jboss, o meu Ejb sobe certinho, já verifiquei no web-console
alguém sabe oque acontece