Download componentes distribuidos - Departamento de Informática
Document related concepts
no text concepts found
Transcript
Tecnologías Web Jose Emilio Labra Gayo Departamento de Informática Universidad de Oviedo Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 1 Esquema de la exposición 1.-Lenguaje XML Definición y Vocabularios 2.-Arquitecturas Web Cliente-servidor Componentes distribuidos Servicios Web Otras arquitecturas: Agentes, P2P, etc. 3.-Web Semántica Descripción de recursos Ontologías Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 2 Internet (60-80) Origen militar Protocolos de comunicación (TCP/IP) Seguridad ante ataques (múltiples servidores) (80 – 95) Implantación académica Protocolos de intercambio de información (FTP, SMTP, HTTP, ...) Enorme biblioteca con material hipermedia (95 – 00) Acceso comercial Posibilidad de negocio Dinero!! Boom comercial La red es un ordenador gigante para hacer negocios (00-) Crisis de las punto com Historias de fracasos Lecciones aprendidas Revisión de las arquitecturas tradicionales Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 3 Topologías Transaccional Grandes mainframes con terminales tontas Bases de datos multiusuario transaccionales El sistema garantizaba que una unidad de trabajo era completamente procesada (o no) sin interferencias Relacional Aparición de ordenadores personales Necesidad de comunicación Creación de LANs Arquitecturas cliente-servidor (Múltiples clientes – un servidor) Bases de datos relacionales (múltiples vistas de los datos) Navegacional Web = Múltiples clientes y múltiples servidores Computación obicua (PDAs, moviles, coches,...) Se requieren nuevos servicios de todo tipo Actividades del cliente: navegar y descubrir servicios Arquitecturas: anillos, comunidades, peer-to-peer, ... Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 4 Arquitectura Cliente/Servidor Protocolo HTTP se basa en la arquitectura cliente/servidor (sin estado) Cliente Protocolo http Servidor Visualizador GET http://servidor.com/hola.html http:/1.0 200 OK <html> <body> Enlace a <a href =“otro.html”>Otro</a> </body> </html> Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 5 Arquitectura Cliente/Servidor Computación dinámica Cliente Servidor Base Datos Computación dinámica: La información se computa en el momento en que se solicita (normalmente a partir de una base de datos) Ejemplos: Información meteorológica, bursátil, estado de carreteras, etc. Ventajas: Flexibilidad: La información se adapta a las características del cliente Eficiencia: No es necesario tener almacenada toda la información Posibilidades Computación en cliente Computación en servidor Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 6 Arquitectura Cliente/Servidor Computación en cliente Etiqueta <object> permite incluir elementos computacionales El visualizador reconoce el tipo de elemento y lo ejecuta Sólo funciona con ciertos tipos de visualizadores (necesidad de plug-ins) <p><OBJECT CLASSID=”juego.py" CODETYPE="application/x-python" TITLE=”Juego lógico"> </OBJECT></p> Applets = código Java compilado (Java utiliza la máquina virtual JVM) Muchos visualizadores incluyen la JVM La etiqueta <applet> no se recomienda en HTML 4.0 (deprecated) <p><OBJECT CLASSID="java:juego.class" Es preferible la utilización de <object> Valoración CODETYPE="application/java" WIDTH=400 HEIGHT=250> </OBJECT></p> Menor carga computacional en el servidor Menor carga en la red Dependencia capacidades del cliente Problema de seguridad para el cliente Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 7 Arquitectura cliente/servidor Computación en cliente La etiqueta <script> permite incluir guiones (programas interpretados por el visualizador) DHTML (Dynamic HTML): los programas pueden tener acceso a características del visualizador Lenguajes interpretados: JavaScript, VBScript, etc. <p><SCRIPT type=“text/javascript”> function onImg(name) { . . . } function offImg(name) { . . . } </SCRIPT> </p> Se pueden combinar con los eventos de navegación y con los formularios Aplicaciones habituales: Modificar la presentación, validar entradas, etc. <li><a href="About.html" onMouseOver='onImg("About")' onMouseOut ='offImg("About")'> <img width="200" height="23” src="Images/About.gif"></a></li> Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 8 Arquitectura cliente/servidor Computación en servidor CGI (Common Gateway Interface) Cuando el servidor reconoce que el fichero es un CGI, en lugar de transferir su contenido, lo ejecuta como si fuese un programa y transmite al cliente los resultados de la ejecución (salida estándar) Al programa se le pasan parámetros con un formato determinado CGI = Especificación formato E/S de dichos programas Ejecución en servidor Transparencia para el cliente El cliente sólo ve los resultados Independencia del lenguaje de programación (C, Perl, Java, ...) Lenguajes interpretados: Mediante llamada al intérprete. #! perl ... #!/usr/bin/perl código Perl que devuelve HTML El programa CGI se arranca, se ejecuta, devuelve el resultado y acaba Poco eficiente para ejecuciones repetidas No mantiene el estado (se recurre a la utilización de cookies) FastCGI utiliza un hilo por cada proceso Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 9 Arquitectura cliente/servidor Computación en servidor Código Incrustado en HTML El servidor reconoce ciertas etiquetas y ejecuta el código que contienen El servidor debe incluir un intérprete del lenguaje de programación utilizado El programa tiene acceso a componentes del servidor Lenguajes habituales: PHP: Lenguaje específico (sintaxis similar a C, sin chequeo de tipos) ASP (Microsoft): Utiliza Visual Basic JSP (Sun): Utiliza lenguaje Java <html><body> <h1><?php . . . ?></h1> ... </body></html> Servlets: Programas Java compilados que se ejecutan en la JVM del servidor Dependen del lenguaje Java Disponibles en plataformas Java (compatibilidad?) public class MiServlet extends GenericServlet { public void service (ServletRequest rqt, ServletResponse rs) throws ServletException, IOException { ... } Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 10 Componentes Distribuidos Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 11 Componentes Distribuidos Definiciones Un componente software en una unidad de software independiente con una interfaz explícita que puede utilizarse para componer aplicaciones Un componente puede considerarse como una colección de objetos. Un sistema de componentes distribuidos es un sistema de componentes que pueden estar ejecutándose en diferentes máquinas. Red Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 12 Componentes Distribuidos Antecedentes RPC (Remote Procedure Call): Permite la invocación a procedimientos remotos Concepto de Marshalling/Unmarshalling: Conversión de parámetros en las llamadas RMI (Remote Method Invocation): Permite la invocación a métodos de objetos que residen en diferentes máquinas virtuales Concepto de serialización/deserialización de objetos Recolección de basura remota Sistemas de Transacciones Distribuidos: CICS (1977, IBM), TUXEDO (BEA) Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 13 Plataformas existentes Microsoft COM y .NET COM (1993) fue uno de los primeros modelos de componentes populares DCOM (1995) = Componentes distribuidos mediante RPC COM+ (2000) nueva generación con soporte transaccional .NET Framework (2002) proporciona: - Lenguaje intermedio común (CLR) - Programación en Cliente (ASP.NET) - Componentes de negocios (.NET Enterprise services) - Bases de datos (ADO.NET) - Servicios Web - etc. Similar a plataforma Java, aunque promueve la independencia del Lenguaje (VB, C++, C#, etc.) e incluso de plataforma (Mono en Linux) Prog. Declarativa mediante atributos vs Descriptor de despliegue Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 14 Plataformas existentes CORBA CORBA (Common Object Request Broker Architecture) fue desarrollado por el OMG (Object Management Group) en 1989 Independencia de Lenguaje y de Plataforma ORB (Object Request Broker): Intermediario de petición de objetos Proporciona transparencia entre clientes e implementaciones IDL (Interface Definition Language) Lenguaje propio para definir interfaces Conversiones desde/hacia otros lenguajes (C++, Java, etc.) Numerosos servicios soportados: Nombres, comunicaciones asíncronas, transacciones, concurrencia y seguridad Reciente extensión para soportar componentes no muy utilizada Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 15 Plataformas existentes EJBs Sun Microsystems desarrolló un modelo de componentes distribuidos en 1997 denominado Enterprise Java Beans (EJBs) Inspirados en CORBA, pero específico para Java Arquitectura basada en un contenedor (servidor de aplicaciones) que ofrece servicios de infraestructura: Persistencia, Concurrencia, Transacciones, Seguridad, etc. Posteriormente, se describirá en más detalle... Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 16 Arquitectura de Componentes Distribuidos Contenedor El contenedor o servidor de aplicaciones se encarga de proporcionar servicios de infraestructura La especificación de servicios puede ser: Programática: Se ofrece acceso a APIs de servicios Ejemplo: JDBC, JTA, JNDI, JMS, etc. Declarativa: Mediante los descriptores de despliegue se definen diversas políticas como la seguridad, las transacciones El contenedor puede gestionar otros servicios: Ciclo de vida de componentes, pool de recursos, servicios de nombres, clustering, etc. Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 17 Arquitectura de Componentes Distribuidos stub y skeleton stub: Objeto que se forma en el cliente y se encarga de la comunicación con el objeto remoto (patrón proxy) skeleton: Objeto del lado del servidor que se comunica con el stub y el objeto distribuido (patrón adapter) Ventaja: Liberar al cliente y al objeto distribuido de tareas de comunicación. Incluso pueden generarse automáticamente Cliente interfaz remota stub Red skeleton Objeto Distribuido interfaz remota Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 18 Arquitectura de Componentes Distribuidos Middleware explícito El Objeto distribuido se encarga de gestionar directamente los servicios del contenedor: transacciones, persistencia, seguridad, etc. Problema: Mayor complejidad en desarrollo de objeto distribuido Contenedor Cliente Transacciones interfaz remota stub Red skeleton Objeto Distribuido interfaz remota Persistencia Seguridad ... Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 19 Arquitectura de Componentes Distribuidos Middleware implícito Se utiliza un objeto interceptor que se encarga de gestionar servicios del contenedor y llamar al objeto distribuido cuando sea necesario. Ventaja: Libera al objeto distribuido de dichas tareas. Posibilidad de creación automática del interceptor. Contenedor Cliente Transacciones interfaz remota stub Red Bases Datos skeleton Interceptor interfaz remota Seguridad Objeto Distribuido Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) ... 20 Arquitectura de Componentes Distribuidos Creación de Objetos La creación, eliminación y búsqueda de objetos distribuidos se realiza mediante un objeto dedicado exclusivamente a dicha tarea (patrón Factoría) Cliente Factoría interfaz factoría interfaz remota stub Contenedor solicitud creación Red Transacciones crea Bases Datos skeleton Interceptor interfaz remota Seguridad Objeto Distribuido Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) ... 21 Servicios de Infraestructura El contenedor se encarga de los servicios de infraestructura: - Gestión de recursos - Concurrencia - Transacciones - Mensajería Asíncrona - Nombres - Seguridad etc. Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 22 Servicios de Infraestructura Gestión de Recursos Problema de Escalabilidad: Mantener eficiencia cuando el número de clientes aumenta Acciones: Pooling de recursos: permite reutilizar varios recursos para diferentes propósitos Pooling de instancias: Los mismos Objetos son utilizados por diferentes peticiones (evita la creación de nuevos objetos para cada petición) Gestión de Pasivación/Activación: Almacenar valores de un objeto en memoria secundaria o recuperarlos. Balance de carga: Distribuir peticiones a elementos con menor carga Clustering: Utilizar varios servidores de aplicaciones Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 23 Servicios de Infraestructura Concurrencia La programación concurrente requiere técnicas de programación avanzadas: bloqueos, recursos compartidos, sincronización, etc. El contenedor puede realizar la gestión de la concurrencia, liberando al desarrollador (limita creación explícita de hilos) Aspectos: Código Reentrante: Código que puede ser compartido por varios procesos. El mantenimiento de estado de objetos limita posibilidades. Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 24 Servicios de Infraestructura Transacciones Una transacción es un conjunto de tareas que se ejecutan como una unidad Propiedades ACID (A)tomicidad: El trabajo se realiza en su totalidad o no se realiza (C)onsistencia: Se mantiene la coherencia de los datos (aunque se produzcan fallos) (I)solation (Aislamiento): Cada transacción es autónoma y no depende de otras (D)urabilidad: Los resultados permanecen aunque haya fallos Ejemplo: Comprar billete = Reservar plaza + Pagar Interrupción comunicación tras la reserva... Protocolo de consumación en 2 fases Ejemplo: Viaje combinado (varios proveedores y fallo del último...) Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 25 Servicios de Infraestructura Mensajería MOM (Message Oriented Middleware) = Capa que se encarga de la comunicación mediante mensajes Acoplamiento fuerte: El emisor realiza una petición y queda a la espera de la respuesta. Problema: Fallo en comunicación o en receptor? Acomplamiento débil: El emisor envía un mensaje y continúa trabajando 2 modelos: Publica y subscribe Punto a Punto Suscriptor Publicador Tópico Suscriptor Receptor Potencial Emisor Cola Suscriptor Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) Receptor Potencial 26 Servicios de Infraestructura Persistencia Persistencia consiste en el almacenamiento en memoria secundaria del estado de los objetos El contenedor puede encargarse de gestionar dicho almacenamiento Aspectos: Conversión modelo OO a modelo relacional Consultas de datos Rendimiento En EJBs los beans de entidad son objetos con persistencia. 2 posibilidades: Bean Managed Persistence (BMP) Container Managed Persistence (CMP) Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 27 Servicios de Infraestructura Trasparencia de Localización El contenedor se encarga de la localización física del objeto distribuido El cliente accede a través de un nombre lógico que el contenedor resuelve. La dirección exacta sólo es conocida por el contenedor Facilita escalabilidad (ejemplo: clustering) En EJBs, se utiliza JNDI para localizar/asociar nombres a recursos. JNDI es un API común que permite la coexistencia de varios servicios de directorios Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 28 Servicios de Infraestructura Seguridad Retos de seguridad: 1. Integridad: Garantizar que los documentos o mensajes, y sus componentes no han sido alterados 2. Autentificación: Garantizar que una entidad (persona o sistema) es quien dice que es. 3. Autorización: Determinar los privilegios asociados a una entidad 4. Confidencialidad: Garantizar que elementos no autorizados no pueden acceder a documentos, mensajes o sus componentes 5. No repudiación: Prohibir que una entidad niegue haber recibido o enviado un mensaje En EJBs, el contenedor facilita gestión de autorización de forma declarativa mediante roles. Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 29 Componentes Distribuidos: Caso particular: Enterprise Java Beans Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 30 Plataformas existentes EJBs Desarrollados por Sun Microsystems como modelo de componentes de negocio en servidor para Java Se definen como: Una especificación + Un conjunto de interfaces Evolución: EJB 1.0 (1997) Beans de sesión EJB 1.1 (1999) Beans de entidad EJB 2.0 (2001) Beans manejados por mensajes EJB 2.1 (2003) Soporte para Servicios Web EJB 3.0 (borrador) Meta-datos para facilitar desarrollo declarativo Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 31 Tipos de Beans EnterpriseBean Stateless EntityBean MessageDrivenBean SessionBean Stateful CMP Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) BMP 32 Beans de Sesión SessionBean Los Beans de Sesión describen procesos de negocio Ejemplos: ConsultarTarifa, ReservaViaje, etc. 2 tipos: Sin estado: no almacenan información entre peticiones Los beans sin estado facilitan la gestión de recursos del contenedor (mayor rendimiento) Con estado: permiten conversaciones de un cliente Requieren serialización/deserialización de valores Estado conversacional: el estado sólo se almacena durante una sesión del cliente Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 33 Beans de Entidad EntityBean Los Beans de entidad describen elementos del dominio Característica: Persistencia (son almacenables) Ejemplos: Cliente, Avión, Aeropuerto, etc. Aspectos: Necesario declarar una clave primaria (puede ser objeto compuesto) Conversión automática modelo OO a modelo Relacional Manejo de Persistencia: Contenedor vs Componente Incluye lenguaje de consultas EJB-QL similar a SQL Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 34 Beans Manejados por Mensajes MessageDrivenBean Describen procesos de negocio que son accedidos asíncronamente Se subscriben y reaccionan a determinados eventos Facilitan la integración de sistemas ya existentes Ejemplos: ReservaViaje No se declaran interfaces ya que sólo reaccionan a un método: onMessage() Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 35 Interacción entre tipos de EJBs Es posible invocar a Beans de sesión o a Beans manejados por mensajes (MDBs) pero no a Beans de entidad Firewall Cliente HTML Servidor Web Servdor Aplicaciones (Contenedor) JSP RMI-IIOP Socio Negocio Servlet SOAP WSDL UDDI Aplicación Applet Cliente CORBA Cliente Mensaje EJB Sesión EJB Entidad EJB Sesión EJB Entidad EJB MDB EJB Sesión RMI-IIOP IIOP Mensaje Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 36 Partes de un EJB Enterprise Bean: Objeto distribuido propiamente dicho EJBObject: Interceptor Objeto Home: Objeto Factoría Interfaz Remote: Interfaz del Enterprise Bean (también puede ser local) Interfaz Home: Interfaz del Objeto Home Descriptor de Despliegue: Especificación declarativa del componente Cliente Contenedor solicitud creación Factoría interfaz factoría interfaz remota stub Red Transacciones crea Bases Datos Interceptor skeleton interfaz remota Seguridad Objeto Distribuido Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) ... 37 Partes de un EJB Enterprise Bean: Objeto distribuido propiamente dicho EJBObject: Interceptor Objeto Home: Objeto Factoría Interfaz Remote: Interfaz del Enterprise Bean (también puede ser local) Interfaz Home: Interfaz del Objeto Home Descriptor de Despliegue: Especificación declarativa del componente Cliente Contenedor solicitud creación HomeObject interfaz Home interfaz remota stub Red Transacciones crea Bases Datos EJBObject skeleton interfaz remota Seguridad Enterprise Bean Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) ... 38 Partes de un EJB Enterprise Bean El Bean de negocio (EnterpriseBean) es el objeto distribuido propiamente dicho Debe implementar la interfaz serializable así como la interfaz que corresponda a su tipo: SessionBean, MessageDrivenBean ó EntityBean Implementa los métodos que se definan en la interfaz remota (métodos públicos para los clientes) y en la interfaz Home (métodos de creación, destrucción y búsqueda) Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 39 Partes de un EJB EJB Object El Objeto EJB (EJBObject) intercepta las invocaciones al EJB y gestiona los servicios implícitos del contenedor Forma parte del contenedor de EJBs y es generado automáticamente Cliente Contenedor solicitud creación HomeObject interfaz Home interfaz remota stub Red Transacciones crea Bases Datos EJBObject skeleton interfaz remota Seguridad Enterprise Bean Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) ... 40 Partes de un EJB Interfaz del Componente Interfaz remota del componente = contrato entre cliente y Bean de negocio Debe extender la interfaz javax.ejb.EJBObject Se publican los métodos que se quieran invocar desde el cliente La interfaz será implementada por - Bean de negocio (implementado por el desarrollador) - EJBObject (generado automáticamente por contenedor) La interfaz remota es obligatoria en beans de sesión y de entidad También puede definirse una interfaz local que se utiliza cuando el bean se invoca de forma no remota Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 41 Partes de un EJB Objeto Home El objeto Home es la factoría para la obtención de referencias a EJBs (Patrón Factory) La factoría es la responsable de instanciar, buscar y destruir los objetos Los objetos Home son autogenerados y forman parte del contenedor. El desarrollador especifica solamente la interfaz Home Cliente Contenedor solicitud creación HomeObject interfaz Home interfaz remota stub Red Transacciones crea Bases Datos EJBObject skeleton interfaz remota Seguridad Enterprise Bean Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) ... 42 Partes de un EJB Interfaz Home Para generar los objetos Home, el desarrollador debe aportar una interfaz java que extienda la interfaz javax.ejb.EJBHome En esta interfaz se definen los métodos para crear,destruir y localizar EJBs Cliente Contenedor solicitud creación HomeObject interfaz Home interfaz remota stub Red Transacciones crea Bases Datos EJBObject skeleton interfaz remota Seguridad Enterprise Bean Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) ... 43 Partes de un EJB Interfaces Locales Permiten invocar al EJB como si se tratara de un objeto local. Solventan el problema de la sobrecarga cuando el EJB se ejecuta en la propia máquina del cliente. El Objeto Local realiza las tareas de middleware que le corresponderían al EJB Object, y luego le cede el control al bean de negocio. De esta forman, se evitan las tareas propias a la invocación remota (stubs, serialización, etc.). Son opcionales Extienden la interfaz javax.ejb.EJBLocalObject y su factoría javax.ejb.EJBLocalHome Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 44 Partes de un EJB Descriptores de Despliegue Especifica las propiedades y servicios del EJB de forma declarativa (sintaxis XML) Describe cómo ha de ser desplegado el EJB en el contenedor, y cómo ha de ser manejado: Ciclo de vida Sistema de persistencia Control de transacciones Servicios de seguridad. Es un fichero XML: ejb-jar.xml Habrá uno por paquete de despliegue (fichero jar) y puede declarar varios EJBs de distintos tipos Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 45 En resumen... Pasos para crear un EJB El desarrollador debe definir: - interfaz del componente (remota y/o local) - interfaz Home (remota y/o local) - Clase de negocio y clave primaria (para beans de entidad) - Descriptor de Despliegue (parte declarativa,en XML) Cliente Contenedor solicitud creación HomeObject interfaz Home interfaz remota stub Red Transacciones crea Bases Datos EJBObject skeleton interfaz remota Seguridad Enterprise Bean Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) ... 46 Necesario para que el contenedor implemente el EJBObject Ejemplo de EJB de Sesión Interfaz del Componente public interface Suma extends EJBObject { public int suma(int a, int b) throws java.rmi.RemoteException; } Método que va a ser invocado Necesario para todos los métodos de objetos distribuidos Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 47 Necesario para que el contenedor implemente el EJBHome Ejemplo de EJB de Sesión Interfaz Home public interface SumaHome extends EJBHome { Suma create() throws javax.ejb.CreateException,java.rmi.RemoteException; } Método que se invocará al crear el EJB Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 48 Ejemplo de EJB de Sesión Objeto de Negocio public class SumaBean implements SessionBean { Bean de sesión public void ejbActivate() throws EJBException, RemoteException { } public void ejbPassivate() throws EJBException, RemoteException { } public void ejbRemove() throws EJBException, RemoteException { } public void setSessionContext(SessionContext arg0) throws EJBException, RemoteException { } public void ejbCreate() throws javax.ejb.CreateException { } public int suma(int a, int b) { return (a+b); } Métodos que controlan el ciclo de vida (en este caso, no hacen nada) } Implementación del método Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 49 Ejemplo de EJB de Sesión Descriptor de Despliegue (1) <?xml version="1.0"?> <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd"> <ejb-jar> <enterprise-beans> Declara las <session> clases e <ejb-name>ejbSuma</ejb-name> interfaces del <home>com.suma.ejbSuma.SumaHome</home> EJB <remote>com.suma.ejbSuma.Suma</remote> <ejb-class>com.suma.ejbSuma.SumaBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> Indica que es sin </session> estado </enterprise-beans> Delega la ... gestión transaccional al contenedor Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 50 Ejemplo de EJB de Sesión Descriptor de Despliegue (y 2) <assembly-descriptor> <security-role><role-name>everyone</role-name></security-role> <method-permission> Especifica política de <role-name>everyone</role-name> seguridad (todo el mundo puede invocar todos los <method> métodos) <ejb-name>ejbSuma</ejb-name><method-name>*</method-name> </method> </method-permission> Especifica política de transacciones (el contenedor <container-transaction> de crear una transacción si no <method> existe) <ejb-name>ejbSuma</ejb-name><method-name>*</method-name> </method> <trans-attribute>Required</trans-attribute> </container-transaction> </assembly-descriptor> </ejb-jar> Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 51 Ejemplo de EJB de Sesión Código Cliente import com.suma.ejbSuma.SumaHome; public class hazSuma { public static void main(String[] args) { Buscar objeto Home en JNDI try { Context jndiContext = new InitialContext(); Object ref = jndiContext.lookup("Suma"); Convertir referencia a SumaHome home = (SumaHome) objeto Home PortableRemoteObject.narrow(ref,SumaHome.class); Suma s = home.create(); System.out.println("2 + 3 = " + s.suma(2,3)); Crear objeto EJB a partir } catch (Exception e) { del Home System.out.println("Exception: " + e); } Invocar método } Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 52 EJBs Valoración Facilita el desarrollo de aplicaciones Web liberando al programador de la gestión de tareas complicadas: gestión de recursos, transacciones, seguridad, etc. Favorece una mayor separación entre lógica de negocio y presentación Gran penetración en el mercado: numerosas implementaciones comerciales y libres Permite la integración entre tecnologías de última generación y tecnologías ya existentes (legacy systems) Soporte a la escalabilidad del sistema desde el principio Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 53 EJBs Valoración Múltiples capas intermedias Puede perjudicar depuración y rendimiento Tecnología en movimiento, necesidad de consolidación de algunas especificaciones No todas las aplicaciones requieren EJBs. Ejemplos: - Aplicaciones basadas únicamente en interfaz de usuario accediendo a base de datos (sin lógica de negocio) - Aplicaciones muy simples (prototipos), en algunos casos puede ser como matar pulgas a cañonazos... - Limitaciones de EJBs, se requiere utilización de código nativo o programación multi-hilo - Se utilizan otras tecnologías alternativas: .NET o CORBA... Programación declarativa mediante lenguajes no convencionales: vocabularios XML, lenguaje EJB-QL, etc... Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 54 Bibliografía Libros: Mastering EJBs de Ed Roman EJB Design Patterns de Floyd Marinescu Enterprise Java Beans de Richard Monson-Haefel URLS: java.sun.com/products/ejb/ Especificaciones y otros documentos www.theserverside.com: Documentos y Forums www.jguru.com EJB FAQ Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 55 Servicios Web Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 56 Antecedentes Intercambio de XML XML-RPC Adapta RPC para envío de mensajes en formato XML Semilla de SOAP XMOP (XML Metadata Object Persistence) Protocolo de interacción de objetos ebXML (electronic business XML) Proyecto más ambicioso Intercambio de mensajes, gestión y recuperación de errores, calidad de servicio, seguridad, etc. Reciente acuerdo para adoptar SOAP como parte de su infraestructura Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 57 Servicios Web Posible definición Aplicaciones auto-contenidas, auto-descritas que pueden ser publicadas, localizadas e invocadas a través de la Web Una vez desarrolladas, otras aplicaciones (y otros servicios Web) pueden descubrirlas e invocar el servicio dado Petición Internet Servicio Web Respuesta Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) URL 58 Servicios Web Factores que influyeron en su aparición Computación Distribuida: RPC, CORBA, RMI, DCOM Sistemas fuertemente acoplados Integración de aplicaciones: EAI (Enterprise Application Integration) Reacción frente a sistemas ERP monolíticos Aparición de XML Adopción por principales industrias XML-RPC Necesidad de intercambios B2B Sistemas de integración EDI, RosettaNet, ebXML Comercio electrónico y burbuja de Internet Necesidad de nuevas fórmulas Microsoft vs. Java Compatibilidad Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 59 Servicios Web Objetivos Independencia del lenguaje y de la plataforma Separación de especificación de la implementación Interoperabilidad Utilización de estándares: XML, SOAP, WSDL, UDDI... Acoplamiento débil: Sistemas basados en mensajes Interacciones síncronas y asíncronas A través de Internet Sin control centralizado Utilización de Protocolos establecidos Consideraciones de seguridad Modularidad y Reusabilidad de servicios Escalabilidad: Aplicaciones uno-a-uno frente a uno-a-muchos Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 60 Servicios Web Principales Vocabularios Protocolo de transporte HTTP/HTTPs (principalmente) Codificación de datos y mensajes SOAP (Simple Object Access Protocol) Descripción del servicio WSDL (Web Service Description Language) Búsqueda y localización de servicios UDDI (Universal Discovery, Description and Integration) Otra definición Programas accesibles en Internet que esponen su funcionalidad recibiendo/enviando mensajes SOAP a través de HTTP(s) y describen su interfaz en WSDL Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 61 Servicios Web Principales Vocabularios UDDI HTTP petición SOAP (XML) Implementación servicio Web respuesta SOAP (XML) Consumidor servicio Web Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 62 Servicios Web Arquitectura de Aplicaciones Dispositivo del Cliente Base Datos HTML XML XSLT WML SOAP Servicio Web VoiceXML Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 63 Servicios Web Arquitectura de Aplicaciones Facturación SOAP SOAP XML Internet SOAP SOAP Gestión de Usuarios Aplicación del usuario SOAP Conversión de Monedas Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 64 SOAP Evolución SOAP: Define el formato de los mensajes SOAP = Simple Object Access Protocol Aunque tiene poco de objetos... Evolución Desarrollado a partir de XML-RPC SOAP 1.0 (1999), 1.1 (2000), 1.2 (2002) Participación inicial de Microsoft Adopción posterior de IBM, Sun, etc. Aceptación industrial Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 65 SOAP Formato Envelope Header Header Key Header Key Body Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 66 SOAP Ejemplo <?xml version=‘1.0’ ?> <soap:Envelope xmlns:soap=‘http://www.w3.org/2001/12/soap-envelope’ xmlns:p =‘http://www.mafia.it/pizzas’> <soap:Header> <p:prioridad> urgente </p:prioridad> <p:origen>pepe@oviedo.es</p:origen> </soap:Header> <soap:Body> <p:encargo> <p:pizza nombre=‘Margarita’> <p:tamaño>familiar</p:tamaño> <p:comentario>con mucho queso</p:comentario> </p:pizza> </p:encargo> </soap:Body> </soap:Envelope> Cabecera Contenido Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 67 SOAP Formato general SOAP especifica el formato de mensajes Es independiente del protocolo de transporte Aunque se define un enlace (binding) con HTTP envelope: Pueden especificarse datos globales (codificación, espacios de nombres, etc.) Contiene: header (opcional) + body (obligatorio) body contiene datos en formato XML header contiene meta-información Extensiones obligatorias/opcionales Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 68 SOAP Header header incluye información sobre el mensaje Facilita futuras extensiones Seguridad, transacciones, etc. Información procesable por intermediarios Atributos pre-definidos mustUnderstand (true/false) Si el elemento no puede procesar dicha información devuelve un error actor Indica qué nodo debe procesar la información Si no aparece, debe procesarla el nodo receptor final Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 69 SOAP Fault fault: Formato predefinido de mensajes de error Se incluye el elemento fault en el cuerpo Subelementos predefinidos faultcode: Código del error Predefinidos: VersionMismatch, MustUnderstand, DTDNotSupported, DataEncodingUnknown, Sender, Receiver faultstring: Explicación legible por personas detail: Información específica de la aplicación Puede contener elementos XML faultactor: URI del nodo que causó el error Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 70 SOAP Fault <?xml version=‘1.0’ ?> <soap:Envelope xmlns:soap=‘http://www.w3.org/2001/12/soap-envelope’> <soap:Body> <soap:Fault> <faultcode>soap:Receiver’</faultcode> <faultstring>Error al procesar</faultstring> <detail> <p:detalles xmlns:p=‘http://www.mafia.it/pizzas’> <mensaje>La pizza Barbacoa no puede llevar tanto queso</mensaje> </p:detalles> </detail> </p:pizza> </soap:Fault> </soap:Body> </soap:Envelope> Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 71 SOAP Codificación Atributo encodingStyle define reglas de codificación Algunos tipos básicos predefinidos Enteros, cadenas, flotantes Contiene reglas específicas para: Estructuras Arrays Referencias Se complementa con XML Schemas Pueden definirse otros sistemas de codificación Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 72 SOAP Codificación Tipos básicos <?xml version=‘1.0’ ?> <soap:Envelope xmlns:soap=‘http://www.w3.org/2001/12/soap-envelope’ xmlns:xsi=“http://www.w3.org/2001/XMLSchema” encodingStyle=‘http://www.w3.org/2001/12/soap-encoding’> <soap:Body> <p:pizza> <p:código xsi:type=‘soap:int’>234</p:comida> <p:tamaño xsi:type =‘soap:string’>familiar</p:tamaño> </p:pizza> </soap:Body> </soap:Envelope> Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 73 SOAP Codificación Estructuras struct Pizza { int código; string nombre; }; <Pizza xmlns=‘cualquier_URI’> <código>234</código> <nombre>Barbacoa</nombre> </Pizza> Arrays <pizzas xsi:type=‘soap:Array’ soap:arrayType=‘p:Pizzas[2]’> <pizza> <código>234</código> <nombre>Barbacoa</nombre> </pizza> <pizza><código>237</código> <nombre>Barbacoa</nombre> </pizza> </pizzas> Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 74 SOAP Codificación Arrays parciales <pizzas xsi:type=‘soap:Array’ soap:arrayType=‘p:Pizzas[10]’ soap:offset=‘[4]’> 5º y 6º <pizza> <código>234</código> <nombre>Barbacoa</nombre> elemento </pizza> <pizza><código>237</código> <nombre>Barbacoa</nombre> </pizza> </pizzas> <pizzas xsi:type=‘soap:Array’ soap:arrayType=‘p:Pizzas[10]’> <pizza soap:position=‘2’> <código>234</código> 2º y 5º <nombre>Barbacoa</nombre> </pizza> elemento <pizza soap:position=‘5’ ><código>237</código> <nombre>Barbacoa</nombre> </pizza> </pizzas> Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 75 SOAP Ejemplo con HTTP POST /Suma/Service1.asmx HTTP/1.1 Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: longitod del mensaje SOAPAction: "http://tempuri.org/suma" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <suma xmlns="http://tempuri.org/"> <a>3</a> <b>2</b> </suma> </soap:Body> </soap:Envelope> Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 76 SOAP Ejemplo de respuesta HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: longitud del mensaje <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <sumaResponse xmlns="http://tempuri.org/"> <sumaResult>5</sumaResult> </sumaResponse> </soap:Body> </soap:Envelope> Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 77 WSDL Evolución WSDL (Web Services Description Language) Describe: Qué puede hacer el servicio Dónde reside Cómo invocarlo Vocabulario basado en capas Es posible concentrarse en una capa cada vez Evolución: Iniciativa conjunta de Ariba, IBM y Microsoft (2001) Propuesto a W3C como recomendación (WSDL 1.1) (2003) En desarrollo WSDL 2.0 Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 78 WSDL Estructura del documento definitions types Tipos de datos usados en los mensajes (XML Schema) message Definición abstracta de los datos transmitidos. portType Conjunto de operaciones abstractas binding Protocolo concreto y especificaciones de los formatos de las operaciones del mensaje Especifica una dirección para el enlace definiendo un único punto de destino port service Colección de puntos de destino Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 79 WSDL Ejemplo <?xml version="1.0" encoding="utf-8" ?> <definitions xmlns:s=. . . <types> <s:schema <s:element name="suma"> <s:complexType> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="a" type="s:int" /> <s:element minOccurs="1" maxOccurs="1" name="b" type="s:int" /> </s:sequence> </s:complexType> </s:element> ... <message name="sumaSoapIn"> <part name="parameters" element="s0:suma" /> </message> ... Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 80 WSDL Ejemplo ... <portType name="ServicioSumaSoap"> <operation name="suma"> <input message="s0:sumaSoapIn" /> <output message="s0:sumaSoapOut" /> </operation> </portType> ... <binding name="ServicioSumaSoap" type="s0:ServicioSumaSoap"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> <operation name="suma"> <soap:operation soapAction="http://tempuri.org/suma" style="document" /> <input> <soap:body use="literal" /> </input> <output> <soap:body use="literal" /> </output> </operation> </binding> <service name="ServicioSuma"> <port name="ServicioSumaSoap" binding="s0:ServicioSumaSoap"> <soap:address location="http://localhost/Suma/Service1.asmx" /> </port> </service> </definitions> Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 81 UDDI Definición UDDI (Universal Discovery, Description and Integration) Consorcio formado por IBM, Hp, Sun, Microsoft, Oracle, etc. UDDI 1.0 (2000) Fundación del registro UDDI 2.0 (2001) Alineación con estándares y taxonomía de servicios más flexible UDDI 3.0 (2002) Interacción de implementaciones públicas y privadas 2 partes Descripción de negocios Páginas blancas (información de contacto) “ amarillas (información de la industria) “ verdes (información técnica y especificaciones) Registro de servicios Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 82 UDDI Definición Provider: Información sobre la entidad que ofrece el servicio tModel: Descripciones de especificaciones de servicios 0…n Service: Información descriptiva sobre una familia particular de ofertas 0…n Binding contiene referencias a tModels. Estas referencias declaran las especificaciones del interfaz 0…n Binding: Información técnica sobre un punto de entrada a un servicio Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 83 UDDI Funcionamiento 1. El desarrollador construye un servicio para convertir monedas servicio Web conversión 2. 5. El usuario construye una aplicación que consuma el servicio Web directamente SOAP El desarrollador registra y clasifica el servicio Web Servicios UDDI 3. El usuario pregunta a UDDI por servicios de conversión 4. El usuario determina el servicio de conversión más apropiado Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 84 Utilización de un Servicio Web Ejemplos Consltar listados de servicios Web www.xmethods.net www.bindingpoint.com Pueden ejecutarse Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 85 Utilización de servicios Web Ejemplos: Google Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 86 Utilización de servicios Web Ejemplos: Amazon Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 87 Implementación de Servicios Web Posibilidades Java APIs de Sun: JAXRPC, JAXM, SAAJ, Librerías de Apache: Axis Microsoft .NET ASP.NET para C#, VBasic, etc. MS SOAP Toolkit Otros: SOAP::Lite (Perl), NuSOAP (PHP), Axis (C++) Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 88 Implementación de Servicios Web APIs de Java SAAJ (SOAP with Attachments API for Java) Tratar mensajes SOAP como objetos Java JAX-RPC (Java API for XML based RPC) Modelo de programación Conversión WSDL/XML Java Manejo de SOAP y SOAP con Attachments API para cliente: WSDL, Invocación y proxy dinámico JWSDL Acceso a descripciones WSDL JAXR (Java API for XML Registries) Acceso a registros de servicios Web (UDDI) Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 89 Implementación de Servicios Web Apache Axis Sucesor de Apache SOAP (software abierto) Soporta JAX-RPC y SAAJ Arquitectura flexible y extensible Necesita servidor de aplicaciones (por ejemplo Tomcat) Validar la instalación: http://localhost:8080/axis Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 90 Implementación de Servicios Web Creación de un Cliente WSDL Descripción del servicio adaptador WSDL2Java stubs clases Java generadas javac cliente código cliente Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 91 Implementación de servicios Web Creación de un cliente 1.- Acceder a WSDL http://petra.euitio.uniovi.es/~labra/ws/suma.php?wsdl Almacenar como suma.wsdl 2.-Generar stubs > java org.apache.axis.wsdl.WSDL2Java -p suma suma.wsdl 3.- Comprobar clases generadas > ls suma/*.java ServicioSuma.java ServicioSumaBindingStub.java ServicioSumaLocator.java ServicioSumaPortType.java 4.- Compilar clases generadas > javac suma/*.java Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 92 Implementación de servicios Web Creación de un cliente ClienteSuma.java import suma.*; public class ClienteSuma { public static void main(String[ ] args) throws Exception { try { ServicioSumaLocator loc = new ServicioSumaLocator(); ServicioSumaPortType p = loc.getServicioSumaPort(); System.out.println("2 + 3 = " + p.suma(2,3)); } catch (Exception e) { System.err.println("Excepción: " + e); } } } 4.- Compilar cliente > javac CienteSuma.java 5.-Ejecutar cliente > java ClienteSuma 2+3=5 Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 93 Implementación de un servicio Web Creación de un cliente Ejercicio: Consultar temperatura del aeropuerto de Avilés... http://live.capescience.com/wsdl/GlobalWeather.wsdl ClienteTemp.java public class ClienteTemp { public static void main(String args[]) throws Exception { try { GlobalWeather_ServiceLocator loc = new GlobalWeather_ServiceLocator(); GlobalWeather_Port s = loc.getGlobalWeather(); System.out.println("Temperatura en Aeropuerto de Asturias: " + s.getWeatherReport("LEAS").getTemperature().getString()); } catch (Exception e) { System.err.println("Excepción: " + e); } } } Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 94 Implementación de Servicios Web Creación de un Servicio Web Método simple: JWS Suma.jws public class Suma { public int suma(int a, int b) { return a + b; } } Almacenar en: <TOMCAT>\webapps\axis\Suma.jws http://localhost:8080/axis/Suma.jws Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 95 Implementación de Servicios Web Creación de un Servicio Web Utilizar JWS tiene sus limitaciones Debe disponerse del código fuente Los errores aparecen en tiempo de ejecución La clase no puede tener package Sólo se pueden transferir datos simples No se puede configurar el servicio Método riguroso: WSDD (Web Service Deployment Descriptor) Permite desplegar (deploy) y quitar (undeploy) servicios Pueden utilizarse servicios compilados Control de las Conversiones de tipos Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 96 Implementación de Servicios Web Creación de un Servicio Web ServSuma.java package ServSuma; public class ServSuma { public int suma(int a, int b){ return (a + b); } } 1.- Compilar servicio > javac ServSuma.java 2.-Copiar ServSuma.class a <TOMCAT>/webapps/WEB-INF/classes/ServSuma/ServSuma.class También puede dejarse un .jar en WEB-INF/lib Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 97 Implementación de Servicios Web Creación de un Servicio Web deploy.wsdd <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="ServSuma" provider="java:RPC"> <parameter name="className" value="ServSuma.ServSuma"/> <parameter name="allowedMethods" value="*"/> </service> </deployment> 3.- Desplegar servicio > java org.apache.axis.client.AdminClient deploy.wsdd Processing file deploy.wsdd <Admin>Done processing</Admin> Puede ser necesario reiniciar servidor 4.- Acceder a http://localhost:8080/axis/services/ServSuma Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 98 Implementación de Servicios Web Otras características de Axis Invocación dinámica Dynamic Invocation Interface Invocación mediante Proxy Conversión Java2WSDL Permite generar WSDL a partir de clases/interfaces Java Generación de ficheros WSDD para deploy/undeploy Seguridad Otros protocolos de transporte Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 99 Interoperabilidad Acceso desde .NET a servicio en Java 1.- Acceso a WSDL y creación de Stubs (o proxys) > wsdl http://localhost:8080/axis/services/ServSuma?wsdl ... Writing file 'C:\usr\labra\cursos\XMLInnova\WebServ\ClienteNet\ServSumaService.cs'. En algunas versiones es necesario editar ServSumaService.cs y modificar this.URL para que incluya el puerto 8080 2.- Compilación de proxys > csc /t: library ServSumaService.cs using System; 3.- Creación de cliente cliente.cs 4.- Compilación de cliente public class ClienteSumaNet { public static void Main() { ServSumaService srv = new ServSumaService(); Console.WriteLine("2 + 3 = {0}", srv.suma(2,3)); }} > csc cliente.cs /reference:ServSumaService.cs 5.- Ejecución > cliente 2+3=5 Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 100 Interoperabilidad Servicios Web en .NET Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 101 Interoperabilidad Servicios Web en .NET Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 102 Interoperabilidad Servicios Web en .NET Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 103 Interoperabilidad Servicios Web en PHP suma.php <?php include "nusoap.php"; $namespace = "http://petra.euitio.uniovi.es/~labra/ws/suma.php?wsdl"; $servidor = new soap_server; $servidor -> configureWSDL ("ServicioSuma", $namespace, "http://petra.euitio.uniovi.es/~labra/ws/suma.php"); $servidor -> wsdl -> schemaTargetNamespace = $namespace; $servidor -> register ('suma', array ('a' => 'xsd:float', 'b' => 'xsd:float'), array ('return' => 'xsd:float'), 'http://petra.euitio.uniovi.es/~labra/ws/suma.php', '', '', '', '' ); $servidor -> service ($HTTP_RAW_POST_DATA); function suma ($a, $b) { if (!$a || !$b) { return new soap_fault ("Client", "", "Se necesitan dos argumentos"); } if ((gettype ($a) != "integer" && gettype ($a) != "double") || (gettype ($b) != "integer" && gettype ($b) != "double")) { return new soap_fault ("Client", "", "El tipo debe ser entero o real"); } return $a + $b; } ?> Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 104 Arquitecturas Orientadas a Servicios Definición SOA = Service Oriented Architectures Construcción de aplicaciones partiendo de interfaces, con el objetivo de desarrollar agentes débilmente acoplados que se comunican entre sí. Ejemplo Un tocadiscos es un servicio... ...le pasamos un disco y suena música En POO se encapsulan datos y procesos ...el disco incluiría su tocadiscos... Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 105 Arquitecturas Orientadas a Servicios Modelo tradicional Datos IVA Algoritmos IVA Algoritmos Envío Aplicación Integrada Compilación Aplicación Tiempo de construcción Fuente datos datos envío Tiempo de configuración Tiempo de ejecución Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 106 Arquitecturas Orientadas a Servicios Modelo Orientado a Servicios servicio cálculo IVA Aplicación Compilación Aplicación Integrada servicio gastos envío Tiempo de construcción Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) Tiempo de ejecución 107 Arquitecturas Orientadas a Servicios Principales características Importancia de las interfaces Descripción rigurosa de interfaces (legibles por máquinas) Recomendación: Partir de WSDL + XML Schema Modelos débilmente acoplados Sistemas de comunicación asíncrona Estilo documento vs. estilo RPC Colas de mensajes Ej. Solicitar un libro Interoperabilidad Independencia de lenguajes y plataformas Adaptación de arquitecturas ya existentes Utilización de estándares Modelo REST vs SOAP Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 108 Servicios Web Retos Gestión de servicios Web WSDM - Web Services Distribution Management Agregación de servicios Ejemplo. Reserva de avión + hotel Evolución de los servicios Cambio de la Interfaz Modelización de procesos de negocios BPEL - Business Process Execution Language Contratos, facturación ¿Quién gana dinero? ¿Qué pasa cuando algo falla? Seguridad y fiabilidad XML Security Calidad de servicios Tiempos de respuesta, soporte, monitorización, etc. Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 109 Servicios Web Mitos... Web para ordenadores? ... no confundir con Web semántica Nueva arquitectura? ...en realidad, usan arquitecturas ya existentes Obligarán a cambiar de plataformas? ... es posible incorporar sistemas heredados Lengua universal para las aplicaciones? ...no proporcionan semántica, sólo una sintaxis común Nuevo modelo de negocios? ...el negocio es el servicio, no la forma en que se suministra Ventaja competitiva? ...peligro de adoptar tecnología inmadura. Enlace automático a socios desconocidos? ...modelo de negocio no desarrollado Estándares bien definidos? ...algunos se están desarrollando y otros ni siquiera se han desarrollado Es lo mismo que .NET? ...Independiente de plataforma... Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 110 Más información www.wsindex.org Información de servicios Web y Web semántica www.searchwebservices.com Portal de servicios Web orientado a empresas www.webservices.org Sobre servicios Web www.xmethods.net Lista de servicios Web www.soapware.org Portal sobre SOAP www.w3c.org/2002/ws Especificaciones relacionadas con servicios Web Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 111 Otras Arquitecturas: Agentes Sistemas Colaborativos Peer-to-peer Grid computing Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 112 Sistemas de Agentes Código móvil: Aplicaciones globales que pueden intercambiar unidades activas de comportamiento (computaciones), no simplemente datos. Modelos: Evaluación remota: Código que se envía a un ordenador remoto para que lo ejecute Código bajo demanda: Código que se va obteniendo y ejecutando a medida que se necesita (JIT) Agentes móviles: Procesos que pueden suspender su ejecución y migrar a otro ordenador en el que continúan la ejecución Movilidad débil: El código se mueve a otro entorno, se enlaza y se ejecuta (no se transmite el estado). Movilidad fuerte: Un hilo puede mover su código y estado de la ejecución a un sitio diferente y continuar la ejecución al llegar Movilidad total: Se mueve el estado completo, incluidas las pilas de ejecución de todos los hilos migración transparente Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 113 Sistemas de Agentes: Características El agente es un programa y necesita un entorno de ejecución (servidor que suministra recursos) Autonomía: El código se ejecuta independientemente del usuario que lo crea Orientación a un objetivo (goal oriented): El código persigue un objetivo y para ello puede actuar sobre el entorno en el que se ejecuta Reactividad: El agente siente los cambios en el entorno y actúa de acuerdo a ellos Adaptatividad/aprendizaje: El agente actúa de acuerdo a su experiencia Autocontenido: El agente posee todos los datos que necesita para ejecutarse y migrar Coordinación: Los agentes pueden coordinarse entre sí para realizar una actividad compleja Desconexión: El agente puede seguir ejecutándose aunque el usuario (o dueño) esté desconectado Puede decidir dormir, y reestablecer conexión periódicamente El usuario puede traer de vuelta al agente cuando lo desea Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 114 Sistemas de Agentes: Tecnologías Tecnologías Java Mole, Concordia, Mobile Objects and Agents Voyager IBM Aglets Agent Communication Language (ACL) Vocabulario KIF (Knowledge Interchange Language) KQML (Knowledge Query Manipulation Language) Diversas arquitecturas: InteRRAP, GRATE, ADEPT Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 115 Sistemas de Agentes: Valoración Ventajas Los agentes pueden reducir el tráfico en la red No se requiere que el usuario esté conectado para que la computación se ejecute Pueden utilizarse como intermediarios (proxy) Los computadores de los usuarios no requieren gran capacidad (posible aplicación: PDAs) Desventajas Dependencia de la red, no siempre se reduce el tráfico Se requiere independencia de plataforma Código no optimizado Seguridad Requiere chequeo de código antes de ejecución Tolerancia a Fallos, ¿y si el servidor que ejecuta el código se cae? Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 116 Sistemas Colaborativos La Web nació como una tecnología colaborativa Visualización / Creación de contenidos Ejemplo: Amaya Protocolo HTTP Sistemas de Edición compartida: Sistemas Wiki, Weblogs, Blogs Mensajería Instantánea: Jabber Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 117 Sistemas peer-to-peer Sistemas de intercambio de información y/o servicios entre nodos de una red con la misma capacidad o papel. Los ordenadores se intercambian el papel de cliente/servidor Aplicaciones: música (Napster, Soul seek), Vídeos y otros archivos (Kazaa) Mensajes personales (ICQ) Ciclos computacionales SETI@home: Search for extraterrestiral Intelligence BOINC: Berkeley Open Infraestructure for Network Computing Colecciones de documentos (LOCKSS), etc. Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 118 Sistemas peer-to-peer Topologías Servidor de Directorios Centralizado (sistemas híbridos) Algunos nodos tienen carácter especial (servidores de directorio) Ejemplos: Napster, Pointerra, OpenNap Problemas: Punto simple de fallo (si el servidor de directorio falla, la aplicación p2p falla). Soluciones mediante granjas de servidores. Cuello de botella (gran base de datos si hay muchos usuarios) Problemas de copyright: Si los servidores pertenecen a una compañía, ésta puede tener problemas legales. peers Servidor directorios Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 119 Sistemas peer-to-peer Topologías Directorio Descentralizado (super-peer) Se utilizan líderes de grupo (super-peers) Los super-peers están a su vez conectados entre sí como peers Se requiere uno (o más) nodos de arranque Asignan los líderes de grupo Los peers están enlazados virtualmente Ejemplos: KaZaA/FastTrack Problemas: Protocolos complejos Falta de simetría Problemas si fallan los super-peers Posibles cuellos de botella Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 120 Sistemas peer-to-peer Topologías Sistemas peer-to-peer puros: Todos los nodos tienen la misma capacidad Sistema de Inundación de preguntas (query flooding): Las peticiones se transmiten a los nodos vecinos y éstos a su vez a otros nodos. Problemas de escalabilidad Ejemplos: GNUTella Freenet: Sistemas Intercambio seguro y anónimo Se intenta proteger la identidad de la información pregunta unirse Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 121 Computación Colaborativa Grid Computing, Cluster Computing Orígenes = Enlazar supercomputadores dispersos geográficamente Infraestructura que facilita intercambio de computaciones Comparación con red eléctrica = Disponibilidad global de ciclos de computación Varias posibilidades: Cluster Computing: Sistemas homogéneos Grid Computing: Sistemas heterogéneos y dinámicos Fuerte soporte industrial: Oracle, Sun, IBM, etc. Ejemplos: Distributed.net - Retos computacionales, ej. descifrado de códigos SETI@Home - Search for extraterrestrial Intelligence grid.org Lucha contra el cáncer globus.org Infraestructura para grid computing Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 122 Sistemas de Edición colaborativa Wikis Wikis = Portales que facilitan la edición colaborativa de contenido wiki wiki = significa rápido en hawaiano Facilitan la edición rápida de contenido por parte de los usuarios Varios ejemplos: wikipedia, nupedia, etc... Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 123 Otros Sistemas Colaborativos Trabajo en Grupo Software de trabajo en Grupo: Groupware Desarrollo de proyectos: eGroupWare, phpGroupware, Desarrollo de software: Sourceforge, bugzilla, CVS, Subversion, etc. Protocolos de Edición distribuida: WebDAV Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 124 Otros Sistemas Colaborativos Weblogs Sistemas de registro: Weblogs, Blogs, etc. Ejemplo de aplicación: http://allconsuming.net/ Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 125 Otros Sistemas Colaborativos Mensajería Instantánea, chatbots Sistemas de mensajería instantánea Jabber = Protocolo de Mensajería instantánea sin servidores centralizados ChatBots = Robots que conversan automáticamente. Ejemplo: ALICE Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 126 Más información Servicios Web Portal sobre SOAP www.soapware.org Lista de servicios Web www.xmethods.com Sobre servicios Web www.webservices.org Especificaciones relacionadas con servicios Web www.w3c.org/2002/ws Varios artículos comparando ventajas e inconvenientes de XML y servicios Web www.zapthink.com Páginas con información sobre agentes: Agents 101: agents.umbc.edu/introduction/ AgentLand: www.agentland.com Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 127 Más Información Peer-to-Peer y Grid Computing Workshop on Peer-to-peer http://www.lri.fr/~fci/GP2PC-04.htm Peer-to-Peer Working Group www.p2pwg.org SETI@home http://setiathome.ssl.berkeley.edu Distributed.net, Project RC5 www.distributed.net/rc5 Global Grid Forum www.gridforum.org Grid Computing Info Centre www.gridcomputing.com Curso Doctorado:Universidad Pontificia de Salamanca (Jose E. Labra) 128