vc teria como mostrar a maneira q vc fez isso…pq o q acontece comigo é o seguinte…estou utilizando glassfish como container ok e NetBeans como IDE…se eu criar no meu EJB uma classebean comum com os meus getters e setters referente aos campos do banco de dados e depois passar essa classe para o SessionBean que chamo para gravar os dados e esse SessionBean envia a classebean para um metodo de um DAO (com JDBC puro mesmo) dá td ok, sem problemas…mas a partir do momento que utilizo como minha classebean (utilizo os getters e setters dela) a minha classe @Entity e depois passo essa classe para o meu SessionBean que está como o meu Facade e o meu metodo create (persist) nao funciona…hora ele dá falta das libs do toplink mas aí eu ja add as libs e comeca a dar erro dizendo q nao encontrou meu sesssionbean…é muito estranho…vc ja teve esse problema colega?
ah, detalhe…se eu trabalhar com interface local e fizer um teste com uma página jsf funciona…mas com interface remota e o client fora do container na funciona, se estiver utilizando JPAcomo disse acima.
vou postar os erros:
se eu nao tiver as libs do toplink no meu client:
WARNING: “IOP00810257: (MARSHAL) Could not load class oracle.toplink.essentials.exceptions.DatabaseException”
depois que coloco as libs no meu client o erro aparece (abaixo em negrito)…eu sei q alguem vai falar q nao esta achando meu banco ou algo do tipo mas é meio estranho pq no meu persistence.xml estou usando um datasource e esse datasource conectar pelo netbeans…e o mesmo erro acontece se eu utilizar com um exemplo em MySQL.
Exception in thread “main” javax.ejb.EJBException: nested exception is: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.RemoteException: null; nested exception is:
Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b04-fcs (04/11/2008))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Error in allocating a connection. Cause: org.firebirdsql.jdbc.FBDriver cannot be cast to javax.sql.DataSource
as classes:
package entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.Table;
@Entity
@Table(name = "TAB_MASTER")
@NamedQueries({})
public class TabMaster implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name = "IDMASTER", nullable = false)
private Integer idmaster;
@Column(name = "NOME", nullable = false)
private String nome;
@Column(name = "IDADE")
private Integer idade;
public TabMaster() {
}
public TabMaster(Integer idmaster) {
this.idmaster = idmaster;
}
public TabMaster(Integer idmaster, String nome) {
this.idmaster = idmaster;
this.nome = nome;
}
public Integer getIdmaster() {
return idmaster;
}
public void setIdmaster(Integer idmaster) {
this.idmaster = idmaster;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Integer getIdade() {
return idade;
}
public void setIdade(Integer idade) {
this.idade = idade;
}
@Override
public int hashCode() {
int hash = 0;
hash += (idmaster != null ? idmaster.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof TabMaster)) {
return false;
}
TabMaster other = (TabMaster) object;
if ((this.idmaster == null && other.idmaster != null) || (this.idmaster != null && !this.idmaster.equals(other.idmaster))) {
return false;
}
return true;
}
@Override
public String toString() {
return "entity.TabMaster[idmaster=" + idmaster + "]";
}
}
package session;
import entity.TabMaster;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Stateless
public class TabMasterFacade implements TabMasterFacadeRemote {
@PersistenceContext
private EntityManager em;
public void create(TabMaster tabMaster) {
em.persist(tabMaster);
}
public void edit(TabMaster tabMaster) {
em.merge(tabMaster);
}
public void remove(TabMaster tabMaster) {
em.remove(em.merge(tabMaster));
}
public TabMaster find(Object id) {
return em.find(entity.TabMaster.class, id);
}
public List<TabMaster> findAll() {
return em.createQuery("select object(o) from TabMaster as o").getResultList();
}
}
package session;
import entity.TabMaster;
import java.util.List;
import javax.ejb.Remote;
@Remote
public interface TabMasterFacadeRemote {
void create(TabMaster tabMaster);
void edit(TabMaster tabMaster);
void remove(TabMaster tabMaster);
TabMaster find(Object id);
List<TabMaster> findAll();
}
Client:
package eaclientejb;
import entity.TabMaster;
import java.io.FileInputStream;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
import session.TabMasterFacadeRemote;
public class Main {
public static void main(String[] args)throws Exception{
Context jndiContext = getInitialContext();
Object ref = jndiContext.lookup("session.TabMasterFacadeRemote");
TabMaster tabMaster = new TabMaster();
tabMaster.setNome("Thiago");
tabMaster.setIdade(24);
TabMasterFacadeRemote facade = (TabMasterFacadeRemote)
PortableRemoteObject.narrow(ref, TabMasterFacadeRemote.class);
facade.create(tabMaster);
}
public static Context getInitialContext() throws Exception {
Properties props = new Properties();
props.load(new FileInputStream("jndi.properties"));
return new InitialContext(props);
}
}
obrigado, abraços.