270 likes | 293 Views
Presentador es : Juan Miguel Lazaroff jlazarof@uy.ibm.com Diego D. P é rez dperez@uy.ibm.com. Cómo generar e integrar aplicaciones J2EE con GeneXus IBM On Demand Lab Diciembre de 2005 a Marzo de 2006. IBM On D emand Lab. Contamos Con: Infraestructura Tecnologías adecuadas
E N D
Presentadores: Juan Miguel Lazaroff jlazarof@uy.ibm.com Diego D. Pérezdperez@uy.ibm.com Cómo generar e integrar aplicaciones J2EE con GeneXusIBMOn Demand LabDiciembre de 2005 a Marzo de 2006.
IBM On DemandLab Contamos Con: • Infraestructura • Tecnologías adecuadas • Herramientas de última generación • Equipos de trabajo ¿Qué Hacemos en estos programas ?... Investigamos • Grid Computing • SOA • Bussines Intelligent • Genexus • …
IBM Ondemand-Lab Iniciativas o Motivaciones en GeneXus: • Generar Aplicaciones J2EE con GeneXus 9.0 • Integrar Aplicaciones J2EE GeneXus con No GeneXus • Migración
Descripción del Piloto Objetivo: Obtener lecciones útiles para el desarrollo de aplicaciones J2EE utilizando el nuevo generador Java GeneXus 9.0, realizando el deploy sobre el WebSphere Application Server. Obtener lecciones útiles para la integración entre una aplicación J2EE GeneXus con otra J2EE no GeneXus.
Descripción del Piloto Repasamos • EJB ( Enterprise Java Beans) • Session Beans • Message Driven Beans • WS ( Web Service) SB MDB WS
Diagrama de Arquitectura WAS Aplicación GX Aplicación RAD SB SB SB WEB WEB MDB MDB WS WS CLIENTE SB GX CLIENTE SB RAD CLIENTE MDB GX CLIENTE MDB RAD CLIENTE WS GX CLIENTE WS RAD
Resultados del piloto • Experiencia y Capacitación del equipo de trabajo. • Una documentación muy completa y detallada de todos los puntos atacados en el piloto. • Lecciones aprendidas, recomendaciones y guías de uso para el nuevo generador J2EE de GeneXus, ejecutando en WAS. • Una lista de recomendaciones para la correcta integración entre aplicaciones J2EE desarrolladas usando GeneXus y RAD.
Resultados del piloto • Constante apoyo de Artech (Soporte – Desarrollo) • Se logró un enriquecimiento de este nuevo generador • 5 Builds que son parte del upgrade 1 y 2 sobre la nueva versión • GeneXus 9.0. • 6 SAC’s publicados. (19519, 19645,19895, 21030, 21097, 19826) • Resultó muy productivo para ambas partes
Lecciones útiles: • Desarrollo en GeneXus de: • EJB Session Bean • EJB Message Driven Bean • Web Service • Desarrollar la invocación desde GeneXus a los componentes de la aplicación RAD: • Session Bean • Message Driven Bean • Web Service • Desarrollar la invocación desde RAD a los componentes de la aplicación GeneXus: • Session Bean • Message Driven Bean • Web Service
Más lecciones útiles: • Uso del WAS y la consola administrativa. • Configuración del Data Source para DB2 y del JMS provider • Uso de JNDI • Place Holder y Business Components de GeneXus. • Prototipado en GeneXus • Registro de Problemas. • Referencias de interés
WAS Contenido del Piloto: Aplicación GX Aplicación RAD SB SB WEB WEB MDB MDB WS WS CLIENTE SB GX CLIENTE SB RAD CLIENTE MDB GX CLIENTE MDB RAD CLIENTE WS GX CLIENTE WS RAD
WAS Contenido del Piloto: Aplicación GX Aplicación RAD SB SB WEB WEB MDB MDB WS WS CLIENTE SB GX CLIENTE SB RAD CLIENTE MDB GX CLIENTE MDB RAD CLIENTE WS GX CLIENTE WS RAD
SB Desarrollo de un EJB en GeneXus. MDB • Un EJB es Procedimiento o Business Component con las siguientes propiedades: Main Program = True Call protocol = Enterprise Java Bean • Procedimiento: GeneXus genera tanto el Session Bean como el Message Driven Bean. Con el comando ‘call’ se invoca al Session Bean y con ‘submit’ al MDB. • Business Component: GeneXus genera sólo el Session Bean. • Se puede lograr que el objeto NO sea llamado como EJB para las invocaciones dentro de GeneXus Call protocol = Internal Expose as EJB = True
SB Desarrollo de un EJB en GeneXus. MDB • Desarrollamos Procedimiento que implementa la consulta de personas. • Propiedades del procedimiento: Main Program = True Call protocol = Enterprise Java Bean Expose as EJB = True Transaction Type= container Transaction Attribute= required JNDI name= ejb/aConsultaPersona Destination Type= Queue Connection Factory JNDI name= jms/connectionFactoryJNDIGX Destination JNDI name = jms/destinationJNDIGX • Un MDB es asincrónica. Los parámetros OUT no son tenidos en cuenta.
SB Desarrollo de un EJB en GeneXus. MDB Diferencias en los EJB en GeneXus: • Genera Session Beans Stateless únicamente. • Session Bean con un único método, de nombre execute. • No genera los stubs para el Session Bean necesarios en WAS. • No podemos agregar logs en el Bean. • El MDB maneja sólo un tipo de mensajes. • El programador GeneXus no tiene el mensaje accesible.
WAS Contenido del Piloto: Aplicación GX Aplicación RAD SB SB WEB WEB MDB MDB WS WS CLIENTE SB GX CLIENTE SB RAD CLIENTE MDB GX CLIENTE MDB RAD CLIENTE WS GX CLIENTE WS RAD
CLIENTE SB RAD Desarrollar la invocación del Session Bean de RAD desde GeneXus. • Idea: Queríamos hacer un Web Panel en la aplicación GeneXus que invocara remotamente al EJB Session Bean de otra aplicación RAD • Sugerencia: • Hacer una clase java común, que llame al EJB, y • luego desde GeneXus llamar a esa clase java.
CLIENTE SB RAD Desarrollar la invocación del Session Bean de RAD desde GeneXus. • Desarrollamos a mano una clase Java que sirva de “puente” entre la aplicación GeneXus y el Session Bean de la otra aplicación. • Condiciones de la clase: • Nombre todo en minúscula. • Constructor: public miclase(int rH, ModelContext ctx) • Método a invocar: • Nombre execute • Parámetro en arrays. • Debe ubicarse en el mismo package que los fuentes generados por GeneXus. • Se invoca por medio de un call(‘miclase’ [,parms])
CLIENTE SB RAD Desarrollar la invocación del Session Bean de RAD desde GeneXus. • Desarrollamos en RAD un proyecto que contenga un cliente del Session Bean. • Generamos un jar con este proyecto. • La clase ‘puente’ usa la clase cliente contenida en el jar para invocar al Session Bean de la aplicación RAD. • El módulo web GeneXus tiene que contener este jar, y el ejb.jar con los stubs correspondiente al Session Bean.
WAS Contenido del Piloto: Aplicación GX Aplicación RAD SB SB WEB WEB MDB MDB WS WS CLIENTE SB GX CLIENTE SB RAD CLIENTE MDB GX CLIENTE MDB RAD CLIENTE WS GX CLIENTE WS RAD
CLIENTE MDB RAD Desarrollar el envío de mensajes al MDB de RAD desde GeneXus. • Usar el tipo de datos Queue incluido en GeneXus. • Configurar el proveedor de JMS, el Queue y el Connection Factory, en un archivo jms.xml (ver jms.xml) . • Se crea una variable de tipo Queue para un proveedor en particular. • Se usa la variable para mandar los mensajes a esa Queue. • Se pueden manejar el id y la prioridad del mensaje. • El mensaje es de tipo javax.jms.TextMessage. • Agregamos en el MDB de RAD la lógica para procesar el tipo de mensajes que envía GeneXus.
WAS Contenido del Piloto: Aplicación GX Aplicación RAD SB SB WEB WEB MDB MDB WS WS CLIENTE SB GX CLIENTE SB RAD CLIENTE MDB GX CLIENTE MDB RAD CLIENTE WS GX CLIENTE WS RAD
CLIENTE SB GX Desarrollar la invocación del Session Bean de GeneXus desde RAD. • Generamos los stubs para el Session Bean de GeneXus. • Crear un proyecto EJB en RAD a partir del jar correspondiente al EJB module de la aplicación GeneXus. • Generar con RAD los stubs para el Session Bean de GeneXus. • Generamos un jar con los stubs del Session Bean de GeneXus. • Invocamos al Session Bean de la misma manera que invocamos al Session Bean de la propia aplicación RAD.
CLIENTE SB GX Desarrollar la invocación del Session Bean de GeneXus desde RAD. • Otra opción era conseguir los stubs dentro de la estructura de directorios del servidor WAS. • WAS genera automáticamente el ejb.jar con los stubs al instalar una aplicación. • Invocamos al Session Bean de la misma manera que invocamos al Session Bean de la propia aplicación RAD.
Próximos pasos: • Seguir explorando sobre las actualizaciones al generador. • Comparación de performance entre componentes J2EE GeneXus y J2EE no GeneXus. • Evaluar el traspaso de Transacciones entre EJBs GeneXus y otros EJBs. • Aplicaciones mixtas. • Migrar aplicaciones a GeneXus J2EE. • Adaptar metodología de desarrollo IBM a proyectos GeneXus • Lograr establecer un mecanismo para estimación. • Publicar paper en el site de desarrolladores de Artech.
Presentadores: Juan Miguel Lazaroff jlazarof@uy.ibm.com Diego D. Pérezdperez@uy.ibm.com Cómo generar e integrar aplicaciones J2EE con GeneXusIBMOn Demand LabDiciembre de 2005 a Marzo de 2006.