• Like
Ejb 3.0 Glassfish 2.X Netbeans 6.X
Upcoming SlideShare
Loading in...5
×

Ejb 3.0 Glassfish 2.X Netbeans 6.X

  • 3,273 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • buena ayuda
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
3,273
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
252
Comments
1
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 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
  • 2. 3 Escoger Serv de App GlashFish 4 Nuevo Session Bean 5 Nombre : Miprimerejb package cibertec; 6 import javax.ejb.Stateless; import javax.swing.JOptionPane; @Stateless(mappedName=quot;alias_MiprimerejbBeanquot; , description=quot;ejb de pruebaquot;) public class MiprimerejbBean implements MiprimerejbLocal,MiprimerejbRemote{
  • 3. public void m1(String mensaje) { JOptionPane.showMessageDialog(null, quot;El mensaje recibido :quot; + 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
  • 4. 10 Ahora crear la aplicación Cliente 11 12
  • 5. 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 {
  • 6. /** * @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(quot;alias_MiprimerejbBeanquot;); ejb.m1(quot;Hola Mundoquot;); } } 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
  • 7. 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,quot;com.sun.enterprise.naming.SerialInitContextFactoryquot;); prop.put(quot;org.omg.CORBA.ORBInitialHostquot;, quot;192.168.1.100quot;); // NOTE: IIOP is set on port 3701 but this works on port 3700 prop.put(quot;org.omg.CORBA.ORBInitialPortquot;, quot;1072quot;); 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(quot;alias_MiprimerejbBeanquot;); ejb.m1(quot;Hola Mundoquot;); } } 20 Aumentemos metodos @PostConstruct public void postcons() { callback al EJB System.out.println(quot;posconsquot;); } @PreDestroy public void predes() { System.out.println(quot;predesquot;); } @AroundInvoke public Object interceptor(InvocationContext ctx) throws Exception { System.out.println(quot;interceptorr llamadoquot;); 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 ¿?
  • 8. EJBS DE SESION STATEFULL 22 23 EJB session package cibertec; import javax.ejb.Stateful; @Stateful(mappedName=quot;alias_MiprimerejbconsesionBeanquot;) 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(quot;alias_MiprimerejbconsesionBeanquot;); System.out.println(ejb.m2(4)); System.out.println(ejb.m2(2)); System.out.println(ejb.m2(5)); EJBS DE JMS
  • 9. 28 29 30
  • 10. 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 = quot;jms/Nuevoquot;, activationConfig = { @ActivationConfigProperty(propertyName = quot;acknowledgeModequot;, propertyValue = quot;Auto- acknowledgequot;), @ActivationConfigProperty(propertyName = quot;destinationTypequot;, propertyValue = quot;javax.jms.Queuequot;) }) 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(quot;A Message received in TMDB: quot; + msg.getText()); } else { System.out.println(quot;Message of wrong type: quot; + 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(quot;jms/NuevoFactoryquot;); Queue queue = (Queue) ctx.lookup(quot;jms/Nuevoquot;); QueueConnection connection = connectionFactory.createQueueConnection(); QueueSession session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer messageProducer = session.createProducer(queue); TextMessage message = session.createTextMessage(); message.setText(quot;enviandooooooooo quot;); messageProducer.send(message); } catch (Exception e) { e.printStackTrace(); }