Ing. Pablo Almeida Haro Msc.
CREACION DEL PROYECTO
*Seleccionar file/new project
*Ingresar la ubicación del proyecto
*Seleccionar crear módulo ejb y web
*El Ide creará 3 proyectos
ENTITY CLASS
*Es una clase de java que normalmente representa a una tabla en la base de datos
*Posee la anotación @Entity la cual define a la clase como una entidad
*Los atributos de la clase representan a los campos de la tabla
*Las clases entidad deben poseer una clave primaria definida por la anotación @Id
*La anotación @GeneratedValue la estrategia de generación de la clave primaria
CREACION DE UN ENTITY CLASS
*Click derecho en el módulo EJB/new/other/persistence/entity class
*Ingresar el nombre de la clase, paquete, tipo de clave primaria y crear unidad de persistencia
*Seleccionar el proveedor de persistencia y el origen de datos. Dejar el nombre de la unidad de persistencia por defecto
*Se presentará el código por defecto para la clase. Adicionar los campos código y nombre como atributos de la clase:
private String codigo="";
private String nombre="";
*Para generar los elementos get y set. Colocar click derecho sobre el editor/insert code/getter and setter
*La clase quedaría como sigue a continuación:
ge pkg_ejb;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class clase_entidad implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String codigo="";
private String nombre="";
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.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 clase_entidad)) {
return false;
}
clase_entidad other = (clase_entidad) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "pkg_ejb.clase_entidad[ id=" + id + " ]";
}
}
*Guardar la clase
MESSAGE DRIVEN BEAN
*Recibe y procesa mensajes
*Para el uso de un message driven vean es necesario un JMS resource
CREACION DE UN MESSAGE DRIVEN BEAN
*Click derecho sobre el proyecto EJB/new/other/Enterprise java beans/Message driven vean
*Ingresar el nombre del ejb, seleccionar el paquete. En el botón add seleccionar el destino del proyecto
*La clase quedaría como sigue a continuación:
package pkg_ejb;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;
@MessageDriven(mappedName = "jms/clase_mensaje", activationConfig = {
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
})
public class clase_mensaje implements MessageListener {
public clase_mensaje() {
}
@Override
public void onMessage(Message message) {
}
}
*Cuando se haga un deploy de la aplicación automáticamente se creará un recurso JMS
*Reemplazar el código por lo que sigue a continuación:
package pkg_ejb;
import javax.annotation.Resource;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.ejb.MessageDrivenContext;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@MessageDriven(mappedName = "jms/clase_mensaje", activationConfig = {
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
})
public class clase_mensaje implements MessageListener {
public clase_mensaje()
{
}
@PersistenceContext(unitName = "prj_ejb-ejbPU")
private EntityManager em;
@Resource
private MessageDrivenContext mdc;
@Override
public void onMessage(Message message)
{
ObjectMessage msg = null;
try {
if (message instanceof ObjectMessage) {
msg = (ObjectMessage) message;
clase_entidad e = (clase_entidad) msg.getObject();
guardar(e);
}
} catch (JMSException e) {
e.printStackTrace();
mdc.setRollbackOnly();
} catch (Throwable te) {
te.printStackTrace();
}
}
public void guardar(Object object) {
em.persist(object);
}
}
CREACION DE UN SESSION FACADE
*Click derecho en el proyecto ejb/new/other/persistence/sesión bean for entity class
*Seleccionar la clase
*Seleccionar el paquete
CREACION DE LA CAPA WEB