ejb 3.0 glassfish 2.x netbeans 6.x
DESCRIPTION
Laboratorio usando EJB3.0 con GlassFish 2.x y Netbeans 6.x - Beans de session y JMSTRANSCRIPT
![Page 1: Ejb 3.0 Glassfish 2.X Netbeans 6.X](https://reader035.vdocuments.us/reader035/viewer/2022080210/556a5e13d8b42a7a138b51ed/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022080210/556a5e13d8b42a7a138b51ed/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022080210/556a5e13d8b42a7a138b51ed/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022080210/556a5e13d8b42a7a138b51ed/html5/thumbnails/4.jpg)
10 Ahora crear la aplicación Cliente
11
12
![Page 5: Ejb 3.0 Glassfish 2.X Netbeans 6.X](https://reader035.vdocuments.us/reader035/viewer/2022080210/556a5e13d8b42a7a138b51ed/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022080210/556a5e13d8b42a7a138b51ed/html5/thumbnails/6.jpg)
/** * @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](https://reader035.vdocuments.us/reader035/viewer/2022080210/556a5e13d8b42a7a138b51ed/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022080210/556a5e13d8b42a7a138b51ed/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022080210/556a5e13d8b42a7a138b51ed/html5/thumbnails/9.jpg)
28
29
30
![Page 10: Ejb 3.0 Glassfish 2.X Netbeans 6.X](https://reader035.vdocuments.us/reader035/viewer/2022080210/556a5e13d8b42a7a138b51ed/html5/thumbnails/10.jpg)
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(); }