Buenas a todos, les cuento.. tengo una gran duda/problema respecto a j2ee, estoy haciendo un ejercicio para ir entendiendo bien las funcionalidades de j2ee y sus componentes.
Primero, tengo desarrollada una entidad (Entity) la cual tiene 3 campos
package cl.eft.bo.profesor;
import java.io.Serializable;
import java.math.BigInteger;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Profesor implements Serializable {
private static final long serialVersionUID = 1L;
@Basic(optional = false)
@Column(name = "SALARIO")
private BigInteger salario;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
private int id;
@Column(name = "NOMBRE",nullable = false)
private String nombre;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
@Override
public int hashCode() {
int hash = 0;
hash += (int) id;
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 Profesor)) {
return false;
}
Profesor other = (Profesor) object;
if (this.id != other.id) {
return false;
}
return true;
}
@Override
public String toString() {
return "Profesor{" + "id=" + id + ", nombre=" + nombre + ", salario=" + salario + '}';
}
public Profesor() {
}
public BigInteger getSalario() {
return salario;
}
public void setSalario(BigInteger salario) {
this.salario = salario;
}
}
luego en otro package del mismo project tengo el dao de este mismo
package cl.rft.dao.profesor;
import cl.eft.bo.profesor.Profesor;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.persistence.EntityManager;
public class ProfesorDAO {
private EntityManager em;
public ProfesorDAO() {
}
public EntityManager getEntityManager() {
try {
Context initCtx = new InitialContext();
em = (EntityManager) initCtx.lookup("java:comp/env/persistence/eeft");
} catch (NamingException ex) {
ex.printStackTrace();
}
return em;
}
public void addProfesor(Profesor profe)
{
getEntityManager().persist(em);
}
}
y en otro package tengo el persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="eeft" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/efthr</jta-data-source>
<class>cl.eft.bo.profesor.Profesor</class>
<shared-cache-mode>NONE</shared-cache-mode>
<properties>
<property name="eclipselink.logging.logger" value="DefaultLogger">
<property name="eclipselink.logging.level.sql" value="FINEST">
<property name="eclipselink.logging.parameters" value="true">
<property name="eclipselink.jdbc.uppercase-columns" value="true">
<property name="eclipselink.weaving" value="false">
</properties>
</persistence-unit>
</persistence>
en weblogic esta configurado el data source efthr y funciona.
en otro proyecto creo un ejb stateless
package cl.eft.business.profesor;
import cl.eft.bo.profesor.Profesor;
import cl.rft.dao.profesor.ProfesorDAO;
import javax.ejb.Stateless;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceContextType;
@Stateless(mappedName = "eft/ejb/Profesor")
@PersistenceContext(unitName = "eeft",name = "persistence/eeft")
public class ProfesorBean implements ProfesorRemote,ProfesorLocal{
@Override
public void ingresar(Profesor profe) {
new ProfesorDAO().addProfesor(profe);
System.out.println("Agregado");
}
}
en el mismo package están creadas las interfaces remotas y locales respectivamente.
y hasta ahí en temas de compilación todo ok, pero aquí empiezan mis dudas. trate de deployar el ejb pero me dice que no encuentra el unit name en persistence.xml y que no encuentra ninguno, leí y leí y lo que encontré fue que tenia que crear un EAR agregando el ejb y que eso deployara, pude hacerlo pero no se como probar si realmente funciona.