HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román...

98
HTTP, CGI, Applets, HTTP, CGI, Applets, Servlets y SOAP Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero M. Cristina 01-34234 Teja Carolina 01-34483

Transcript of HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román...

Page 1: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

HTTP, CGI, Applets, HTTP, CGI, Applets, Servlets y SOAPServlets y SOAP

Sistemas de Operación II

CI-4821 Sep-Dic 2005

Abreu Román 97-29181

García Irene 01-33903

Osers Pablo 01-34232

Otero M. Cristina 01-34234

Teja Carolina 01-34483

Page 2: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Aplicaciones de Aplicaciones de InternetInternet

Page 3: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

World Wide WebWorld Wide Web

Es un sistema de hipertexto que funciona sobre Internet. Nació gracias a Tim Berners-Lee en 1990. Combina tres tecnologías:

Documentos hipertexto. Recuperación de información a través de la red. SGML (Lenguaje Estandarizado de Marcado General).

Page 4: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

HTML (Hipertext Markup Language)HTML (Hipertext Markup Language)

Es un lenguaje de marcas diseñado para estructurar textos y presentarlos en forma de hipertexto.

Fue definido por Tim Berners-Lee y luego desarrollado por la IETF. Está basado en SGML. Las etiquetas son breves instrucciones de comienzo y final que

determinan la forma como aparece el texto y las imágenes en el navegador.

Page 5: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

HTMLHTML

Ejemplo<html> <head> <title>Ejemplo de una p&aacute;gina web</title> </head> <body><center><h1>Mi p&aacute;gina principal</h1><img src=“/imágenes/miFoto.gif”><a href=“/doc.miCV.html”>Mi curriculum vitae</a> </center></body> </html>

Page 6: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

XML (Extensible Markup Language)XML (Extensible Markup Language)

Es un lenguaje de marcas cuyo propósito es facilitar el compartir datos a través de diferentes sistemas.

Es desarrollado por el World Wide Web Consortium (W3C).

Se basa en SGML. Se utiliza en protocolos tales como SOAP para llamadas

a procedimientos remotos basados en la web.

Page 7: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

XMLXML

Ejemplo

<mensaje> <para> [email protected]</para> <de>[email protected]</de> <tema> Esto es un mensaje</tema> <texto>

¡Hola mundo!</texto></mensaje>

Page 8: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

HTTP (Hiper Text Trnasfer Protocol)HTTP (Hiper Text Trnasfer Protocol)

Es un protocolo orientado a conexión, sin estado y de petición-respuesta.

Está basado en el modelo cliente-servidor. Cada petición y cada respuesta están compuestas por

las siguientes partes:1. La línea de petición/respuesta.

2. Una sección de cabecera.

3. Una línea en blanco.

4. El cuerpo.

Page 9: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

HTTPHTTP

La petición del cliente

Formato:<método HTTP><espacio><URI solicitado><espacio><especificación del protocolo>\r\n

Método HTTP: GET para solicitar un URL específico HEAD para solicitar la cabecera del servidor POST para enviar datos al servidor PUT para subir archivos a un URI en el servidor web

Page 10: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

HTTPHTTP

La petición del cliente

URI solicitado:/<nombre de directorio>.../<nombre de directorio>/<nombre de fichero>

Especificación del protocolo: compuesto por el nombre y la versión del protocolo usado por el cliente.

Page 11: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

HTTPHTTP

Cabecera de la petición

Formato:

<clave>: <valor>\r\n

Claves: Accept tipo de contenido aceptado por el cliente User-Agent tipo de navegador Connection para especificar <<Keep-Alive>> Host nombre de la máquina servidor

Page 12: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

HTTPHTTP

EjemploGET /invest/default.html HTTP/1.0Accept: text/plainAccept: text/html Accept: audio/*Accept: video/mpeg.. .. .. User-Agent: Mozilla/3.0 (WinNT; I)Línea en blanco

Page 13: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

HTTPHTTP

La respuesta del servidor

1. Línea de estado.

2. Una sección de cabecera.

3. Una línea en blanco.

4. El cuerpo.

Page 14: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

HTTPHTTP

La línea de estado

Formato:<protocolo><espacio><código de

estado><espacio><descripción>\r\n

Códigos de estado: 100-199: Informativo 200-299: Petición del cliente satisfactoria 300-399: Petición del cliente redirigida 400-499: Petición del cliente incompleta 500-599: Errores del servidor

Page 15: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

HTTPHTTP

Ejemplos HTTP/1.0 200 Ok HTTP/1.1 403 Forbidden HTTP/1.0 404 Not Found HTTP/1.0 503 Service Unavailable

Page 16: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

HTTPHTTP

Cabecera de la respuesta

Formato:

<clave>: <valor>\r\n

- Líneas de respuesta:

Age: segundos

Location: URI

Retry-After: fecha|segundos

Server: cadena

WWW-authenticate: método de autenticación

Page 17: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

HTTPHTTP

Cabecera de la respuesta

- Líneas de entidad:

Content-Encoding

Content-Length

Content-Type: tipo/subtipo

Expires: fecha

Last-Modified: fecha

Page 18: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

HTTPHTTP

Cuerpo de la respuesta

Date: Mon, 30 Oct 2002 18:52:08 GMTServer: Apache/1.3.9 (Unix) ApacheJServ/1.0Last-Modified: Mon, 17 June 2001 16:45:13 GMTEtag: "3f80f-1b6-3e1cb03b" Accept-Ranges: bytes Content-Length: 1255Connection: closeContent-Type: text/html<html>…</html>

Page 19: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

HTTPHTTP

Tipos de contenido y MIME (Multipurpose Internet Mail Extension)

Es un protocolo para especificar el tipo de contenido.

TIPO SUBTIPO

text Plain, rich text, xml

message Email, news

application Adobepostscript, xml, .class

image Jpeg, gif

audio basic, midi, mp3

video mpeg, quicktime

Page 20: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

HTTPHTTP

Un cliente sencillo

public class ClienteHTTP {public static void main (…) {…MiSocketStream mi socket = new MiSocketStream(

maquina, puerto);

…miSocket.enviarMensaje(peticion);String respuesta = miSocket.recibirMensaje();…}

}

Page 21: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

HTTPHTTP Un cliente sencillo escrito con la clase URL

public class navegadorURL {public static void main (…) {…URL elURL = new URL(“http”, maquina, puerto, cadenaURL);inputStream enStream = elURL.openStream();BufferedReader entrada = new BufferedReader (

new InputStreamReader(enStream));String respuesta = entrada.readLine();…while(){ respuesta = entrada.readLine(); }}

}

Page 22: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Contenido web dinámicoContenido web dinámico

Sistema deBase de datos

Servidor web Cliente web<<id=12345>>

<<ingresos=30000>>

<<ingresos=30000>>

<<id = 12345>>

Máquina con servidor web Máquina con cliente web

Page 23: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

CCommonommon

GGatewayateway

IInterfacenterface

Page 24: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

CGI Common Gateway InterfaceCGI Common Gateway Interface

Definición

Protocolo que proporciona una interfaz o pasarela entre un servidor de información y un proceso externo.

Utilizando el protocolo CGI, un cliente web puede especificar un programa, conocido como Script CGI, como objeto web de destino de una petición HTTP.

Page 25: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Ejemplo de una aplicación CGI

Script CGI Servidor HTTP Cliente Web

petición de hola.html

contenido de hola.html

petición de hola.cgi

datos, si hay, del cliente

respuesta del servidor, incluyendo páginas generadas dinámicamente

Page 26: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

CGI Common Gateway InterfaceCGI Common Gateway Interface

Código de “hola.html”

<!Ejemplo de página web que invoca a un CGI><HTML><HEAD>

…<H1>Esta página muestra el uso de un script web</H1><HR>

<FORM METHOD=“post” ACTION=“hola.cgi”><HR>Presione <input type=“submit” value=“”aquí> para enviar su petición</FORM></HR>

Page 27: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

CGI Common Gateway InterfaceCGI Common Gateway Interface

Código de “hola.cgi”

* Este programa es un script CGI que genera la salida* de una página web.

#include <stdio.h>main(int argc, char *argv[]) {printf(“Content-type:text/html%c%c”, 10, 10);printf(“<font color = blue>”);printf(“<H1>Hola mundo</H1>”);printf(“</font>”);}

Page 28: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

FormularioFormulario Web Web

Características

Proporciona una interfaz gráfica de usuario que permite al usuario introducir datos.

Cuando el usuario pulsa el botón de envío, invoca la ejecución de un programa externo en la máquina del servidor web.

Page 29: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Ejemplo de FormularioEjemplo de Formulario

Page 30: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Formulario WebFormulario Web

Código del Formulario

<html><head><title>Un ejemplo de formulario sencillo</title></head><body><H1>Esto es un formulario sencillo</H1>

<form method="get" action="formulario.cgi">

<h2>Cuestionario:</h2>Introduce tu nombre: <input

name="nombre"><p>Cual es tu pregunta?: <input

name="pregunta"><p>

…Presiona <input type="submit"

name="sBoton" value="aqui"> para enviar

</form></body></html>

Page 31: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Formulario WebFormulario Web

Action=<URL> es una cadena de caracteres que contiene el URL absoluto o relativo del programa externo que será iniciado por el servidor web al enviar el formulario.

Method=<una palabra reservada>, donde la palabra reservada es el nombre del método, POST o GET, que especifica la forma en la que el programa externo espera recibir los datos enviados por el usuario.

Page 32: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Cadena de InterrogaciónCadena de Interrogación

La colección de todos los datos de los elementos de entrada es una cadena de caracteres denominada cadena de interrogación (query string).

Ejemplo: nombre=Juan%20Nadie&pregunta=paz%20en%20mundo&color=azul&…

El empaquetado de los datos en la cadena de caracteres, incluyendo la codificación de los valores, la realiza el navegador.

Page 33: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Procesamiento de la CadenaProcesamiento de la CadenaEnvío de la cadena al ServidorEnvío de la cadena al Servidor

EL método GET en los formularios La cadena se transmite al servidor web en una petición HTTP con una

línea de método GET. El URI del objeto web solicitado por el cliente es especificado por la

petición HTTP GET. La cadena de interrogación se adjunta al final del URI, delimitándola por

el carácter “?” GET /cgi/hola.cgi?nombre=Juan%20Nadie&pregunta=…

El método POST en los formularios La cadena de interrogación se transmite al servidor web en una

cabecera HTTP con una línea de método POST. La petición POST tiene un cuerpo de petición, que contiene el texto que

se va a enviar al servidor.

Page 34: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Procesamiento de la CadenaProcesamiento de la CadenaEnvío de la cadena al ServidorEnvío de la cadena al Servidor

... continuación

El método POST en los formularios Utilizando este método, el URI del script CGI se especifica con la línea

de petición POST, seguida por la cabecera de la petición, una línea en blanco y por último la cadena de interrogación.

POST /cgi/hola.cgi HTTP/1.0

Accept: */*

Connection: Kepp-Alive

Host: miHost.algo.edu

User-Agent: Generic

nombre=Juan%20Nadie&pregunta=…

Page 35: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Procesamiento de la CadenaProcesamiento de la CadenaEnvío de la cadena al programa externoEnvío de la cadena al programa externo

El método FORM GET EL URI es adjuntado a la petición HTTP. EL programa externo recibe el formulario codificado en una variable de

entorno llamada QUERY_STRING. EL programa recupera la cadena de interrogación de la variable de

entorno.

El método FORM POST EL navegador pasa la cadena en el cuerpo de la petición. El programa externo recibe el formulario codificado por la entrada

estándar. La cadena de interrogación es decodificada y el programa externo

hace uso de los valores de los parámetros durante la ejecución.

Page 36: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Codificación y decodificaciónCodificación y decodificación

Perl biblioteca CGI-lib con la estructura de datos vector asociativo.

NCSA (National Center for Supercomputing Applications) biblioteca de rutinas en C.

Page 37: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Variables de Entorno usadas en CGIVariables de Entorno usadas en CGI

Es un parámetro del entorno de trabajo de un usuario, en un computador.

CGI utiliza variables de entorno que son escritas por el servidor HTTP para pasar información sobre las peticiones a los programas externos.

Algunas de estas variables son: REQUEST_METHOD: tipo de método con el que se ha

realizado la petición. QUERY_STRING: contiene la cadena de caracteres codificada. CONTENT_TYPE: el tipo de contenido de los datos. CONTENT_LENGTH: la longitud de la cadena de interrogación

en número de bytes.

Page 38: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Sesiones Web y Datos de EstadoSesiones Web y Datos de Estado

Script Web NavegadorServidor WebScript Web

petición de formulario.html

formulario.html

formulario1.cgi?id=12345

form2.html(dinámico)

id=12345

formulario2.cgi?compra=TV

compra=TV

formulario2.html, contenido

«cliente 12345 tiene una TV en el carrito»

Page 39: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Sesiones Web y Datos de EstadoSesiones Web y Datos de Estado

Mecanismos del lado del servidor: Se puede usar almacenamiento secundarios (ficheros o BD) en la

máquina servidora como un repositorio para los datos de estado de la sesión.

Desventaja: sobrecarga involucrada y la necesidad de administración del repositorio para un gran número de sesiones concurrentes.

Mecanismos del lado del cliente: Basado en pasar los datos de estado del script web al cliente, que a su

vez pasa esos datos al siguiente script web. Esta operación puede ser repetida durante toda la sesión web.

Page 40: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Mecanismos de Mecanismos de mantenimiento de mantenimiento de sesión del lado del sesión del lado del

clientecliente

Page 41: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Uso de campos ocultosUso de campos ocultos

Elemento de tipo IMPUT en un formulario Web que se especifica con TYPE=HIDDEN y su valor debe de ser especificado en el atributo VALUE dentro del campo.

Es de fácil uso. El cliente HTTP se convierte en un repositorio temporal de la

información de estado. Los datos de sesión se envían utilizando el mecanismo normal de

transmisión de cadenas de interrogación.

Posee el riesgo de privacidad y seguridad, los datos de estado se transmiten como campos de un formulario sin proteger

Page 42: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Ejemplo uso campo ocultoEjemplo uso campo oculto

Script web Script web Web Server Navegador Form2.cgi Form1.cgi Petición de formulario.html

Form1.cgi?id=1234

Form2.cgi?id=1234&compra=tv

Formulario.html

id=1234

Form2.html (dinámico) contiene<input type=“HIDDEN” name=“id“ value=“1234”>

id=1234&compra=tv

“cliente 1234 tiene tv en carrito compra”

Page 43: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Uso de cookiesUso de cookies

Este esquema hace uso de una extensión del http básico que permite que una respuesta del servidor pueda contener información de estado que el cliente deberá almacenar en un objeto.

Las cookies se almacenan en la máquina cliente, de forma temporal o persistente.

Líneas de cabecera HTTP

Set-Cookie Cookie

Page 44: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Ejemplo uso cookiesEjemplo uso cookies Script web Web Server Navegador

Form1.cgi Petición de formulario.html

Form1.cgi?id=1234

Form2.cgi?nombre=Juan

Formulario.html

id=1234

Set-Cookie: id=1234Form2.html (dinámico)

Nombre=Juan

Set-Cookie:nombre=JuanForm3.html (dinámico)

id=1234

id=1234

id=1234

Nombre=Juan

Form3.cgi?...

nombre=Juan

id=1234id=1234 nombre=Juan

Script webForm2.cgi

Script webForm3.cgi

Page 45: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Línea de cabecera de respuesta: Línea de cabecera de respuesta: HTTP Set-CookieHTTP Set-Cookie

Set-Cookie: NOMBRE=VALOR; expires=FECHA; path=CAMINO; domain=NOMBRE_DOMINIO; secure

Nombre: par nombre-valor. Expires: especifica una fecha que define el tiempo de validez de

una cookie. Domain: establece el dominio de la cookie, para saber que

cookies deben de ser enviadas a un servidor en particular. Path: se utiliza para especificar el subconjunto de direcciones

dentro de un dominio donde la cookie es válida. Secure: si está marcada como segura, solo será transmitida si

el canal de comunicación es seguro.

Page 46: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Línea de cabecera de petición:Línea de cabecera de petición:HTTP cookieHTTP cookie

Cuando se solicita un URL a un servidor, el navegador comparará el URI (Uniform Resource Identifier, identificador unificado de recursos) con todas las cookies almacenadas en el cliente. Si encuentra alguna cookie coincidente, se incluirá una línea con los pares nombre-valor de dichas cookies en la cabecera de petición http.

Cookie: NOMBRE=VALOR; NOMBRE2=VALOR2; NOMBRE3=VALOR3

El servidor extrae todos los valores y los sitúa en una variable de entorno HTTP_COOKIE

Page 47: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Ejemplo de secuencia de Ejemplo de secuencia de transaccionestransacciones

El cliente solicita un documento y recibe la siguiente respuesta: Set-Cookie: CLIENTE=COYOTE; path=/

Cuando el cliente solicita un URL en la ruta </>, envía: Cookie: CLIENTE=COYOTE

El cliente recibe la siguiente respuesta: Set-Cookie: NUMERO_PARTE=LANZACOHETES_01; path=/

Cuando el cliente solicita un URL en la ruta </> del servidor, envia: Cookie: NUMERO_PARTE=LANZACOHETES_01

El cliente recibe la siguiente respuesta: Set-Cookie: ENVIO=FEDEX; path=/area

Cuando el cliente solicita un URL en la ruta </> del servidor, envía: Cookie: CLIENTE=COYOTE; NUMERO_PARTE=LANZACOHETES_01

Cuando el cliente solicita un URL en la ruta </area>, envía: Cookie: CLIENTE=COYOTE; NUMERO_PARTE=LANZACOHETES_01;

ENVIO=FEDEX

Page 48: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Privacidad de los datos y Privacidad de los datos y consideraciones de seguridadconsideraciones de seguridad

Controversia de las Cookies:

Las cookies pueden ser escritas en la máquina del usuario sin el conocimiento o aprobación explícita de él.

Aunque las cookies son de tamaño pequeño, su acumulación ocupa recursos del sistema.

Pueden ser utilizadas para recoger información personal de los usuario web sin su conocimiento.

Las cookies persistentes, almacenadas en carpetas fácilmente accesibles, pueden revelar información personal a usuarios que comparten un computador.

Page 49: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Applets y ServletsApplets y Servlets

Page 50: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

AppletsApplets

Son clases de Java solicitadas por el navegador a un servidor web utilizando el protocolo http y ejecutadas a continuación por la máquina virtual de Java en el entorno del navegador del cliente.

Se coloca con etiquetas <applet></applet> dentro del código HTML. Cuando el navegador analiza la etiqueta applet lanza la petición al servidor que diga en la etiqueta o del cual se haya bajado la página, si el campo no esta lleno.

Una vez recibida la clase el navegador lo ejecuta con su JMV y muestra su resultado.

Petición HTTP

Respuesta HTTPApplet

Servidor HTTP

Cliente HTTP

Page 51: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Ejemplo: Sesión Web con AppletEjemplo: Sesión Web con Applet

Máquina Servidora Máquina Cliente

servidor web

...

<applet code=“Hola.class”> </applet>

...

hola.class

hola.class

Navegadorpetición pagina.html

pagina.html

petición hola.class

hola.class

Page 52: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Seguridad en AppletsSeguridad en Applets

Debido a que los appets se descargan de una máquina remota y se ejecutan en la máquina local, su ejecución está sometida a restricciones por razones de seguridad.

Un applet no tiene permitido leer o escribir en la máquina del cliente donde se ejecuta.

No tiene permitido la conexión de red excepto a la máquina de la cual proviene.

Page 53: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

ServletsServlets

A diferencia de los Applets, los Servlets son extensiones del servidos ejecutados en el mismo.

Similar a los CGI se ejecutan en el servidor como una acción iniciada por la petición del cliente.

Pero a diferencia de CGI este se puede extender a cualquier servidor con protocolo del tipo petición-respuesta.

Page 54: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

ServletsServlets Un servlet es un objeto de la clase javax.Servlet, parte

de la clase javax. Existen dos implementaciones libres que proporcionan la

arquitectura servlet: JSWDK (Java Server Web Development Kit). Apache Tomcat.

Igualmente hay varias implementaciones comerciales como: Weblogic, iPlanet y WebSphere.

Page 55: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Soporte ArquitectónicoSoporte Arquitectónico

Requieren de la existencia de un módulo llamado “motor de servlets” o “contenedor de servlets”.

Servidor 1

Servidor 2

Código servlet 1

Código servlet 2

Código servlet 3

Cliente 1

Cliente 2

Cliente 3

Page 56: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Tiempo de vidaTiempo de vida

ServidorCódigo servlet Cliente

ServidorCódigo servlet

Cliente

ServidorCódigo servlet Cliente

Cliente

Page 57: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Diagrama de interacciónDiagrama de interacción

Cliente 1 Cliente 2 ServidorContenedor

servlet Servlet

carga servletinit ( )

service ( )petición HTTP

respuesta HTTP

petición HTTP

respuesta HTTP

terminar

apagar

service ( )

destroy ( )

Page 58: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Principales métodos de un servlet Principales métodos de un servlet HTTPHTTPvoid connect (InetAdress, dirección, int puerto)Crea una conexión lógica entre este socket y un socket en la direccióny puerto remotos.

void disconnect( )Termina la conexión actual, si existe, de este socket.

protected void doGet(HttpServletRequest req,HttpServletResponse resp)Llamado por el servidor (a través del método service) para permitir alos servlets manejar la petición GET.

protected void doPost(HttpServletRequest req,HttpServletResponse resp)Llamado por el servidor (a través del método service) para permitir alos servlets manejar la petición POST.

Page 59: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Formulario que invoca a un servletFormulario que invoca a un servlet

<html> <head><title> Formulario que invoca a un servlet</title>…………<form method=“post”action=“http//localhost::8080/servlet/formularioServlet”>………</html>

Page 60: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

doPost y doGet en un Servidor HTTPdoPost y doGet en un Servidor HTTP

service( )

doGet( )

doPost( )

NavegadorServidor HTTP Servlet HTTP

Page 61: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Algunos métodos del objeto Algunos métodos del objeto HttpServletRequestHttpServletRequestpublic String getHeader(String name)Devuelve el valor de la cabecera de la petición especificada.

public String getMethod( )Devuelve el nombre del método HTTP con el que fue realizada la petición. Por ejemplo GET, POST.

public String getQueryString( )Devuelve la cadena de interrogación enviada con la petición.

public String getParameter(String name)Devuelve el valor de un parámetro de la petición, o null si el parametro no existe.

public String getParameterValues(String name)Devuelve el vector de objetos con todos los valores que tiene el parámetro solicitado, o null si el parametro no existe.

Page 62: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Algunos métodos del objeto Algunos métodos del objeto HttpServletResponseHttpServletResponse

public void setContenType(String type)Establece el tipo de contenido de la respuesta a ser enviada al cliente. Este método debe ser llamado antes de que se obtenga el objeto PrintWriter de la respuesta

void setHeader (String name, String value)Establece una cabecera de respuesta con el nombre y el valor dados.

public ServletOutputStream getOutputStream()Devuelve un objeto ServletOutputStream adeacuado para escribir datos binarios en la respuesta.

public PrintWriter getWriter()Devuelve un objeto ServletOutputStream adeacuado para enviar carácteres de texto al cliente.

Page 63: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Mantenimiento de la información de Mantenimiento de la información de estado en la programación de servletsestado en la programación de servlets

Los servlets cuentan con una amplia selección de mecanismos para permitir la compartición de información entre ellos.

Algunos de ellos son: Variables servlet Campos ocultos de formulario Cookies Objetos session

Page 64: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Variable servletVariable servlet

Como se mencionó las servlets son persistentes. Es posible almacenar información de estado en las

variables del servlet. Pero no es común que se utilice este método porque el

programador no tiene control sobre el ciclo de vida del servlet.

Además en un determinado momento solo se está ejecutando una copia única del servlet para todos los clientes, y sus variables de estado serán globales a todos ellos.

Page 65: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Variable servletVariable servletimport java.io.*;import javax.servlet.*;import javax.servlet.htttp.*;

public class Contador extends HttpServlet { int contador = 0; public void doGet(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException { response.setContentType(“text/plain”); PrintWriter salida = response.getWriter ( );

contador ++;

salida.println(“Este servlet ha sido accedido” + contador + ”veces”);

} // fin doGet;} // fin class

Page 66: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Variable servlet (thread safe)Variable servlet (thread safe)public class Contador extends HttpServlet { int contador = 0; public void doGet(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException { response.setContentType(“text/plain”); PrintWriter salida = response.getWriter ( ); incremento(salida);} // fin doGet;} // fin class

private synchronized void incremento(PrintWriter output){ output.println(“Este servlet ha sido accedido” +

contador + ”veces”); output++; } //fin incremento} //fin class

Page 67: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Campos ocultos de formularioCampos ocultos de formulario

Se utiliza exactamente igual que con scripts CGI para pasar información de estado

Las sentencias HTML que contienen el campo oculto se escriben a un stream de salida de un PrintWriter asociado a el HttpServletResponse para almacenar los datos de enviado a ser enviado al siguiente servlet.

Ejemplo:

response.setContentType(“text/plain”);PrintWriter salida = response.getWriter( );salida.println(“<INPUT TYPE=\”HIDDEN\” NAME=ID VALUE=“ + valor);

Page 68: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

CookiesCookies

Las cookies tambien pueden aplicarse de la misma manera que en los scripts CGI para pasar información de estado.

Se utiliza la clase HttpCookie.

Algunos de los principales Métodos que provee son...

Page 69: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

CookiesCookies

public Cookie(String name, String value)Construye una cookie con el nombre y valor especificado.public String getName( )Devuelve el nombre de esta cookie.public String getValue( )Devuelve el valor de la cookie.public void setMaxAge(int expiry)Establece el atributo expiración de esta cookie al periodo de tiempo especificado en segundos.public void setValue(String newValue)Asigna un valor a la cookie.

El método getCookie de la clase HttpRequest:

public Cookie[] getCookies( )Devuelve un vector con todos los objetos Cookie enviados por el cliente en la petición.

Page 70: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

CookiesCookies………// Recoger el valor del parámetro del formulariovalor = request.getParameter(nombre);// Crea una cookieC = new Cookie(nombre, valor);

//Establecer expiración en un díac.setMaxAge(1*24*60*60);response.addCookie(nombre, valor);………//Realiza una redirección para enviar las cookies e invocar otro servlet que muestre los objetos del carritoresponse.sendRedirect(“Carrito2”);

Page 71: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

CookiesCookies………Cookie cookies[];

cookies. = request.getCookies();if (cookies != null){ for(int i=0; i < cookies.length; i++){ // Identifica las cookies por su nombre if(cookies[i].getName().startsWith(“objeto”)){ salida.pritnln(cookies[i].getName() + ”\t” +

cookies[i].getValue());………

Page 72: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Objeto Objeto SessionSession

Mantiene información de estado específica de una sesión particular de un cliente HTTP.

Un objeto session implementa la interfaz HttpSession. Un servlet puede crear este objeto y despues utilizarlo

como un repositorio de datos de estado a lo largo de la sesión del cliente.

Para identificar sesiones diferentes cada objeto de sesión debe tener un identificador único.

Este identificador se asigna automáticamente por el contenedor de servlets.

Page 73: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Objeto Objeto SessionSession

A lo largo de la sesión del cliente el identificador se pasa entre el servidor y el cliente utilizando una cookie o algun otro mecanismo.

Una vez que se ha creado el objeto sesión, un servlet puede depositar en el objetos que contienen información de estado.

Cada objeto añadido se especifica con un nombre, más adelante puede ser accedido por otro servlet o incluso por el mismo servlet.

El objeto sesión persistira durante un intervalo de inactividad que puede ser especificado en el código.

Page 74: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Objeto Objeto SessionSessionpublic Object getAttribute(String name) throws java.lang.IllegalStateExceptionDevuelve el objeto de esta sesión con el nombre especificadopublic Enumeration getAttributeNames( ) throws java.lang.IllegalStateExceptionDevuelve una enumeración con el nombre de todos los objetos de esta sesiónpublic Object setAttribute(String name, Object value) throws java.lang.IllegalStateExceptionEnlaza un objeto con esta sesión usando el nombre especificado.public void invalidate( ) throws java.lang.IllegalStateExceptionInvalida esta sesió y a continuación elimina el enlace con los objetos de la misma.public void getMaxInactiveInterval( )public void setMaxInactiveInterval(int interval)Devuelve/especifica el tiempo del intervalo máximo en segundospublic String getId( )

Page 75: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Objeto Objeto SessionSession

El método getSession de la clase HttpRequest

public HttpSession getSession(boolean create)Devuelve el HttpSession actual asociado con esta petición o si no hay una sesión actual y el parametro contiene true, devuelve una nueva sesión.

Page 76: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Objeto Objeto SessionSession

……HttpSession session = request.getSession(true);……contadorObjetos = new Integer(contador);session,.putValue(“contadorObjetos”, contadorObjetos);If (objetos != null) session.setAttribute(“objetos”, objetos);

// Realiza la redirección para invocar el otro servlet

Page 77: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Objeto Objeto SessionSession

……//Recoge el objeto sesión, si existeHttpSession session = request.getSession(false);Integer contadorObjetos;Vector objetos = nullif (session == null){ contadorObjetos = new Integer(0);}else{ contadorObjetos = (Integer= session.getValue(“contadorObjetos”); objetos = (Vector) session.getValue(“objetos”);…// Recoger los objetos sesion dejados por el otro servletfor (int i = 0; i < contador; i++) salida.println(objetos.get(i));

Page 78: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

SSimpleimple

OObjectbject

AAccessccess

PProtocolrotocol

Page 79: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Web ServicesWeb ServicesDefiniciónDefinición

Servicios de red transportados sobre HTTP.

Basado en el paradigma Cliente-Servidor.

Para poder establecer la comunicación a nivel de la capa de aplicación, se utilizan los siguientes protocolos:

UDDI: Universal Description, Discovery and Integration (Descubrimiento del Servicio).

WSDL: Web Service Description Language (Descripción del Servicio).

XML. (SOAP) (Mensajería). HTTP, FTP, SMTP (Transporte).

Page 80: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

Web ServicesWeb ServicesUDDI y WSDLUDDI y WSDL

UDDI es un framework que no depende de ninguna plataforma para describir, crear e integrar servicios de negocios usando Internet. Utiliza WSDL para publicar todas estas reglas y servicios de negocios. Estas reglas son accedidas utilizando SOAP.

WSDL describe la interfaz pública a los servicios Web. Está basado en XML y describe la forma de comunicación, es decir, los requisitos del protocolo y

los formatos de los mensajes para interactuar con los servicios listados en su catálogo. Las operaciones (métodos) y mensajes se describen de forma abstracta y se ligan después al

protocolo concreto de red y al formato del mensaje.

Page 81: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

WSDLWSDLEjemploEjemplo

<message name="getTermRequest"><part name="term" type="xs:string"/>

</message> <message name="getTermResponse">

<part name="value" type="xs:string"/> </message> <portType name="glossaryTerms">

<operation name="getTerm"><input message="getTermRequest"/><output message="getTermResponse"/>

</operation></portType><binding type="glossaryTerms" name="b1"> <soap:binding style="document“ transport="http://schemas.xmlsoap.org/soap/http”/> <operation>

<soap:operation soapAction="http://example.com/getTerm"/> <input>

<soap:body use="literal"/> </input> <output>

<soap:body use="literal"/> </output>

</operation></binding>

Page 82: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

SOAPSOAPDefiniciónDefinición

Protocolo simple, sencillo y liviano para poder acceder a objetos remotos a través de la red (ej. Internet).

Utilizado para realizar llamadas a Métodos implementados en diferentes arquitecturas, lenguajes y/o sistemas operativos.

Page 83: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

SOAPSOAPAplicaciones Distribuidas vs. SOAPAplicaciones Distribuidas vs. SOAP Las tecnologías para

aplicaciones distribuidas necesitan de puertos abiertos para poder comunicarse (ej DCOM Puerto 135).

Comúnmente dichos puertos están cerrados o protegidos del exterior por Firewalls.

El puerto para HTTP (80) es permitido normalmente. SOAP puede traspasar Firewalls, ya que corre sobre el modelo HTTP.

Page 84: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

SOAPSOAPVentajas de SOAPVentajas de SOAP

SOAP es liviano. Puede ser interpretado por cualquier sistema operativo o

lenguaje ya que esta basado en XML. Pasa a través de los firewalls por el puerto 80, por lo que

puede ser utilizado a nivel MUNDIAL.

Page 85: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

SOAPSOAPCómo funciona?Cómo funciona? Los mensajes se envían bajo el paradigma

Request/Response o bien conocido como modelo de mensajes HTTP.

SOAP define una estructura en XML para: Llamar y pasar parámetros a métodos remotos. Recibir o retornar valores a cualquier petición. Manejar errores en caso de no poder ejecutar la llamada.

Objeto del servicio

Servidor WEB Cliente WEBNombre del método,Lista de parámetros

Valor devuelto

Petición HTTP

Respuesta HTTP

Page 86: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

SOAPSOAPDesventajasDesventajas

Qué NO brinda SOAP: Cómo se envían y reciben los mensajes. La implementación para envío y recepción de mensajes se

deja en manos del programador. No define como ni cuando se instancia un objeto para

luego ejecutar el método.

Page 87: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

SOAPSOAPPaquetesPaquetes

Recubrimiento SOAP

Cabecera SOAP

Cuerpo SOAP

Cuerpo del Mensaje

Bloque de Cabecera

Bloque de Cabecera

op

cion

al

req

ue

rido

Page 88: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

SOAPSOAPMensaje de RequestMensaje de Request

Ejemplo de un mensaje (Request) SOAP:POST /InStock HTTP/1.1Host: www.stock.orgContent-Type: application/soap+xml; charset=utf-8Content-Length: nnn<?xml version="1.0"?><soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.stock.org/stock">

   <m:GetStockPrice> <m:StockName>IBM</m:StockName>

    </m:GetStockPrice> </soap:Body></soap:Envelope>

Importante Colocar el Tipo del Contenido como XML

Page 89: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

SOAPSOAPMensaje de RequestMensaje de Request

Ejemplo de un mensaje (Request) SOAP:POST /InStock HTTP/1.1Host: www.stock.orgContent-Type: application/soap+xml; charset=utf-8Content-Length: nnn<?xml version="1.0"?><soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.stock.org/stock">

   <m:GetStockPrice> <m:StockName>IBM</m:StockName>

    </m:GetStockPrice> </soap:Body></soap:Envelope>

Sobre del mensaje SOAP

Page 90: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

SOAPSOAPMensaje de RequestMensaje de Request

Ejemplo de un mensaje (Request) SOAP:POST /InStock HTTP/1.1Host: www.stock.orgContent-Type: application/soap+xml; charset=utf-8Content-Length: nnn<?xml version="1.0"?><soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.stock.org/stock">

   <m:GetStockPrice> <m:StockName>IBM</m:StockName>

    </m:GetStockPrice> </soap:Body></soap:Envelope>

Cuerpo del mensaje SOAP

Page 91: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

SOAPSOAPMensaje de RequestMensaje de Request

Ejemplo de un mensaje (Request) SOAP:POST /InStock HTTP/1.1Host: www.stock.orgContent-Type: application/soap+xml; charset=utf-8Content-Length: nnn<?xml version="1.0"?><soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.stock.org/stock">

   <m:GetStockPrice> <m:StockName>IBM</m:StockName>

    </m:GetStockPrice> </soap:Body></soap:Envelope>

Nombre del Método Remoto

Parámetros y Valores

Page 92: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

SOAPSOAPMensaje de ResponseMensaje de Response

Ejemplo de un mensaje (Response) SOAP:HTTP/1.1 200 OKContent-Type: application/soap+xml; charset=utf-8Content-Length: nnn <?xml version="1.0"?><soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.stock.org/stock">

<m:GetStockPriceResponse> <m:Price>34.5</m:Price> </m:GetStockPriceResponse>

</soap:Body></soap:Envelope>

Sobre del mensaje SOAP

Page 93: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

SOAPSOAPMensaje de ResponseMensaje de Response

Ejemplo de un mensaje (Response) SOAP:HTTP/1.1 200 OKContent-Type: application/soap+xml; charset=utf-8Content-Length: nnn <?xml version="1.0"?><soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.stock.org/stock">

<m:GetStockPriceResponse> <m:Price>34.5</m:Price> </m:GetStockPriceResponse>

</soap:Body></soap:Envelope>

Cuerpo del mensaje SOAP

Page 94: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

SOAPSOAPMensaje de ResponseMensaje de Response

Ejemplo de un mensaje (Response) SOAP:HTTP/1.1 200 OKContent-Type: application/soap+xml; charset=utf-8Content-Length: nnn <?xml version="1.0"?><soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.stock.org/stock">

<m:GetStockPriceResponse> <m:Price>34.5</m:Price> </m:GetStockPriceResponse>

</soap:Body></soap:Envelope>

Nombre del Método Remoto(Nota: se agrega la palabra Response al final)

Parámetro y Valor de Retorno

Page 95: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

SOAPSOAPEjemplo de ImplementaciónEjemplo de Implementación

Apache Software Foundation, provee de un API simple y sencillo llamado Apache SOAP, para realizar llamadas a WebServices utilizando dicho protocolo.

Posee de varias Clases con las que se implementa el protocolo. Call: Clase que representa la llamada a un método remoto. Parameter: Clase que representa parámetros de ida y vuelta. Response: Clase que representa el mensaje devuelto por el servidor. Fault: Contiene los errores que puedan ser generados durante la

llamada.

Page 96: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

SOAPSOAPEjemplo de Implementación (Cliente)Ejemplo de Implementación (Cliente)

Call call = new Call();call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);call.setTargetObjectURI(“urn:xmethods-Temperature”);call.setMethodName(“getTemp”);

Parameter param = new Parameter(“zipcode”,String.class,”33-180”,null);

Vector params = new Vector();params.add(param);

call.setParams(params);

Response response = call.invoke(“http://localhost:8080/soap/Services”);

Page 97: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

SOAPSOAPEjemplo de Implementación (Servidor)Ejemplo de Implementación (Servidor)

public interface ITemp{float getTemp(String zipCode);

}

public class Temp implements ITemp{

public float getTemp(String zipCode){return DB.getTemp(zipCode);

}}

Page 98: HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero.

PREGUNTAS???PREGUNTAS???