Este documento introduce los webservices, incluyendo su definición, los protocolos que los hacen posibles como HTTP, XML, SOAP y WSDL, y cómo se implementan los webservices en Java usando Apache Axis. También incluye un ejemplo simple de un webservice de cálculo de raíz cuadrada y cómo se despliega y consume usando Axis.
2. ContenidosContenidos
DefiniciónDefinición
Protocolos que hacen posible la existencia de losProtocolos que hacen posible la existencia de los
WebservicesWebservices
Webservices en JavaWebservices en Java
EjemploEjemplo
3. WebservicesWebservices
Los servicios Web proporcionan una manera deLos servicios Web proporcionan una manera de
crear aplicaciones que pueden ser accedidas ycrear aplicaciones que pueden ser accedidas y
utilizadas por diferentes clientes utilizandoutilizadas por diferentes clientes utilizando
diferentes plataformas.diferentes plataformas.
Permite invocar funciones de otras aplicacionesPermite invocar funciones de otras aplicaciones
independientemente de cómo se hayan creadoindependientemente de cómo se hayan creado
las aplicacioneslas aplicaciones
Permite integración de aplicacionesPermite integración de aplicaciones
4. WebservicesWebservices
Los Servicios Web son para los computadores,Los Servicios Web son para los computadores,
lo que las páginas Web para los humanoslo que las páginas Web para los humanos
Fortaleza de los WebServices – basados enFortaleza de los WebServices – basados en
estándaresestándares
Protocolos de comunicación
Formatos de representación de datos
Lenguajes descriptivos
Mecanismo de descubrimiento
6. Protocolos y EstándaresProtocolos y Estándares
HTTPHTTP
Un esquema de direccionamiento comprensible.Un esquema de direccionamiento comprensible.
Arquitectura Cliente-Servidor.Arquitectura Cliente-Servidor.
HTTP se asienta en el paradigma solicitud/respuesta. LaHTTP se asienta en el paradigma solicitud/respuesta. La
comunicación se asienta sobre TCP/IP. El puerto porcomunicación se asienta sobre TCP/IP. El puerto por
defecto es el 80, pero se pueden utilizar otros.defecto es el 80, pero se pueden utilizar otros.
7. Protocolos y EstándaresProtocolos y Estándares
HTTPHTTP
Es un protocolo sin conexión y sin estado.Es un protocolo sin conexión y sin estado.
Después de que el servidor ha respondido la petición delDespués de que el servidor ha respondido la petición del
cliente, se rompe la conexión entre ambos.cliente, se rompe la conexión entre ambos.
Está abierto a nuevos tipos de datos.Está abierto a nuevos tipos de datos.
Cuando un servidor HTTP transmite información deCuando un servidor HTTP transmite información de
vuelta a un cliente, incluye una cabecera que le indica alvuelta a un cliente, incluye una cabecera que le indica al
cliente sobre los tipos de datos que componen elcliente sobre los tipos de datos que componen el
documento.documento.
8. Protocolos y EstándaresProtocolos y Estándares
XML (XML (eXtended Markup Language)
Base de los servicios WebBase de los servicios Web
Permite comunicación entre sistemas de formaPermite comunicación entre sistemas de forma
estándarestándar
Información con estructuraInformación con estructura
Utilizado ampliamente en la industriaUtilizado ampliamente en la industria
Futuro estándar de estructuración de informaciónFuturo estándar de estructuración de información
9. Protocolos y EstándaresProtocolos y Estándares
SOAP v/s XML-RPCSOAP v/s XML-RPC
Invocación de procedimientos a través de protocolosInvocación de procedimientos a través de protocolos
estándarestándar
XML-RPC . Unix FriendlyXML-RPC . Unix Friendly
SOAP . Arquitectura .NETSOAP . Arquitectura .NET
Especifican todas las reglas necesarias para ubicarEspecifican todas las reglas necesarias para ubicar
servicios Web XML, integrarlos en aplicaciones yservicios Web XML, integrarlos en aplicaciones y
establecer la comunicación entre ellos.establecer la comunicación entre ellos.
Incompatibles entre síIncompatibles entre sí
10. Protocolos y EstándaresProtocolos y Estándares
SOAP v/s XML-RPCSOAP v/s XML-RPC
Estandarizados por la W3CEstandarizados por la W3C
SOAP lidera en desarrollos de WebservicesSOAP lidera en desarrollos de Webservices
Google posee un servicio Web de búsquedaGoogle posee un servicio Web de búsqueda
implementado con protocolo SOAPimplementado con protocolo SOAP
11. Protocolos y EstándaresProtocolos y Estándares
SOAPSOAP
Protocolo de acceso a objetos simpleProtocolo de acceso a objetos simple
soporte completo y minucioso de todo tipo desoporte completo y minucioso de todo tipo de
servicios Webservicios Web
Mas potente que XML-RPCMas potente que XML-RPC
Incluye toda una arquitectura a su alrededorIncluye toda una arquitectura a su alrededor
12. Protocolos y EstándaresProtocolos y Estándares
WSDL y UDDIWSDL y UDDI
El archivo WSDL, en formato XML, indica alEl archivo WSDL, en formato XML, indica al
sistema que consulte, qué servicios disponesistema que consulte, qué servicios dispone
WSDL además da una referencia precisa sobre elWSDL además da una referencia precisa sobre el
servicio, para poder invocarlo usando los parámetrosservicio, para poder invocarlo usando los parámetros
adecuadosadecuados
UDDI es un Servicio Web en línea que se puedeUDDI es un Servicio Web en línea que se puede
utilizar desde las aplicaciones para descubrir deutilizar desde las aplicaciones para descubrir de
forma dinámica otros servicios en líneaforma dinámica otros servicios en línea
14. Webservices en JavaWebservices en Java
Apache Axis – Implementación de SOAP paraApache Axis – Implementación de SOAP para
Java y C++Java y C++
Continuación del proyecto Apache SOAPContinuación del proyecto Apache SOAP
Deploy de servicios en forma naturalDeploy de servicios en forma natural
Requiere un WebServer para operar (ApacheRequiere un WebServer para operar (Apache
Tomcat)Tomcat)
15. Ejemplo deploy simpleEjemplo deploy simple
Cálculo raíz cuadradaCálculo raíz cuadrada
public class Raizpublic class Raiz
{{
public double raizCuadrada(String i1)public double raizCuadrada(String i1)
{{
return Math.sqrt(Integer.parseInt(i1));return Math.sqrt(Integer.parseInt(i1));
}}
}}
Guardamos clase con extensión .jws enGuardamos clase con extensión .jws en
directorio de Axisdirectorio de Axis
17. Ejemplo deploy simpleEjemplo deploy simple
Cliente que utiliza este WebserviceCliente que utiliza este Webservice
String numero ="465";String numero ="465";
Service service =Service service = newnew Service();Service();
Call call = (Call)service.createCall();Call call = (Call)service.createCall();
call.setTargetEndpointAddress(call.setTargetEndpointAddress(newnew URL("http://localhost:8080/axis/Raiz.jws"));URL("http://localhost:8080/axis/Raiz.jws"));
call.setOperationName(call.setOperationName(newnew QName("http://soapinterop.org/", "RaizCuadrada"));QName("http://soapinterop.org/", "RaizCuadrada"));
Double returnValue = (Double)call.invoke(Double returnValue = (Double)call.invoke(newnew Object[]{numero});Object[]{numero});
System.out.println("La raiz de "+numero +" es "+returnValue);System.out.println("La raiz de "+numero +" es "+returnValue);
19. Deploy más elaboradoDeploy más elaborado
Ejemplo: Webservice que retorna una clase creada por nosotrosEjemplo: Webservice que retorna una clase creada por nosotros
public class Archivo implements Serializablepublic class Archivo implements Serializable
{{
public String Nombre;public String Nombre;
public byte[] Datos;public byte[] Datos;
public Archivo(){}public Archivo(){}
public void setNombre(String param_Nombre){public void setNombre(String param_Nombre){
Nombre = param_Nombre;}Nombre = param_Nombre;}
public void setDatos(byte[] param_Datos){public void setDatos(byte[] param_Datos){
Datos = param_Datos;}Datos = param_Datos;}
public byte[] getDatos()public byte[] getDatos() {{
return Datos;return Datos; }}
public String getNombre(){public String getNombre(){
return Nombre;}return Nombre;}
}}