entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Ayuda con J2EE JPA EntityManager y WebLogic

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.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta