CJEE B Ejercicio 03 SeguridadJavaEE ClienteEJB
CJEE B Ejercicio 03 SeguridadJavaEE ClienteEJB
CJEE B Ejercicio 03 SeguridadJavaEE ClienteEJB
Ubaldo Acosta
www.globalmentoring.com.mx
•El objetivo del ejercicio es acceder desde el cliente EJB al EJB del proyecto sg-jee-web. A
continuación se muestra el resultado (los datos pueden variar).
www.globalmentoring.com.mx
Este es el Diagrama de Clases del Ejercicio, donde se pueden observar la Arquitectura de nuestro Sistema:
Cliente
EJB (Local) Local
Remoto
Cliente
EJB (Remoto)
www.globalmentoring.com.mx
Creamos el siguiente proyecto ClienteEJBSeguridad :
www.globalmentoring.com.mx
Creamos el siguiente proyecto ClienteEJBSeguridad:
www.globalmentoring.com.mx
Creamos el siguiente proyecto ClienteEJBSeguridad:
www.globalmentoring.com.mx
Archivo pom.xml: Dar click para ir al código
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-
4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>mx.com.gm.sga</groupId>
<artifactId>ClienteEJBSeguridad</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.glassfish.main.appclient</groupId>
<artifactId>gf-client</artifactId>
<version>5.0</version>
</dependency>
</dependencies>
</project>
www.globalmentoring.com.mx
Hacemos clean & build para en caso necesario descargar las librerías del proyecto vía Maven:
www.globalmentoring.com.mx
Agregamos un archivo de configuración llamado login.conf a nivel raíz de la aplicación. Esto es
necesario para poder hacer login vía el cliente EJB:
www.globalmentoring.com.mx
Agregamos un archivo de configuración llamado login.conf a nivel raíz de la aplicación. Esto es
necesario para poder hacer login vía el cliente EJB:
www.globalmentoring.com.mx
Agregamos un archivo de configuración llamado login.conf a nivel raíz de la aplicación. Esto es
necesario para poder hacer login vía el cliente EJB:
www.globalmentoring.com.mx
Si vemos el tabulador de Files, podemos observar que el archivo login.conf se ha creado
correctamente. Este archivo no se visualizará en el tabulador de Projects, solo en este
tabulador de Files:
www.globalmentoring.com.mx
Archivo login.config: Dar click para ir al código
default {
com.sun.enterprise.security.auth.login.ClientPasswordLoginModule required;
};
www.globalmentoring.com.mx
Agregamos las clases Java que utilizaremos en el cliente EJB. Solo agregamos lo esencial
para que se reconozcan los tipos o clases Java que utilizaremos: Creamos la clase
Persona.java
www.globalmentoring.com.mx
Creamos la clase Persona.java
www.globalmentoring.com.mx
Archivo Persona.java: Dar click para ir al código
package mx.com.gm.sga.domain;
import java.io.Serializable;
public Persona() {
}
www.globalmentoring.com.mx
Archivo Persona.java: Dar click para ir al código
public Persona(String nombre, String apePaterno, String apeMaterno,
String email, String telefono) {
this.nombre = nombre;
this.apellidoPaterno = apePaterno;
this.apellidoMaterno = apeMaterno;
this.email = email;
this.telefono = telefono;
}
}
return idPersona;
www.globalmentoring.com.mx
Archivo Persona.java: Dar click para ir al código
public void setIdPersona(Integer idPersona) {
this.idPersona = idPersona;
}
@Override
public String toString() {
return "Persona{" + "idPersona=" + idPersona + ", nombre=" + nombre + ", apellidoPaterno=" + apellidoPaterno + ",
apellidoMaterno=" + apellidoMaterno + ", email=" + email + ", telefono=" + telefono + '}';
}
}
www.globalmentoring.com.mx
Creamos la clase PersonaServiceRemote.java:
www.globalmentoring.com.mx
Creamos la clase PersonaServiceRemote.java:
www.globalmentoring.com.mx
Archivo PersonaServiceRemote.java: Dar click para ir al código
package mx.com.gm.sga.servicio;
import java.util.List;
import mx.com.gm.sga.domain.Persona;
www.globalmentoring.com.mx
Creamos la clase ClientePersonaService.java:
www.globalmentoring.com.mx
Creamos la clase ClientePersonaService.java:
www.globalmentoring.com.mx
Archivo ClientePersonaService.java: Dar click para ir al código
package prueba;
import com.sun.enterprise.security.ee.auth.login.ProgrammaticLogin;
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;
www.globalmentoring.com.mx
Ejecutamos la clase ClientePersonaService.java:
www.globalmentoring.com.mx
Podemos observar el resultado (los datos pueden variar) de ejecutar el listadoPersonas del
EJB, como hemos visto el código ya ha agregado las credenciales de un usuario válido. Nota:
La aplicación de sga-jee-web ya debe estar desplegada y funcionando en Glassfish, ya que de
lo contrario no se podrá ejecutar la llamada al servidor:
www.globalmentoring.com.mx
Creamos la clase ClientePersonaServiceConIP.java:
www.globalmentoring.com.mx
Creamos la clase ClientePersonaServiceConIP.java:
www.globalmentoring.com.mx
Archivo ClientePersonaServiceConIP.java: Dar click para ir al código
package prueba;
import com.sun.enterprise.security.ee.auth.login.ProgrammaticLogin;
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;
www.globalmentoring.com.mx
Archivo ClientePersonaServiceConIP.java: Dar click para ir al código
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-jee-web/PersonaServiceImpl!mx.com.gm.sga.servicio.PersonaServiceRemote");
www.globalmentoring.com.mx
Ejecutamos la clase ClientePersonaServiceConIP.java:
www.globalmentoring.com.mx
Podemos observar el resultado (los datos pueden variar) de ejecutar el listadoPersonas del
EJB desde un cliente con código para acceder de manera remota (desde otra IP), como
hemos visto el código ya ha agregado las credenciales de un usuario válido. Nota: La
aplicación de sga-jee-web ya debe estar desplegada y funcionando en Glassfish, ya que de lo
contrario no se podrá ejecutar la llamada al servidor:
www.globalmentoring.com.mx
Con este ejercicio hemos creado el cliente para agregar el usuario y
password y así poder acceder al EJB que ya tiene seguridad del lado del
servidor.
www.globalmentoring.com.mx
Por: Ing. Ubaldo Acosta
www.globalmentoring.com.mx