Introduccin a los Webservices Contenidos Definicin n Protocolos
Introducción a los Webservices
Contenidos Definición n Protocolos que hacen posible la existencia de los Webservices n Webservices en Java n Ejemplo n
Webservices Los servicios Web proporcionan una manera de crear aplicaciones que pueden ser accedidas y utilizadas por diferentes clientes utilizando diferentes plataformas. n Permite invocar funciones de otras aplicaciones independientemente de cómo se hayan creado las aplicaciones n Permite integración de aplicaciones n
Webservices Los Servicios Web son para los computadores, lo que las páginas Web para los humanos n Fortaleza de los Web. Services – basados en estándares n Protocolos de comunicación n Formatos de representación de datos n Lenguajes descriptivos n Mecanismo de descubrimiento n
Protocolos y estándares HTTP n XML n SOAP, XML-RPC n WSDL n UDDI n
Protocolos y Estándares n HTTP Un esquema de direccionamiento comprensible. n Arquitectura Cliente-Servidor. n n 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 n HTTP n Es un protocolo sin conexión y sin estado. n Después de que el servidor ha respondido la petición del cliente, se rompe la conexión entre ambos. n Está abierto a nuevos tipos de datos. n 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 n XML (e. Xtended Markup Language) ( Base de los servicios Web n Permite comunicación entre sistemas de forma estándar n Información con estructura n Utilizado ampliamente en la industria n Futuro estándar de estructuración de información n
Protocolos y Estándares n SOAP v/s XML-RPC Invocación de procedimientos a través de protocolos estándar n XML-RPC. Unix Friendly n SOAP. Arquitectura. NET n Especifican todas las reglas necesarias para ubicar servicios Web XML, integrarlos en aplicaciones y establecer la comunicación entre ellos. n Incompatibles entre sí n
Protocolos y Estándares n SOAP v/s XML-RPC Estandarizados por la W 3 C n SOAP lidera en desarrollos de Webservices n Google posee un servicio Web de búsqueda implementado con protocolo SOAP n
Protocolos y Estándares n SOAP Protocolo de acceso a objetos simple n soporte completo y minucioso de todo tipo de servicios Web n Mas potente que XML-RPC n Incluye toda una arquitectura a su alrededor n
Protocolos y Estándares n WSDL y UDDI El archivo WSDL, en formato XML, indica al sistema que consulte, qué servicios dispone n WSDL además da una referencia precisa sobre el servicio, para poder invocarlo usando los parámetros adecuados n 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 n
Protocolos y Estándares n 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++ n Continuación del proyecto Apache SOAP n Deploy de servicios en forma natural n Requiere un Web. Server para operar (Apache Tomcat) n
Ejemplo deploy simple n Cálculo raíz cuadrada public class Raiz { public double raiz. Cuadrada(String i 1) { return Math. sqrt(Integer. parse. Int(i 1)); } } n Guardamos clase con extensión. jws en directorio de Axis
Ejemplo deploy simple n XML SOAP generado <? xml version="1. 0" encoding="UTF-8"? > <soapenv: Envelope xmlns: soapenv="http: //schemas. xmlsoap. org/soap/envelope/" xmlns: xsd="http: //www. w 3. org/2001/XMLSchema" xmlns: xsi="http: //www. w 3. org/2001/XMLSchema-instance"> <soapenv: Body> <raiz. Cuadrada. Response soapenv: encoding. Style="http: //schemas. xmlsoap. org/soap/encoding/> <raiz. Cuadrada. Return xsi: type="xsd: double">2. 0</raiz. Cuadrada. Return> </raiz. Cuadrada. Response> </soapenv: Body> </soapenv: Envelope>
Ejemplo deploy simple n Cliente que utiliza este Webservice String numero ="465"; Service service = new Service(); Call call = (Call)service. create. Call(); call. set. Target. Endpoint. Address(new URL("http: //localhost: 8080/axis/Raiz. jws")); call. set. Operation. Name(new QName("http: //soapinterop. org/", "Raiz. Cuadrada")); Double return. Value = (Double)call. invoke(new Object[]{numero}); System. out. println("La raiz de "+numero +" es "+return. Value);
Ejemplo deploy simple n Tipos de datos estandarizados n n n n xsd: base 64 Binary xsd: boolean xsd: byte xsd: date. Time xsd: decimal xsd: double xsd: float xsd: hex. Binary xsd: integer xsd: long xsd: short xsd: string xsd: QName byte[] boolean byte java. util. Calendar java. math. Big. Decimal double float byte[] int java. math. Big. Integer long short java. lang. String javax. xml. namespace. QName
Deploy más elaborado n Ejemplo: Webservice que retorna una clase creada por nosotros public class Archivo implements Serializable { public String Nombre; public byte[] Datos; public Archivo(){} public void set. Nombre(String param_Nombre){ Nombre = param_Nombre; } public void set. Datos(byte[] param_Datos){ Datos = param_Datos; } public byte[] get. Datos() return Datos; public String get. Nombre(){ return Nombre; } } { }
Deploy más elaborado n Archivo WSDD <deployment xmlns="http: //xml. apache. org/axis/wsdd/" xmlns: java="http: //xml. apache. org/axis/wsdd/providers/java"> <service name="Eventos. Servidor" provider="java: RPC"> <parameter name="class. Name" value="WS_Eventos. Servidor"/> <parameter name="allowed. Methods" value="*"/> <bean. Mapping qname="my. NS: Archivo" xmlns: my. NS="urn: Bean. Service" language. Specific. Type="java: Archivo"/> </service> </deployment>
Deploy más elaborado n Cliente Service service = new Service(); Call call = (Call)service. create. Call(); QName archivoqn = new QName("urn: Bean. Service", "Archivo"); call. set. Operation. Name( "descarga. Eventos" ); call. register. Type. Mapping(Archivo. class, archivoqn, new Bean. Serializer. Factory(Archivo. class, archivoqn), new Bean. Deserializer. Factory(Archivo. class, archivoqn), false); call. register. Type. Mapping(Archivo. class, archivoqn, new Bean. Serializer. Factory(Archivo. class, archivoqn), new Bean. Deserializer. Factory(Archivo. class, archivoqn)); call. set. Target. Endpoint. Address(new URL("http: //localhost: 8080/axis/services/Eventos. Servidor")); Archivo[] return. Value = (Archivo[])call. invoke(new Object[]{Fecha, Hora});
Fin
- Slides: 22