EJB de Sesion Remota (Parte 1)
El objetivo es crear un EJB de sesión remota y consumirlo mediante clases java
Estructura del proyecto:
Carga de EJB.jar en contenedor de Aplicaciones (glassfish5)
Llamada al EJB desde un cliente java usando un cliente local o especificando una ip
----------------------------------------
Persona.java
package mx.com.gm.sga.domain;
import java.io.Serializable;
public class Persona implements Serializable {
private static final long serialVersionUID = 1L;
private int idPersona;
private String nombre;
private String apePaterno;
private String apeMaterno;
private String email;
private String telefono;
public Persona() {
}
public Persona(int idPersona, String nombre, String apePaterno,
String apeMaterno, String email, String telefono) {
super();
this.idPersona = idPersona;
this.nombre = nombre;
this.apePaterno = apePaterno;
this.apeMaterno = apeMaterno;
this.email = email;
this.telefono = telefono;
}
public int getIdPersona() {
return idPersona;
}
public void setIdPersona(int idPersona) {
this.idPersona = idPersona;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApePaterno() {
return apePaterno;
}
public void setApePaterno(String apePaterno) {
this.apePaterno = apePaterno;
}
public String getApeMaterno() {
return apeMaterno;
}
public void setApeMaterno(String apeMaterno) {
this.apeMaterno = apeMaterno;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTelefono() {
return telefono;
}
public void setTelefono(String telefono) {
this.telefono = telefono;
}
@Override
public String toString() {
return "Persona [idPersona=" + idPersona + ", nombre=" + nombre
+ ", apePaterno=" + apePaterno + ", apeMaterno=" + apeMaterno
+ ", email=" + email + ", telefono=" + telefono + "]";
}
}
----------------------------------------
EJB PersonaServiceImpl @Stateless
package mx.com.gm.sga.servicio;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import mx.com.gm.sga.domain.Persona;
@Stateless
public class PersonaServiceImpl implements PersonaServiceRemote {
@Override
public List<Persona> listarPersonas() {
List<Persona> personas = new ArrayList<>();
personas.add(new Persona(1, "Juan", "Perez", "Suarez", "jperez@gmail.com", "55668798"));
personas.add(new Persona(2, "Martha", "Suarez", "Jimenez", "msuarez@mail.com", "566998811"));
return personas;
}
@Override
public Persona encontrarPersonaPorId(Persona persona) {
return null;
}
@Override
public Persona encontrarPersonaPorEmail(Persona persona) {
return null;
}
@Override
public void registrarPersona(Persona persona) {}
@Override
public void modificarPersona(Persona persona) {}
@Override
public void eliminarPersona(Persona persona) {}
}
----------------------------------------
PersonaServiceRemote @Remote
package mx.com.gm.sga.servicio;
import java.util.List;
import javax.ejb.Remote;
import mx.com.gm.sga.domain.Persona;
@Remote
public interface PersonaServiceRemote {
public List<Persona> listarPersonas();
public Persona encontrarPersonaPorId(Persona persona);
public Persona encontrarPersonaPorEmail(Persona persona);
public void registrarPersona(Persona persona);
public void modificarPersona(Persona persona);
public void eliminarPersona(Persona persona);
}
----------------------------------------
Cliente sin IP
package mx.com.gm.sga.cliente;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import mx.com.gm.sga.domain.Persona;
import mx.com.gm.sga.servicio.PersonaServiceRemote;
public class ClientePersonaService {
public static void main(String[] args) {
System.out.println("Iniciando llamada al EJB desde el cliente\n");
try {
Context jndi = new InitialContext();
PersonaServiceRemote personaService = (PersonaServiceRemote) jndi.lookup("java:global/sga-jee1/PersonaServiceImpl!mx.com.gm.sga.servicio.PersonaServiceRemote");
List<Persona> personas = personaService.listarPersonas();
for (Persona persona : personas) {
System.out.println(persona);
}
System.out.println("\nFin llamada al EJB desde el cliente");
} catch (NamingException e) {
e.printStackTrace();
}
}
}
----------------------------------------
Cliente conIP
package mx.com.gm.sga.cliente;
import java.util.List;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import mx.com.gm.sga.domain.Persona;
import mx.com.gm.sga.servicio.PersonaServiceRemote;
public class ClientePersonaServiceConIP {
public static void main(String[] args) {
System.out.println("Iniciando llamada al EJB desde el cliente\n");
try {
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
props.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
props.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
// optional. Default localhost. Aqui se cambia la IP del servidor donde esta Glassfish
props.setProperty("org.omg.CORBA.ORBInitialHost", "127.0.0.1");
// optional. Puerto por Default 3700. Solo se necesita cambiar si el puerto no es 3700.
//props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
Context jndi = new InitialContext(props);
PersonaServiceRemote personaService = (PersonaServiceRemote) jndi.lookup("java:global/sga-jee1/PersonaServiceImpl!mx.com.gm.sga.servicio.PersonaServiceRemote");
List<Persona> personas = personaService.listarPersonas();
for (Persona persona : personas) {
System.out.println(persona);
}
System.out.println("\nFin llamada al EJB desde el cliente");
} catch (NamingException e) {
e.printStackTrace();
}
}
}
No hay comentarios.