Download Webservices
Document related concepts
no text concepts found
Transcript
Introducción a los Webservices Contenidos Definición Protocolos que hacen posible la existencia de los Webservices Webservices en Java Ejemplo Webservices Los servicios Web proporcionan una manera de crear aplicaciones que pueden ser accedidas y utilizadas por diferentes clientes utilizando diferentes plataformas. Permite invocar funciones de otras aplicaciones independientemente de cómo se hayan creado las aplicaciones Permite integración de aplicaciones Webservices Los Servicios Web son para los computadores, lo que las páginas Web para los humanos Fortaleza de los WebServices – basados en estándares Protocolos de comunicación Formatos de representación de datos Lenguajes descriptivos Mecanismo de descubrimiento Protocolos y estándares HTTP XML SOAP, XML-RPC WSDL UDDI Protocolos y Estándares HTTP Un esquema de direccionamiento comprensible. Arquitectura Cliente-Servidor. HTTP se asienta en el paradigma solicitud/respuesta. La comunicación se asienta sobre TCP/IP. El puerto por defecto es el 80, pero se pueden utilizar otros. Protocolos y Estándares HTTP Es un protocolo sin conexión y sin estado. Después de que el servidor ha respondido la petición del cliente, se rompe la conexión entre ambos. Está abierto a nuevos tipos de datos. Cuando un servidor HTTP transmite información de vuelta a un cliente, incluye una cabecera que le indica al cliente sobre los tipos de datos que componen el documento. Protocolos y Estándares XML (eXtended Markup Language) Base de los servicios Web Permite comunicación entre sistemas de forma estándar Información con estructura Utilizado ampliamente en la industria Futuro estándar de estructuración de información Protocolos y Estándares SOAP v/s XML-RPC Invocación de procedimientos a través de protocolos estándar XML-RPC . Unix Friendly SOAP . Arquitectura .NET Especifican todas las reglas necesarias para ubicar servicios Web XML, integrarlos en aplicaciones y establecer la comunicación entre ellos. Incompatibles entre sí Protocolos y Estándares SOAP v/s XML-RPC Estandarizados por la W3C SOAP lidera en desarrollos de Webservices Google posee un servicio Web de búsqueda implementado con protocolo SOAP Protocolos y Estándares SOAP Protocolo de acceso a objetos simple soporte completo y minucioso de todo tipo de servicios Web Mas potente que XML-RPC Incluye toda una arquitectura a su alrededor Protocolos y Estándares WSDL y UDDI El archivo WSDL, en formato XML, indica al sistema que consulte, qué servicios dispone WSDL además da una referencia precisa sobre el servicio, para poder invocarlo usando los parámetros adecuados UDDI es un Servicio Web en línea que se puede utilizar desde las aplicaciones para descubrir de forma dinámica otros servicios en línea Protocolos y Estándares WSDL y UDDI WSDL Registro UDDI WSDL SOAP Cliente SOAP Servicio Web Webservices en Java Apache Axis – Implementación de SOAP para Java y C++ Continuación del proyecto Apache SOAP Deploy de servicios en forma natural Requiere un WebServer para operar (Apache Tomcat) Ejemplo deploy simple Cálculo raíz cuadrada public class Raiz { public double raizCuadrada(String i1) { return Math.sqrt(Integer.parseInt(i1)); } } Guardamos clase con extensión .jws en directorio de Axis Ejemplo deploy simple XML SOAP generado <?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> <raizCuadradaResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/> <raizCuadradaReturn xsi:type="xsd:double">2.0</raizCuadradaReturn> </raizCuadradaResponse> </soapenv:Body> </soapenv:Envelope> Ejemplo deploy simple Cliente que utiliza este Webservice String numero ="465"; Service service = new Service(); Call call = (Call)service.createCall(); call.setTargetEndpointAddress(new URL("http://localhost:8080/axis/Raiz.jws")); call.setOperationName(new QName("http://soapinterop.org/", "RaizCuadrada")); Double returnValue = (Double)call.invoke(new Object[]{numero}); System.out.println("La raiz de "+numero +" es "+returnValue); Ejemplo deploy simple Tipos de datos estandarizados xsd:base64Binary byte[] xsd:boolean boolean xsd:byte byte xsd:dateTime java.util.Calendar xsd:decimal java.math.BigDecimal xsd:double double xsd:float float xsd:hexBinary byte[] xsd:int int xsd:integer java.math.BigInteger xsd:long long xsd:short short xsd:string java.lang.String xsd:QNamejavax.xml.namespace.QName Deploy más elaborado Ejemplo: Webservice que retorna una clase creada por nosotros public class Archivo implements Serializable { public String Nombre; public byte[] Datos; public Archivo(){} public void setNombre(String param_Nombre){ Nombre = param_Nombre;} public void setDatos(byte[] param_Datos){ Datos = param_Datos;} public byte[] getDatos() return Datos; public String getNombre(){ return Nombre;} } { } Deploy más elaborado Archivo WSDD <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="EventosServidor" provider="java:RPC"> <parameter name="className" value="WS_EventosServidor"/> <parameter name="allowedMethods" value="*"/> <beanMapping qname="myNS:Archivo" xmlns:myNS="urn:BeanService" languageSpecificType="java:Archivo"/> </service> </deployment> Deploy más elaborado Cliente Service service = new Service(); Call call = (Call)service.createCall(); QName archivoqn = new QName("urn:BeanService","Archivo"); call.setOperationName( "descargaEventos" ); call.registerTypeMapping(Archivo.class,archivoqn,new BeanSerializerFactory(Archivo.class,archivoqn),new BeanDeserializerFactory(Archivo.class,archivoqn),false); call.registerTypeMapping(Archivo.class,archivoqn,new BeanSerializerFactory(Archivo.class,archivoqn),new BeanDeserializerFactory(Archivo.class,archivoqn)); call.setTargetEndpointAddress(new URL("http://localhost:8080/axis/services/EventosServidor")); Archivo[] returnValue = (Archivo[])call.invoke(new Object[]{Fecha,Hora}); Fin