SlideShare ist ein Scribd-Unternehmen logo
1 von 10
Downloaden Sie, um offline zu lesen
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
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{
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
10   Ahora crear la aplicación
     Cliente




11




12
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 {
/**
                                * @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
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 ¿?
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
28




29




30
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();
                                      }

Weitere ähnliche Inhalte

Was ist angesagt?

OpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tipsOpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tipsHo Kim
 
Node.js moduly a testovanie
Node.js moduly a testovanieNode.js moduly a testovanie
Node.js moduly a testovanieharcek
 
Clang-tidy: путешествие внутрь AST C++
Clang-tidy: путешествие внутрь AST C++Clang-tidy: путешествие внутрь AST C++
Clang-tidy: путешествие внутрь AST C++corehard_by
 
Adi Fatol - Ce e nou in PHP 5.3?
Adi Fatol - Ce e nou in PHP 5.3?Adi Fatol - Ce e nou in PHP 5.3?
Adi Fatol - Ce e nou in PHP 5.3?phpGeekMeet_ro
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometrojubacalo
 
ECMAscript 2015 aka ES6 : à la découverte du nouveau javascript
ECMAscript 2015 aka ES6 : à la découverte du nouveau javascriptECMAscript 2015 aka ES6 : à la découverte du nouveau javascript
ECMAscript 2015 aka ES6 : à la découverte du nouveau javascriptmatparisot
 
Юнит тестирование в Zend Framework 2.0
Юнит тестирование в Zend Framework 2.0Юнит тестирование в Zend Framework 2.0
Юнит тестирование в Zend Framework 2.0zfconfua
 
RxSwift 예제로 감잡기
RxSwift 예제로 감잡기RxSwift 예제로 감잡기
RxSwift 예제로 감잡기Yongha Yoo
 
Baocao ltjava
Baocao ltjavaBaocao ltjava
Baocao ltjavaTnt Ttđ
 
EJEMPLOS DESARROLLADOS
EJEMPLOS DESARROLLADOSEJEMPLOS DESARROLLADOS
EJEMPLOS DESARROLLADOSDarwin Durand
 
Java AWT Calculadora
Java AWT CalculadoraJava AWT Calculadora
Java AWT Calculadorajubacalo
 

Was ist angesagt? (14)

OpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tipsOpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
 
Node.js moduly a testovanie
Node.js moduly a testovanieNode.js moduly a testovanie
Node.js moduly a testovanie
 
Clang-tidy: путешествие внутрь AST C++
Clang-tidy: путешествие внутрь AST C++Clang-tidy: путешествие внутрь AST C++
Clang-tidy: путешествие внутрь AST C++
 
Adi Fatol - Ce e nou in PHP 5.3?
Adi Fatol - Ce e nou in PHP 5.3?Adi Fatol - Ce e nou in PHP 5.3?
Adi Fatol - Ce e nou in PHP 5.3?
 
Proxy & CGLIB
Proxy & CGLIBProxy & CGLIB
Proxy & CGLIB
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 
Algoritmo secuencial
Algoritmo secuencialAlgoritmo secuencial
Algoritmo secuencial
 
ECMAscript 2015 aka ES6 : à la découverte du nouveau javascript
ECMAscript 2015 aka ES6 : à la découverte du nouveau javascriptECMAscript 2015 aka ES6 : à la découverte du nouveau javascript
ECMAscript 2015 aka ES6 : à la découverte du nouveau javascript
 
Юнит тестирование в Zend Framework 2.0
Юнит тестирование в Zend Framework 2.0Юнит тестирование в Zend Framework 2.0
Юнит тестирование в Zend Framework 2.0
 
RxSwift 예제로 감잡기
RxSwift 예제로 감잡기RxSwift 예제로 감잡기
RxSwift 예제로 감잡기
 
Baocao ltjava
Baocao ltjavaBaocao ltjava
Baocao ltjava
 
EJEMPLOS DESARROLLADOS
EJEMPLOS DESARROLLADOSEJEMPLOS DESARROLLADOS
EJEMPLOS DESARROLLADOS
 
Java AWT Calculadora
Java AWT CalculadoraJava AWT Calculadora
Java AWT Calculadora
 
Devoxx test ng
Devoxx test ngDevoxx test ng
Devoxx test ng
 

Andere mochten auch

Azure, Cloud Computing & Services
Azure, Cloud Computing & ServicesAzure, Cloud Computing & Services
Azure, Cloud Computing & ServicesAlan Dean
 
Monfort Emath Paper1_printed
Monfort Emath Paper1_printedMonfort Emath Paper1_printed
Monfort Emath Paper1_printedFelicia Shirui
 
Ixda Feedback #1 : L’intégration du design au sein d’entreprises innovantes :...
Ixda Feedback #1 : L’intégration du design au sein d’entreprises innovantes :...Ixda Feedback #1 : L’intégration du design au sein d’entreprises innovantes :...
Ixda Feedback #1 : L’intégration du design au sein d’entreprises innovantes :...mathilde_maitre
 
Utf 8 Loi Tien Bao Iii Fatima
Utf 8 Loi Tien Bao Iii FatimaUtf 8 Loi Tien Bao Iii Fatima
Utf 8 Loi Tien Bao Iii Fatimahehe123456
 
Adf Rich Faces Toplink Jpa Oracle Xe Jee 5
Adf Rich Faces   Toplink Jpa   Oracle Xe    Jee 5Adf Rich Faces   Toplink Jpa   Oracle Xe    Jee 5
Adf Rich Faces Toplink Jpa Oracle Xe Jee 5a19987225
 
J2ME Netbeans Mobility Pack - Leonardo Torres Altez
J2ME Netbeans Mobility Pack - Leonardo Torres AltezJ2ME Netbeans Mobility Pack - Leonardo Torres Altez
J2ME Netbeans Mobility Pack - Leonardo Torres Alteza19987225
 
TopLink Jpa Parte 1 - Leonardo Torres Altez
TopLink Jpa Parte 1 - Leonardo Torres AltezTopLink Jpa Parte 1 - Leonardo Torres Altez
TopLink Jpa Parte 1 - Leonardo Torres Alteza19987225
 

Andere mochten auch (7)

Azure, Cloud Computing & Services
Azure, Cloud Computing & ServicesAzure, Cloud Computing & Services
Azure, Cloud Computing & Services
 
Monfort Emath Paper1_printed
Monfort Emath Paper1_printedMonfort Emath Paper1_printed
Monfort Emath Paper1_printed
 
Ixda Feedback #1 : L’intégration du design au sein d’entreprises innovantes :...
Ixda Feedback #1 : L’intégration du design au sein d’entreprises innovantes :...Ixda Feedback #1 : L’intégration du design au sein d’entreprises innovantes :...
Ixda Feedback #1 : L’intégration du design au sein d’entreprises innovantes :...
 
Utf 8 Loi Tien Bao Iii Fatima
Utf 8 Loi Tien Bao Iii FatimaUtf 8 Loi Tien Bao Iii Fatima
Utf 8 Loi Tien Bao Iii Fatima
 
Adf Rich Faces Toplink Jpa Oracle Xe Jee 5
Adf Rich Faces   Toplink Jpa   Oracle Xe    Jee 5Adf Rich Faces   Toplink Jpa   Oracle Xe    Jee 5
Adf Rich Faces Toplink Jpa Oracle Xe Jee 5
 
J2ME Netbeans Mobility Pack - Leonardo Torres Altez
J2ME Netbeans Mobility Pack - Leonardo Torres AltezJ2ME Netbeans Mobility Pack - Leonardo Torres Altez
J2ME Netbeans Mobility Pack - Leonardo Torres Altez
 
TopLink Jpa Parte 1 - Leonardo Torres Altez
TopLink Jpa Parte 1 - Leonardo Torres AltezTopLink Jpa Parte 1 - Leonardo Torres Altez
TopLink Jpa Parte 1 - Leonardo Torres Altez
 

Ejb 3.0 Glassfish 2.X Netbeans 6.X

  • 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
  • 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(); }