Pessoal estou tentando implementar um Listener para meu EntityBean Livro
e esta me aparecendo o seguinte erro no console;
WARN: Unsupported message received with header 0xffffffff
Exception in thread "main" java.lang.IllegalStateException: No EJB receiver available for handling [appName:fj31-loja-ear,modulename:fj31-loja-ejb3,distinctname:] combination for invocation context org.jboss.ejb.client.EJBClientInvocationContext@1e22ab57
at org.jboss.ejb.client.EJBClientContext.requireEJBReceiver(EJBClientContext.java:584)
at org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:119)
at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:181)
at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:136)
at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:121)
at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:104)
at $Proxy0.salva(Unknown Source)
at br.com.caelum.loja.client.gerenciado.ClienteGerenciador.main(ClienteGerenciador.java:29)
eis meu entity bean:
[code]package br.com.caelum.loja.entity;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import br.com.caelum.loja.listeners.LivroListener;
@Entity
@EntityListeners(LivroListener.class)
public class Livro implements Serializable {
/**
* representação da entidade livro do banco de dados
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private String nome;
private double preco;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
public void setPreco(double preco) {
this.preco = preco;
}
public double getPreco() {
return preco;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "Livro "+getNome();
}
}
[/code]
meu Listener:
[code]package br.com.caelum.loja.listeners;
import java.util.Date;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
public class LivroListener {
@Temporal(TemporalType.TIMESTAMP)
private Date dataAlteracao;
public Date getDataAlteracao() {
return dataAlteracao;
}
public void setDataAlteracao(Date dataAlteracao) {
this.dataAlteracao = dataAlteracao;
}
@PreUpdate
public void preAltera(){
System.out.println("Atualizando a data do Livro");
this.setDataAlteracao(new Date());
}
@PrePersist
public void prePersist(Object obj){
System.out.println("Avisa o bibliotecário que existe um novo Livro "+obj);
}
}
[/code]
e classe que faz a invocacao ( meu cliente)
[code]package br.com.caelum.loja.client.gerenciado;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import br.com.caelum.loja.entity.Livro;
import br.com.caelum.loja.session.GerenciadorLoja;
public class ClienteGerenciador {
/**
* @param args
* @throws NamingException
*/
public static void main(String[] args) throws NamingException {
InitialContext ic = new InitialContext();
GerenciadorLoja gerenciador = (GerenciadorLoja) ic.lookup
("ejb:fj31-loja-ear/fj31-loja-ejb3/GerenciadorLojaBean!br.com.caelum.loja.session.GerenciadorLoja");
// GerenciadorLoja gerenciador = (GerenciadorLoja)ctx.lookup(“fj31-loja-ear/GerenciadorLojaBean/remote”);
Livro livro;
for (int i = 0; i < 3; i++) {
livro = new Livro();
livro.setNome("Livros educacionais de GEOGRAFIA ed: "+i);
double valor = 5.00+i*2;
livro.setPreco(valor);
gerenciador.salva(livro);
System.out.println("Livro salvo na base de dados. Nome:"+livro.getNome());
}
}
}
[/code]
alguem poderia me ajudar me mostrando onde que estou errando?
Obrigado pessoal