Servicios Web: Concepto



Documentos relacionados
Manual de Desarrollador Autenticación Automática

Consulta a Padrón Nivel 10

RMI [Remote Method Invocation]

Web Service de Calidad de datos identificativos

Modelo de Objetos Distribuidos

Manual de Desarrollador Externo

GUI A D E I NSTALA CIO N D E AX IS

Openbravo WebServices

1. Visión general de RMI

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Tema 6: Comparativa CORBA/Servicios Web

La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la

Introducción a XML (III) - Web Services Huibert Aalbers Senior Certified Software IT Architect

Llamada a métodos remotos (RMI). Curso 04/05. Tema 9. Departament d Informàtica. Universitat de València. 1. Introducción 2

1. Introducción a los Servicios web

Manual del Protocolo XML-RPC de Mensajería Negocios

TECNOLOGÍAS ASOCIADAS A LAS APLICACIONES WEB

5.1 Introducción a Servicios Web

Práctica sobre compartición de instancias remotas.

JAVA EE 5. Arquitectura, conceptos y ejemplos.

GLOSARIO. Arquitectura: Funcionamiento, estructura y diseño de una plataforma de desarrollo.

Consulta a Padrón Nivel 3

Web Services en Java. Taller de Programación. Instituto de Computación Facultad de Ingeniería Universidad de la República

Práctica 2: Java Remote Method Invocation (RMI)

TEMA 5. Otras arquitecturas distribuidas IV. Web Services

Manual de integración con el TPV Virtual para comercios con conexión por Web Service

Aplicaciones y Servicios Web (Web Services)

CREAR UN SERVICIO WEB BASICO CON JAVA AXIS2. Víctor J. Sosa

El lenguaje de programación Java

Práctica 4: Java Remote Method Invocation (RMI)

Servicios web. Contenido. Programación en Internet Curso Introducción Los pilares (SOAP, WSDL, UDDI) Desarrollo de un servicio web

Manual de Desarrollador Externo

Manual de usuario. Descripción del servicio de envío de mensajes

1.9.- Descripción del servicio: WSDL (VI)

Java RMI. las RPC de Java. Parte I. Luis Fernando Llana Díaz. Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Consulta a Padrón Nivel 10

Cursos de Extensión Universitaria UNIVERSIDAD DE OVIEDO. Servicios Web (II)

Java Básico. Empaquetamiento y despliegue de aplicaciones. Copyright

GALA. Servicios WEB. Curso ASP.NET Desarrollo de Sitios y Servicios Web con Visual Basic 2010, 24 h. L25. Servicios Web en Integración

Guía de migración a firma HMAC SHA256 Conexión por Web Service

Introducción WSDL SOAP::WSDL. Ejemplo. Conclusiones. wsdl2perl.pl

Desarrollo de Servicios Web con JBuilder

Ingeniería del Software Arquitectura Física en 3 niveles

WINDOWS : TERMINAL SERVER

8. Sentencia return y métodos

Especificación Técnica del WebService de Autenticación y Autorización

Remote Method Invocation (RMI) de Java

Desarrollo de Servicios Web con JBuilder

Práctica 5: Common Object Request Broker Architecture CORBA

Arquitectura cliente/servidor

CONTENIDO. Serialización. Carga dinamica de stubs RMI AVANZADO. Callbacks. Carga dinámica de Stubs

Tema 1. Introducción a JAVA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

DESARROLLO WEB EN ENTORNO SERVIDOR

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA

2.2.- Paradigmas de la POO

Introducción al lenguaje Java

Programación orientada a objetos

Internet Information Server

Servicios Web. Andrés Pastorini. TRIA Tecnólogo Informático

Introducción a las redes de computadores

PORTAL DE INTEGRACIÓN DE BANCOS DE INFORMACIÓN DISPERSOS A TRAVÉS DE WEB SERVICES Autor: Ing. Walther Antonioli Ravetto

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

Desarrollo y servicios web

Sistemas Operativos Distribuidos. Introducción a los Servicios Web (Web Services)

WbS Web Services. Roberto Gómez Cárdenas Web Services

Práctica 1: Instalación de un servidor de aplicaciones web y diseño de la vista de una aplicación

Primera Escuela de la Red Temática SVO. Madrid, Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.

3.9 Patrón Distributed callback

Arquitectura Cliente/Servidor. Invocación de Métodos Remotos RMI: Remote Method Invocation. Llamadas a Métodos Remotos

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

1. Manejo de memoria estática 2. Manejo de memoria dinámica

Tema 4. Servicios WEB

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

Práctica 5: Callbacks RMI.

Documentacion de servicios para los SARCF del proyecto FACe. Equipo de desarrollo de la plataforma FACe. Versión 1.2.9

Introducción a la programación orientada a objetos

en otra máquina exactamente de la misma manera que si se encontrará en la misma máquina

Programación Orientada a Objetos. Java: Excepciones

7.1 Java vs.net, la lucha se acrecienta

Service Oriented Architecture

Consulta a Padrón Nivel 10

Capítulo 5. Cliente-Servidor.

Protocolo de intercambio de información (Web Services)

Universidad ORT - Arquitectura de Software. Requisitos

MODELO DE IMPLEMENTACIÓN

SOR -::- Prácticas -::- Curso 06/07

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin.

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación

JAVA RMI (REMOTE METHOD INVOCATION)

Programación Orientada a Objetos con Java

Desarrollo de Servicios Web para la ETN

Modulo I. Introducción a la Programación Web. 1.1 Servidor Web.

Interacción entre Aplicaciones: objetos distribuidos e invocación remota

GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII

WEB SERVICES. Manual técnico para desarrollador

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

Transcripción:

Servicios Web y RMI http://www.it.uc3m.es/pedmume/

Servicios Web: Concepto Uso más habitual de un servidor es dar una respuesta al usuario de una determinada página (PHP, ASP, J2EE ). Las páginas están disponibles para los usuarios Otro uso es el de proporcionar disponibles una serie de métodos que son accesibles para ser llamados desde otras máquinas de manera remota. Es el concepto de Servicios Web. Los métodos remotos están disponibles para las máquinas Computación distribuida. En lugar de tener todos los métodos locales, se pueden invocar métodos remotos en servidores que ofrecen esos servicios Los Servicios Web ofrecen unos métodos con una serie de parámetros y devuelven una salida 2

Servicios Web: Ventajas El tener los métodos de manera remota, puede parecer inicialmente un problema, pero presenta una serie de ventajas: Los cambios en los métodos de los Servicios Web son transparentes para el programador. El programador sólo se debe ocupar de conocer la interfaz al método del Servicio Web Se pueden implementar funcionalidades nuevas que no es posible mediante la programación local, aprovechando la potencia de la Web. Por ejemplo un buscador de páginas web El almacenamiento y ejecución de los programas no recae en una sola máquina sino que está repartida por todas las máquinas de Internet de las que se hace uso. Computación distribuida Permiten interconexión de clientes y máquinas remotas con independencia de los lenguajes de programación de ambos 3

Servicios Web: Visión General Servicios Web: Visión General Descripción de cuales son los parámetros de entrada y de salida, los tipos de mensajes intercambiados, etc. de forma que el servicio Web quede descrito. Por ejemplo WSDL. Tecnología en XML para dicha descripción Mensajes intercambiados en los protocolos para transferir la información y hacer las peticiones y respuestas. Por ejemplo SOAP. Tecnología en XML para dicha descripción APIs y artilugios de los clientes y los servidores para dejar disponibles esos métodos y poder llamarlos. Dependerá del lenguaje de programación. Por ejemplo AXIS como librería en JAVA 4

Servicios Web: WSDL Fichero XML con estas etiquetas: definitions: Elemento raíz types: Los tipos de datos que se van a transmitir message: Los mensajes que se van a transmitir. Pueden ir diferentes elementos part, que indican parámetros de entrada y salida, diciendo su tipo de datos porttype: Las operaciones o funciones que serán soportados. Pueden ir elementos input y output que referencian a los mensajes definidos, para ver cada secuencia de operaciones binding: Cómo se van a transmitir los mensajes y detalles SOAP service: Dónde está localizado el servicio 5

Ejemplo WSDL (I) <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions targetnamespace="urn:datos" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="urn:datos" xmlns:intf="urn:datos" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <wsdl:message name="setresponse"> <wsdl:part name="setreturn" type="xsd:string"/> </wsdl:message> <wsdl:message name="getrequest"> <wsdl:part name="in0" type="xsd:string"/> <wsdl:part name="in1" type="xsd:string"/> </wsdl:message> <wsdl:message name="getresponse"> <wsdl:part name="getreturn" type="xsd:string"/> </wsdl:message> <wsdl:message name="setrequest"> <wsdl:part name="in0" type="xsd:string"/> <wsdl:part name="in1" type="xsd:string"/> <wsdl:part name="in2" type="xsd:string"/> </wsdl:message> 6

Ejemplo WSDL (II) <wsdl:porttype name="datos"> <wsdl:operation name="get" parameterorder="in0 in1"> <wsdl:input message="impl:getrequest" name="getrequest"/> <wsdl:output message="impl:getresponse" name="getresponse"/> </wsdl:operation> <wsdl:operation name="set" parameterorder="in0 in1 in2"> <wsdl:input message="impl:setrequest" name="setrequest"/> <wsdl:output message="impl:setresponse" name="setresponse"/> </wsdl:operation> </wsdl:porttype> 7

Ejemplo WSDL (III) <wsdl:binding name="datossoapbinding" type="impl:datos"> <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="get"> <wsdlsoap:operation soapaction=""/> <wsdl:input name="getrequest"> <wsdlsoap:body encodingstyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:datos" use="encoded"/> </wsdl:input> <wsdl:output name="getresponse"> <wsdlsoap:body encodingstyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:datos" use="encoded"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="set"> <wsdlsoap:operation soapaction=""/> <wsdl:input name="setrequest"> <wsdlsoap:body encodingstyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:datos" use="encoded"/> </wsdl:input> <wsdl:output name="setresponse"> <wsdlsoap:body encodingstyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:datos" use="encoded"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="datosservice"> <wsdl:port binding="impl:datossoapbinding" name="datos"> <wsdlsoap:address location="http://localhost:8080/axis/services/datos"/> </wsdl:port> </wsdl:service> </wsdl:definitions> 8

SOAP: Introducción SOAP: Simple Object Access Protocol Es un formato de transmisión de mensajes entre Servicios Web En los Servicios Web, SOAP suele ir sobre HTTP, para también puede ir con otros protocolos 9

SOAP: Introducción Partes de un mensaje SOAP envelope: Elemento raíz header: Es opcional, no tiene porque ir información de la aplicación. Se pueden poner atributos que deciden quien debe procesar dicha información: actor, mustunderstand, relay body: Tiene contenido de la aplicación que puede ser referido a la invocación, respuesta, notificación o error RPC: Envío de parámetros y respuesta de resultados 10

Ejemplo SOAP (I) <?xml version="1.0" encoding="utf-8"?> <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope /" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <soapenv:body> <get soapenv:encodingstyle="http://schemas.xmlsoap.org/soap/ encoding/"> <permiso xsi:type="xsd:string">escritura</permiso> <parametro xsi:type="xsd:string">ip</parametro> </get> </soapenv:body> </soapenv:envelope> 11

Ejemplo Servidor con AXIS y JWS (I) import java.util.hashmap; import java.util.map; public class Datos { private static HashMap datos = inicializar(); private String dato=null; public static HashMap inicializar() { HashMap datosini= new HashMap(); datosini.put("os", "Windows 98"); datosini.put("ip", "152.27.3.1"); datosini.put("name", "teclado"); datosini.put("phone", "916545949"); datosini.put("m1", " "); datosini.put("m2", " "); datosini.put("m3", " "); datosini.put("m4", " "); return(datosini); public String get(string clave, String parametro) { if (!clave.equals("lectura")&&!clave.equals("escritura")){ dato="la clave suministrada no es correcta."; return(dato); else{ if (parametro == null parametro.length() == 0 (dato = (String) datos.get(parametro)) == null) { dato = "No existe dicho parámetro en la base de datos."; return (dato); return (parametro+": "+dato); 12

Ejemplo Servidor con AXIS y JWS (II) public String set(string clave, String parametro, String valor) { if (!clave.equals("escritura")){ dato="la clave suministrada no es correcta o sólo proporciona permiso de lectura."; return(dato); else{ if (parametro == null parametro.length() == 0 (dato = (String) datos.get(parametro)) == null) { dato = "No existe dicho parámetro en la base de datos."; return(dato); else { if (parametro.equals("m1") parametro.equals("m2") parametro.equals("m3") parametro.equals("m4")){ datos.put(parametro, valor); return(parametro+": "+valor); else{ return("este parámetro es de sólo lectura"); 13

Ejemplo Cliente con AXIS y JWS (I) package ejemplo1; import org.apache.axis.client.call; import org.apache.axis.client.service; import org.apache.axis.encoding.xmltype; import org.apache.axis.utils.options; import javax.xml.rpc.parametermode; public class DatosClient { public static void main(string [] args) throws Exception { String host = "http://localhost:"; String servicepath = "/axis/datos.jws"; Options options = new Options(args); int port = options.getport(); String endpoint = host + port + servicepath; String method = null; String op1=null; String op2=null; String op3=null; args = options.getremainingargs(); if (args == null (!((method = args[0])).equals("get") &&!method.equals("set"))) { System.err.println("Usage:"); System.err.println(" DatosClient get parameter"); System.err.println(" DatosClient set parameter value"); return; 14

Ejemplo Cliente con AXIS y JWS (II) if ((method.equals("get"))&&(args.length!=3)) { System.err.println("Número de parámetros introducido es incorrecto"); return; if ((method.equals("set"))&&(args.length!=4)) { System.err.println("Número de parámetros introducido es incorrecto"); return; if (method.equals("get")) { op1 = args[1]; op2 = args[2]; if (method.equals("set")) { op1 = args[1]; op2 = args[2]; op3 = args[3]; 15

Ejemplo Cliente con AXIS y JWS (III) String ret = null; Service service = new Service(); Call call = (Call) service.createcall(); call.settargetendpointaddress(new java.net.url (endpoint)); call.setoperationname(method); if (method.equals("set")){ call.addparameter("op1", XMLType.XSD_STRING, ParameterMode.IN); call.addparameter("op2", XMLType.XSD_STRING, ParameterMode.IN); call.addparameter("op3", XMLType.XSD_STRING, ParameterMode.IN); call.setreturntype(xmltype.xsd_string); ret = (String) call.invoke(new Object [] {op1, op2, op3); else{ call.addparameter("op1", XMLType.XSD_STRING, ParameterMode.IN); call.addparameter("op2", XMLType.XSD_STRING, ParameterMode.IN); call.setreturntype(xmltype.xsd_string); ret = (String) call.invoke(new Object [] {op1,op2); System.out.println("Resultado : " + ret); 16

RMI: Introducción RMI: Remote Method Invocation Es una tecnología basada en JAVA que permite a un determinado programa cliente instanciar objetos que han sido dados de alta y que existen en una máquina servidor. Una vez instanciados dichos objetos, el cliente puede ejecutar los métodos del objeto remoto que reside en otra máquina. Concepto muy parecido a los servicios Web, pero aquí sólo en Java Computación distribuida. Código no se ejecuta todo en la misma máquina sino en diferentes puntos de Internet Métodos de objetos remotos quedan disponibles para que los ejecuten programas que tengan una instancia del objeto remoto 17

RMI: Diferencias con AXIS respecto al ejemplo visto Diferencias de RMI con AXIS en el ejemplo anterior En el ejemplo de servicios web no podíamos pasar objetos como parámetros. En RMI sí se pueden pasar objetos como parámetros de la invocación remota. El servidor en principio no debe porqué conocerlo, y en ese caso RMI proporciona un mecanismo que permite descargar los bytecodes de dicha clase En RMI los objetos son instanciados por parte del cliente, que coge una referencia de instancia del objeto remoto, se trabaja sobre los mismos atributos, son datos persistentes entre llamadas. En el servicio Web, un nuevo objeto se crea de la clase por cada nueva llamada a un método. Los datos no son persistentes. Se necesitaba una variable y un método estático En los servicios web se accedía vía web, pero en RMI se puede acceder vía web y también acceder al sistema de ficheros En los servicios web con AXIS el protocolo usado de intercambio Pedro J. Muñoz era Merino SOAP, mientras que en RMI se usa una Diseño tecnología de Aplicaciones Telemáticas diferente 18

RMI: Procedimiento En las aplicaciones RMI podemos distinguir entre programas clientes y servidores. El programa servidor es el encargado de crear objetos remotos, poner accesibles mediante RMI referencias a ellos para que los programas clientes puedan acceder a sus métodos El programa cliente obtiene referencias de objetos remotos que el servidor ha puesto disponibles y puede invocar sus métodos Además el cliente puede pasar los bytecodes de clases que necesite el servidor porque se le hayan pasado como parámetro. RMI es la herramienta que soporta todo esto Para todo ello se usa JAVA 19

RMI: Tutorial de motor potente de cálculo Tutorial de Sun de motor de cálculo Motor permitirá que un determinado cliente invoque un método del servidor al que le pasará un objeto que tiene un método de una tarea que queremos que se ejecute en el servidor Necesario compilar el cliente y el servidor Pasos: Crear la estructura de directorios y colocar los ficheros de acuerdo a los paquetes en el cliente y el servidor Crear la interfaz remota Compilar interfaces del servidor y dejarlos disponibles Crear parte servidora Compilar la clase servidora y generar los stubs y skeletons Configurar fichero de seguridad java.policy Compilar y ejecutar el cliente 20

RMI: Tutorial de motor potente de cálculo Tutorial de Sun de motor de cálculo: http://java.sun.com/docs/books/tutorial/rmi/ Preguntas: Si en vez de comunicar nuestro cliente con el servidor RMI que está en nuestra misma máquina, queremos comunicarnos con los servidores de nuestros vecinos. Qué debemos hacer para tal fin? Si queremos realizar una tarea distinta al cálculo del número pi, Qué modificaciones se deberán realizar en el sistema para tal fin? Qué diferencias existen entre el compilador javac y el compilador rmic? Porqué es necesario poner el fichero java.policy? Qué sucede si se ejecuta la aplicación cliente o servidora desde un directorio donde no se encuentra el fichero java.policy? De qué forma consigue un cliente los stubs necesarios que se encuentran en el servidor? Por qué el interfaz Task es serializable? Hacer la aplicación anterior de Servicios Web, pero utilizando RMI 21

Trabajo propio del alumno asociado a la sesión Tutorial WSDL: http://www.w3schools.com/wsdl/default.asp Tutorial SOAP: http://www.w3schools.com/soap/default.asp Manual de AXIS: http://ws.apache.org/axis/java/user- guide.html Tutorial de RMI: http://download.oracle.com/javase/tutorial/rmi/ 22

Referencias Extra L/D 004.738.52 WEB, Web services : concepts, architectures and applications. Alonso, Gustavo L/D 004.738.52 CER, Web services essentials. Cerami, Ethan L/S 004.738.5.057.4 SNE, Programming Web services with SOAP. Snell, James L/D 004.438 JAVA BUI, Building Web services with Java : making sense of XML, Soap, WSDL and UDDI. Graham, Steve Apache AXIS http://xml.apache.org/axis Documentación de Sun sobre RMI: http://java.sun.com/j2se/1.4.2/docs/guide/rmi/ 23