You are on page 1of 10

Enterprise JavaBeans

Los Enterprise JavaBeans (tambin conocidos por sus siglas EJB) son una de las API que forman parte del estndar de construccin de aplicaciones empresariales J2EE (ahora JEE 5.0) deOracle Corporation (inicialmente desarrollado por Sun Microsystems). Su especificacin detalla cmo los servidores de aplicaciones proveen objetos desde el lado del servidor que son, precisamente, los EJB: Comunicacin remota utilizando CORBA Transacciones Control de la concurrencia Eventos utilizando JMS (Java messaging service) Servicios de nombres y de directorio Seguridad Ubicacin de componentes en un servidor de aplicaciones. La especificacin de EJB define los papeles jugados por el contenedor de EJB y los EJB, adems de disponer los EJB en un contenedor.

Breve historia de los patrones de diseo

Un patrn de diseo es una abstraccin de una solucin en un nivel alto. Los patrones solucionan problemas que existen en muchos niveles de abstraccin. Hay patrones que abarcan las distintas etapas del desarrollo; desde el anlisis hasta el diseo y desde la arquitectura hasta la implementacin. Muchos diseadores y arquitectos de software han definido el trmino de patrn de diseo de varias formas que corresponden al mbito a la cual se aplican los patrones. Luego, se dividi los patrones en diferentes categoras de acuerdo a su uso. Los diseadores de software extendieron la idea de patrones de diseo al proceso de desarrollo de software. Debido a las caractersticas que proporcionaron los lenguajes orientados a objetos (como herencia, abstraccin y encapsulamiento) les permitieron relacionar entidades de los lenguajes de programacin a entidades del mundo real fcilmente, los diseadores empezaron a aplicar esas caractersticas para crear soluciones comunes y reutilizables para problemas frecuentes que exhiban patrones similares. Fue por los aos 1994, que apareci el libro "Design Patterns: Elements of Reusable Object Oriented Sofware" escrito por los ahora famosos Gang of Four (GoF, que en espaol es la pandilla de los cuatro) formada por Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides. Ellos recopilaron y documentaron 23 patrones de diseo aplicados usualmente por expertos diseadores de software orientado a objetos. Desde luego que ellos no son los inventores ni los nicos involucrados, pero ese fue luego de la publicacin de ese libro que empez a difundirse con ms fuerza la idea de patrones de diseo. El grupo de GoF clasificaron los patrones en 3 grandes categoras basadas en su PROPSITO: creacionales, estructurales y de comportamiento. Creacionales: Patrones creacionales tratan con las formas de crear instancias de objetos. El objetivo de estos patrones es de abstraer el proceso de instanciacin y ocultar los detalles de cmo los objetos son creados o inicializados. Estructurales: Los patrones estructurales describen como las clases y objetos pueden ser combinados para formar grandes estructuras y proporcionar nuevas funcionalidades. Estos objetos adicionados pueden ser incluso objetos simples u objetos compuestos. Comportamiento: Los patrones de comportamiento nos ayudan a definir la comunicacin e iteracin entre los objetos de un sistema. El propsito de este patrn es reducir el acoplamiento entre los objetos. En el segundo nivel, ellos clasificaron los patrones en 2 mbitos: Clases y objetos. Es as que, tenemos 6 tipos de patrones: Creacionales Creacional de la Clase Los patrones creacionales de Clases usan la herencia como un mecanismo para lograr la instanciacin de la Clase. Por ejemplo el mtodo Factora. Creacional del objeto Los patrones creacionales de objetos son ms

escalables y dinmicos comparados de los patrones creacionales de Clases. Por ejemplo la Factora abstracta y el patrn Singleton. Estructural de la Clase Los patrones estructurales de Clases usan la herencia para proporcionar interfaces ms tiles combinando la funcionalidad de mltiples Clases. Por ejemplo el patrn Adaptador (Clase). Estructural de Objetos Los patrones estructurales de objetos crean objetos Estructurales complejos agregando objetos individuales para construir grandes estructuras. La composicin de l patrn estructural del objeto puede ser cambiado en tiempo de ejecucin, el cual nos da flexibilidad adicional sobre los patrones estructurales de Clases. Por ejemplo el Adaptador (Objeto), Facade, Bridge, Composite. Comportamiento de Clase Los patrones de comportamiento de Clases usan la herencia para distribuir el comportamiento entre Clases. Por ejemplo Interpreter. Comportamie Comportamiento de Objeto nto Los patrones de comportamiento de objetos nos permite analizar los patrones de comunicacin entre objetos interconectados, como objetos incluidos en un objeto complejo. Ejemplo Iterator, Observer, Visitor.

Patrones J2EE Con la aparicin del J2EE, todo un nuevo catlogo de patrones de diseo apareci. Desde que J2EE es una arquitectura por si misma que involucra otras arquitecturas, incluyendo servlets, JavaServer Pages, Enterprise JavaBeans, y ms, merece su propio conjunto de patrones especficos para diferentes aplicaciones empresariales. De acuerdo al libro "J2EE PATTERNS Best Practices and Design Strategies", existen 5 capas en la arquitectura J2EE: Cliente Presentacin Negocios Integracin Recurso El libro explica 15 patrones J2EE que estn divididos en 3 de las capas: presentacin, negocios e integracin.

Catlogo de patrones J2EE

Capa de Presentacin q Decorating Filter / Un objeto que est entre el cliente y los componentes Intercepting Web. Este procesa las peticiones y las respuestas. Filter Un objeto que acepta todos los requerimientos de un cliente y los direcciona a manejadores apropiados. El patrn Front Controller podra dividir la funcionalidad en 2 diferentes objetos: el Front Controller y el Dispatcher. En ese caso, El Front Controller acepta todos los requerimientos de un cliente y realiza la autenticacin, y el Dispatcher direcciona los requerimientos a manejadores apropiada.

Front Controller/ Front Component

Un objeto helper que encapsula la lgica de acceso a datos en beneficio de los componentes de la View Helper presentacin. Por ejemplo, los JavaBeans pueden ser usados como patrn View Helper para las pginas JSP. Un objeto vista que est compuesto de otros objetos vista. Por ejemplo, una pgina JSP que incluye otras pginas JSP y HTML usando la directiva include o el action include es un patrn Composite View. Es como el patrn de diseo MVC con el Controlador actuando como Front Controller pero con una cosa importante: aqu el Dispatcher (el cual es parte del Front Controller) usa View Helpers a gran escala y ayuda en el manejo de la vista. Es como el patrn de diseo MVC con el controlador actuando como Front Controller pero con un asunto importante: aqu el Dispatcher (el cual es parte del Front Controller) no usa View Helpers y realiza muy poco trabajo en el manejo de la vista. El manejo de la vista es manejado por los mismos componentes de la Vista.

Composite view

Service To Worker

Dispatcher View

Capa de Negocios

Business Delegate

Un objeto que reside en la capa de presentacin y en beneficio de los otros componentes de la capa de presentacin llama a mtodos remotos en los objetos de la capa de negocios.

Value Object/ Data Transfer Object/ Replicate Object Session Faade/ Session Entity Faade/ Distributed Faade Aggregate Entity Value Object Assembler

Un objeto serializable para la transferencia de datos sobre lar red.

El uso de un bean de sesion como una fachada (facade) para encapsular la complejidad de las interacciones entre los objetos de negocio y participantes en un flujo de trabajo. El Session Faade maneja los objetos de negocio y proporciona un servicio de acceso uniforme a los clientes. Un bean entidad que es construido o es agregado a otros beans de entidad. Un objeto que reside en la capa de negocios y crea Value Objets cuando es requerido.

Value List Handler/ Page- Es un objeto que maneja la ejecucin de consultas by-Page SQL, cach y procesamiento del resultado. Iterator/ Paged Usualmente implementado como beans de sesin. List Consiste en utilizar un objeto Service Locutor para abstraer toda la utilizacin JNDI y para ocultar las complejidades de la creacin del contexto inicial, de bsqueda de objetos home EJB y recreacin de objetos EJB. Varios clientes pueden reutilizar el objeto Service Locutor para reducir la complejidad del cdigo, proporcionando un punto de control.

Service Locator

Capa de Integracin

Data Access Object Service

Consiste en utilizar un objeto de acceso a datos para abstraer y encapsular todos los accesos a la fuente de datos. El DAO maneja la conexin con la fuente de

Activator

datos para obtener y almacenar datos. Se utiliza para recibir peticiones y mensajes asncronos de los clientes. Cuando se recibe un mensaje, el Service Activator localiza e invoca a los mtodos de los componentes de negocio necesarios para cumplir la peticin de forma asncrona.

Service Activator

Crear tu Primer Servicio Web en 30 minutos Seguro que habrs odo el bombardeo publicitario, y probablemente estars aturdido con todos los acrnimos. Por eso qu son los Servicios Web y Cmo podemos utilizarlos?. Este tutorial intentar desmitificar los Servicios Web y mostrar, paso a paso, cmo construirlos, desplegarlos, usarlos y encontrarlos. Los Servicios Web bsicos no son muy dificiles de crear. Para probar este punto, te mostraremos, en esta primera pgina, como construir un Servicio Web en unos 30 minutos. En las siguientes pginas profundizaremos algo ms en los Servicios web y explicaremos los siguientes tpicos en ms detalle: La mensajera SOAP. Las definiciones WSDL y su relacin con el cdigo. Publicacin de Servicios en un directorio UDDI. Exponer aplicaciones legales como Servicios Web. Tpicos avanzados, como la seguridad. En esta primera pgina, empezaremos con una definicin programtica de los Servicios Web, luego mostraremos una simple clase Java que llama y ejecuta un Servicio Web. Hemos creado nuestros ejemplos usando un conjunto de herramientas gratuitas de Systinet (los detalles de cmo acceder y descarga este software estn en la seccin Instalar el Software). No tienes porqu utilizar estos productos para entender los ejemplos, pero te lo recomendamos. Los conceptos presentados y el cdigo que hemos creado se puede aplicar de forma general y es relativamente independiente de las herramientas utilizadas. Asumimos algn conocimiento de XML pero ninguno de Servicios Web. Creemos que J2EE es la arquitectura ms madura para la implementacin de la lgica de negocios, y nuestro objetivo es presentar los Servicios Web como una extensin natural del modelo de componentes existente en J2EE, proporcionando un protocolo basado en XML

como estndar industrial. Esto le da a los sistemas existentes basados en J2EE mucho ms alcance que antes y hace de J2EE una mucho mejor opcin para la implementacin de la lgica de negocio principal dentro de los entornos tpicamente heterogneos de sistemas de informacin corporativa. El Servicio Web - una Definicin Programtica Un Servicio Web es un componente software con las siguientes caractersticas: Es accesible a travs del interface SOAP (Simple Object Access Protocol). Su interface se describe en un documento WSDL (Web Service Description Language). SOAP es un protocolo de mensajera XML extensible que forma la base de los Servicios Web. SOAP proporciona un mecanismo simple y consistente que permtie a una aplicacin enviar mensajes XML a otra aplicacin. Un mensaje SOAP es una transmisin de una-via desde un emisor SOAP a un receptor SOAP, y cualquier aplicacin puede participar en este intercambio como emisor o receptor. Los mensajes SOAP se pueden combinar para soportar muchos comportamientos de comunicacin, incluyendo, solicitud/respuesta, respuesta solicitada, mensajera asncrona de una-va, o incluso notificacin. SOAP es un protocolo de alto nivel que slo define la estuctura del mensaje y unas pocas reglas para su procesamiento. Es completamente independiente del protocolo de transporte subyacente, por eso los mensajes SOAP se pueden intercambiar sobre HTTP, JMS o protocolos de transporte de e-mail. Actualmente el protocolo HTTP es el ms utilizado para los mensajes HTTP. WSDL es un documento XML que contiene un conjunto de definiciones que describen un Servicio Web. Proporciona toda la informacin necesaria para acceder y utilizar un Servicio Web. Un documento WSDL describe qu hace el Servicio Web, cmo se comunica, y dnde reside. Usamos el documento WSDL en el momento del despliegue para crear nuestros interfaces de servicio. Algunas implementaciones SOAP, incluyendo WASP de Systinet, tambin usan WSDL durante la ejecucin para soportar comunicaciones dinmicas. Instalar el Software REQUERIMIENTOS: Asumimos que tienes instalada una versin del SDK superior a la 1.3, y que dispones de un navegador HTTP estndar. La variable de entorno JAVA_HOME debera apuntar al directorio de instalacin del SDK. Si quieres probar los ejemplos, del tutorial, necesitars descargar WASP Advanced de Systinet. Descomprime el paquete descargado en tu disco duro (preferiblemente en C:) y ejecuta el script install del subdirectorio bin de la instalacin de WASP Advanced. En nuestros ejemplos asumimos que has desempaquetado WASP en el directorio c:\waspadvanced. Tambin necesitars descargar el cdigo fuente y descomprimirlo en el directorio c:\wasp_demo. Si eliges nombres diferentes de directorios, por favor, actualiza el script env.bat de la forma apropiada (cambia las variables de entorno WASP_HOME y WASP_DEMO para que apunten respectivamente al directorio de instalacin de WASP y al directorio de la demo). Implementar un Sencillo Servicio Web Seguiremos estos pasos para crear nuestro sencillo Servicio Web: Crear la lgica del negocio del Servicio Web. Primero necesitamos escribir una clase Java que implemente la lgica de negocio del servicio Web. En este caso, nuestra lgica de negocio ser un simple clase Java que simula una servicio de citas de stocks.

Desplegar la clase Java en el servidor SOAP. Luego necesitamos convertir la clase Java en un Servicio Web. Mostraremos como desplegar la clase Java en un servidor SOAP usando la heramienta de despliegue de WASP. Generar las clases de acceso para los clientes. Una aplicacin cliente usa un objeto proxy para acceder al Servicio Web. En el momento de la solicitud, el proxy acepta una llamada a un mtodo Java desde la aplicacin y la traduce en un mensaje XML. En el momento de la respuesta, el proxy recibe el mensaje de respuesta SOAP, lo traduce en objetos Java y devuelve el resultado a la aplicacin cliente. Desarrollar la aplicacin cliente. La aplicacin cliente trata el proxy como un objeto Java estndar que facilita la comunicacin con un Servicio Web.

XML A pesar de su sencillez aparente, XML est transformando completamente la creacin y el uso de software. El Web revolucion la comunicacin entre usuarios y aplicaciones. XML est revolucionando la comunicacin entre aplicaciones o, de forma ms general, la comunicacin entre equipos, pues ofrece un formato de datos universal que permite adaptar o transformar fcilmente la informacin. Como veremos a continucin, XML es la base de los Servicios Web, as que antes vamos a hacernos una idea clara de qu aspecto tiene la informacin en lenguaje XML. XML es la solucin a un problema de comunicacin entre programas de ordenador. La informacin generalmente queda fuertemente ligada al programa con que fue creada, y es as como se pierde mucho tiempo en pasar de RTF a PS a PDF a pginas HTML a otros formatos de definicin de documentos. Muchos Linuxeros, sobre todo debianitas, saben de un nuevo standard llamado DocBook, que pretende dar solucin a este problema. Precisamente, DocBook es un caso particular de XML. DocBook se aplica sobre documentos ... pero si se trata de una imagen o un sonido? XML intenta ser un formato absolutamente genrico, con el que describir CUALQUIER tipo de fichero. As, por ejemplo SVG 1.0, Scalable Vector Graphics, es un formato basado en XML para representar imgenes vectoriales. DSML 1.0, Directory Services Markup Language, otro formato basado en XML, especfico para definir directorios. XHTML 1.0, Extensible HyperText Markup Language, ya os podeis imaginar que es un formato basado en XML para representar pginas web. Cada da aparecen nuevas propuestas para estadarizar formatos basados en XML. Ya existen muchas herramientas de programacin preparadas para trabajar con formatos basados en XML. Es una tendencia y se est consolidando. Los programadores con mentalidad abierta, codifican sus ficheros de datos en "algo" basado en XML. As si un da necesitan portar sus datos a otras aplicaciones, pueden usar herramientas ya hechas y probadas. Muy pronto, si no es ya, que una aplicacin trabaje con formatos basados en XML ser una cualidad tan valorada como que sea GPL.

Queda claro que XML es ya un formato universal, que lo estn adoptando multitud de programadores y que puede abarcar cualquier caso de intercambio de informacin, pero la pregunta que a muchos os habr surgido es: por qu no intercambiar los datos mediante ficheros de texto plano? Linux lo usa en casi todas las configuraciones de sus programas: httpd.conf, my.cnf, inetd.conf, etc, etc y todos sabemos lo bien que funciona y lo abierto que es ... Efectivamente, pero y si necesitamos transmitir informacin con estructura? Ah es donde resulta interesante XML. Imaginemos el caso de describir una pgina web con un fichero de texto ... se puede hacer, de hecho se hace constantemente usando HTML, que puede grabarse como un fichero de texto plano. Sin embargo, HTML no podra ser lo que es, sin su lenguaje de marcas. Luego ya no es slo un texto plano, sino un texto y sus marcas. Las marcas sirven para estructurar la informacin: separar el ttulo del contenido, por ejemplo. XML es una generalizacin de este proceso. En XML se marca TODO. Caulquier informacin transmitida por un XML est perfectamente estructurada. Para ello se emplea tambin un lenguaje de marcas. Como XML es un formato universal, y no puede limitarse a saber describir slo pginas web, por ejemplo, las marcas no son fijas, sino variables segn el subformato (esto es lo que luego veremos que se llama DTD). Un ejemplo sencillo (extraido de Internet: Introduccin a XML): una coleccin de 750 recetas de cocina. Escribirlas todas en KOffice? Qu peligro! Qu pasara si me dicen que es necesario tenerlas en HTML? O imprimirlas en un libro usando programas especficos y cierto estilo de tipografa para los ingredientes? Entonces es conveniente poner mayor atencin al elegir el formato a emplear. Slo texto? podra ser ... si no incluimos fotos, ni ndices, ni tablas, ni ... etc, etc. Es evidente que una receta se divide en partes bien identificadas, as que usar slo texto sera perder informacin sobre dnde est cada cosa en el documento. XML nos dice que podemos estructurar la informacin en un rbol. Es decir imaginar a la receta como un componente, que a su vez esta formado de componentes, y as sucesivamente. Cada componente podra tener texto y/o ms componentes. Una posible estructura sera imaginar que la receta tiene un componente llamado "necesitamos". No todo el texto estara dentro de "necesitamos", solamente aquellas cosas que el cocinero de la receta necesitara para llevarla a cabo. Dentro podramos tener uno o ms componentes llamados "ingrediente". Veamos como se ve esto (usando ya la sintaxis de XML). <receta> ... <necesitamos> <ingrediente>2 cucharadas de azucar</ingrediente> <ingrediente>3 manzanas</ingrediente> </necesitamos> ... </receta> Se adivina cul es la sintaxis de XML? Es simplemente encerrar al texto que pertenece a un componente entre y . Bueno, en realidad ya se ve que estos componentes son "tags". El XML se completa mediante una "hoja de estilo", que es una descripcin de cmo debe verse una informacin en un determinado medio. A un mismo documento XML se le pueden aplicar distintas hojas de estilo segn convenga. Por ejemplo usando una hoja de estilo por cada medio en la que se debe representar la informacin.

Existen actualmente dos lenguajes de hojas de estilo: CSS (Cascading Style Sheets: que ya est parcialmente implementado en los navegadores de WWW) y XSL (eXtended StyleSheet Language: El W3 Consortium cre este nuevo lenguaje de hojas de estilo) XML sirve para que muchos programas interpreten bien cualquier tipo de dato. No slo eso. XML sirve para que algunos programas hablen entre ellos sin intervencin humana. Para qu? Computacin Distribuida, Interoperatividad, Monitorizacin, ... son situaciones en las que resulta imprescindible este tipo de comunicacin. XML es tambin la solucin en estos casos. Como veremos ya, muy pronto, los Servicios Web son un caso particular de "Computacin Distribuida" y XML es su lenguaje base.

You might also like