En este tutorial vamos a crear un cliente Java que realice una llamada a un método de un EJB mediante protocolo RMI avanzado de Java.
EJB sin estado desplegado en un servidor remoto
Para ello partimos de un EJB desplegado en un servidor remoto y que está ‘publicado’ con el nombre JNDI es ‘MiPrimerEJB‘.
Este el código de la interfaz del EJB publicado:
Java |copy code |?
1 package negocio;2 import javax.ejb.Remote;3 4 @Remote
5 public interface ServicioSaludosRemote {6 String saludar(String nombre);7 String despedir(String nombre);8 }
9
Y estos son los métodos que implementan la interfaz de dicho EJB. Como podemos ver, utilizamos la anotación ‘@Stateless‘ para indicar que se trata de un EJB sin estado:
Java |copy code |?
01 package negocio;02 03 import javax.ejb.Stateless;04 05 @Stateless06 public class ServicioSaludos implements ServicioSaludosRemote {07 08 public ServicioSaludos() {09 System.out.println("Constructor por defecto");10 }
11 12 @Override13 public String saludar(String nombre) {14 return "Saludando a "+nombre;15 }
16 17 @Override18 public String despedir(String nombre) {19 return "Adios "+nombre;20 }
21 22 }
23
Cliente java para conectarse al EJB remoto mediante RMI avanzado
Ahora vamos a crear el cliente Java que será el que se comunique con el EJB remoto. Para ello creamos una clase en Java muy simple que sólo contiene el método ‘main’ que será el que lance la petición al EJB:
Java |copy code |?
01 package apps;02 03 import java.util.Hashtable;04 05 import javax.naming.Context;06 import javax.naming.InitialContext;07 import javax.naming.NamingException;08 09 import negocio.ServicioSaludosRemote;10 11 public class ClienteSaludos {12 13 // Lanzará excepción si no existe un servicio de nombres con la configuración
14 public static void main(String[] args) throws NamingException {15 16 // Mapa con las propiedades de conexión
17 Hashtable propiedades = new Hashtable();18 19 // URL del servicio de nombres
20 // 't3'> es el protocolo RMI avanzado de weblogic
21 propiedades.put(Context.PROVIDER_URL, "t3://miServidorRemoto:8080");22 23 // DRIVER de conexión al servidor de nombres
24 propiedades.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");25 26 // USUARIO con el que se conecta al servidor
27 propiedades.put(Context.SECURITY_PRINCIPAL, "weblogic12c");28 29 // CONTRASEÑA de acceso al servidor
30 propiedades.put(Context.SECURITY_CREDENTIALS, "weblogic12c");31 32 // Conectar con el servicio de nombre remoto
33 InitialContext ic = new InitialContext(propiedades);34 35 // Buscar un EJB con el nombre que se indica, hay que hacer casting a la clase que corresponde
36 ServicioSaludosRemote saludosRemote = (ServicioSaludosRemote) ic.lookup("MiPrimerEJB");37 38 // Llamadas a los métodos del EJB remoto, mostrando la salida por pantalla
39 System.out.println(saludosRemote.saludar("Usuario"));40 System.out.println(saludosRemote.despedir("Usuario"));41 }
42 43 }
44
Si no sabes el nombre de un EJB, en la consola de RMI del servidor Weblogic podrás consultar el nombre JNDI bajo el que está publicado un EJB:
Para acceder a esta consola de administración del árbol de JNDI del servidor weblogic debes acceder a:
1 http://localhost:7001/console/consolejndi.portal
En esta imagen aparece recuadrado el nombre que se debe introducir al hacer el ‘lookup‘.
Con este pequeño tutorial habremos sido capaces de crear un cliente Java que se comunique mediante RMI avanzado con un EJB que se encuentra en un servidor remoto.
Deja tu comentario