Ejb 3.0 Glassfish 2.X Netbeans 6.X

10
LABORATORIO EJB 3.0 GLASFISH V2.X Y NETBEANS 6.X Instructor : LEONARDO TORRES ALTEZ APIS : EJB 3.0 Tecnologias : RMI , JNDI , EJB , JMS Requisitos : Netbeans 6.x , Glassfish , JDK 1.6X EJERCICIOS EJB SESION STATELESS 1 Iniciar un proyecto EJB 2

description

Laboratorio usando EJB3.0 con GlassFish 2.x y Netbeans 6.x - Beans de session y JMS

Transcript of Ejb 3.0 Glassfish 2.X Netbeans 6.X

Page 1: Ejb 3.0 Glassfish 2.X Netbeans 6.X

LABORATORIO EJB 3.0 GLASFISH V2.X Y NETBEANS 6.X

Instructor : LEONARDO TORRES ALTEZ APIS : EJB 3.0 Tecnologias : RMI , JNDI , EJB , JMS Requisitos : Netbeans 6.x , Glassfish , JDK 1.6X

EJERCICIOS EJB SESION STATELESS 1 Iniciar un proyecto EJB

2

Page 2: Ejb 3.0 Glassfish 2.X Netbeans 6.X

3 Escoger Serv de App GlashFish

4 Nuevo Session Bean

5 Nombre : Miprimerejb

6 package cibertec;

import javax.ejb.Stateless; import javax.swing.JOptionPane; @Stateless(mappedName="alias_MiprimerejbBean" , description="ejb de prueba") public class MiprimerejbBean implements MiprimerejbLocal,MiprimerejbRemote{

Page 3: Ejb 3.0 Glassfish 2.X Netbeans 6.X

public void m1(String mensaje) { JOptionPane.showMessageDialog(null, "El mensaje recibido :" + mensaje); } }

7 Definir interfaz Remota package cibertec; import javax.ejb.Remote; @Remote public interface MiprimerejbRemote { public void m1(String mensaje); }

8 Definir interfaz Local package cibertec; import javax.ejb.Local; @Local public interface MiprimerejbLocal { public void m1(String mensaje); }

9 Clic derecho y Run

Page 4: Ejb 3.0 Glassfish 2.X Netbeans 6.X

10 Ahora crear la aplicación Cliente

11

12

Page 5: Ejb 3.0 Glassfish 2.X Netbeans 6.X

13 Copiar el paquete cibertec

14 Pegarlo en el otro proyecto

Cliente

15 Borrar las clases que no

usamos

16 Metodo Main public class Main {

Page 6: Ejb 3.0 Glassfish 2.X Netbeans 6.X

/** * @param args the command line arguments */ public static void main(String[] args) throws Exception{ // TODO code application logic here InitialContext ctx = new InitialContext(); MiprimerejbRemote ejb = (MiprimerejbRemote) ctx.lookup("alias_MiprimerejbBean"); ejb.m1("Hola Mundo"); } }

16 El metodo main anterior no funciona si queremos contectarnos a un Servidor de Apps externo

CONFIGURANDO SERV DE APPS PARA RECIBIR LLAMADAS REMOTAS 17

18 Usuario admin.

Password adminadmin

Page 7: Ejb 3.0 Glassfish 2.X Netbeans 6.X

19 Cambiar el metodo main import cibertec.MiprimerejbRemote; import javax.naming.Context; import javax.naming.InitialContext; public class Main { public static InitialContext getInitialContext() throws Exception { java.util.Hashtable prop= new java.util.Hashtable(); prop.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.enterprise.naming.SerialInitContextFactory"); prop.put("org.omg.CORBA.ORBInitialHost", "192.168.1.100"); // NOTE: IIOP is set on port 3701 but this works on port 3700 prop.put("org.omg.CORBA.ORBInitialPort", "1072"); return new InitialContext(prop); } public static void main(String[] args) throws Exception{ // TODO code application logic here InitialContext ctx = getInitialContext(); MiprimerejbRemote ejb = (MiprimerejbRemote) ctx.lookup("alias_MiprimerejbBean"); ejb.m1("Hola Mundo"); } }

20 Aumentemos metodos callback al EJB

@PostConstruct public void postcons() { System.out.println("poscons"); } @PreDestroy public void predes() { System.out.println("predes"); } @AroundInvoke public Object interceptor(InvocationContext ctx) throws Exception { System.out.println("interceptorr llamado"); return ctx.proceed(); }

21 Prueba la invocación desde el cliente. Para que sirve @PostConstruct ? Para que sirve @PreDestroy ? Para que sirve @AroundInvoke ? Que pasa si el metodo �interceptor� retorna una excepcion ¿?

Page 8: Ejb 3.0 Glassfish 2.X Netbeans 6.X

EJBS DE SESION STATEFULL

22

23 EJB session package cibertec;

import javax.ejb.Stateful; @Stateful(mappedName="alias_MiprimerejbconsesionBean") public class MiprimerejbconsesionBean implements MiprimerejbconsesionRemote, MiprimerejbconsesionLocal { int sumaTotal =0; public int m2(int suma) { sumaTotal = sumaTotal + suma; return sumaTotal; } }

24 Interfaz local package cibertec; import javax.ejb.Local; @Local public interface MiprimerejbconsesionLocal { public int m2(int suma); }

25 Interfaz remota package cibertec; import javax.ejb.Remote; @Remote public interface MiprimerejbconsesionRemote { public int m2(int suma); }

26 Llamada en el cliente MiprimerejbconsesionRemote ejb = (MiprimerejbconsesionRemote) ctx.lookup("alias_MiprimerejbconsesionBean"); System.out.println(ejb.m2(4)); System.out.println(ejb.m2(2)); System.out.println(ejb.m2(5));

EJBS DE JMS

Page 9: Ejb 3.0 Glassfish 2.X Netbeans 6.X

28

29

30

Page 10: Ejb 3.0 Glassfish 2.X Netbeans 6.X

31 package cibertec; import javax.ejb.ActivationConfigProperty; import javax.ejb.MessageDriven; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.TextMessage; @MessageDriven(mappedName = "jms/Nuevo", activationConfig = { @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"), @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue") }) public class NewMessageBean implements MessageListener { public NewMessageBean() { } public void onMessage(Message message) { TextMessage msg = null; try { if (message instanceof TextMessage) { msg = (TextMessage) message; System.out.println("A Message received in TMDB: " + msg.getText()); } else { System.out.println("Message of wrong type: " + message.getClass().getName()); } } catch (JMSException e) { e.printStackTrace(); } catch (Throwable te) { te.printStackTrace(); } } }

32 Cambiar en metodo main try { Context ctx = getInitialContext(); QueueConnectionFactory connectionFactory = (QueueConnectionFactory) ctx.lookup("jms/NuevoFactory"); Queue queue = (Queue) ctx.lookup("jms/Nuevo"); QueueConnection connection = connectionFactory.createQueueConnection(); QueueSession session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer messageProducer = session.createProducer(queue); TextMessage message = session.createTextMessage(); message.setText("enviandooooooooo "); messageProducer.send(message); } catch (Exception e) { e.printStackTrace(); }