Serv Lets Sistem as Dis Tribu i Dos

10
SISTEMAS DISTRIBUIDOS Fecha: Octubre 27, 2013 Tema: Práctica de Laboratorio Servlets 1. Resumen La práctica se basó en la realización de una calculadora web. En dicha aplicación, una página HTML estática sirve de formulario para el ingreso de los datos necesarios (dos operandos y un operador), a partir de los cuales un servlet java genera una respuesta dinámica. 2. Marco Teórico Aplicación Web Una aplicación web es una extensión dinámica de un servidor web o de aplicación. Existen dos tipos: Orientadas a la presentación: Generan páginas web interactivas que contienen varios tipos de lenguaje de marcadores (HTML, XHTML, XML, entre otros) y contenido dinámico en respuesta a solicitudes. Orientadas al servicio: Implementan el extremo de un servicio web. Las aplicaciones orientadas a la presentación usualmente son clientes de las aplicaciones web orientadas al servicio. En la plataforma Java EE (Enterprise Edition), los componentes web proveen una extensión dinámica de las capacidades de un servidor web. Un componente web Java puede ser un servlet, páginas web implementadas con la tecnología JavaServer Faces, un extremo (endpoint) de servicio web o páginas JSP. La interacción entre un cliente web y una aplicación web puede ser ilustrada de la siguiente forma: El cliente envía una solicitud HTTP al servidor web. Un servidor web que implementa las tecnologías Java Servlet y JavaServer Pages convierte la solicitud a un objeto

Transcript of Serv Lets Sistem as Dis Tribu i Dos

Page 1: Serv Lets Sistem as Dis Tribu i Dos

SISTEMAS DISTRIBUIDOS

Fecha: Octubre 27, 2013

Tema: Práctica de Laboratorio – Servlets

1. Resumen

La práctica se basó en la realización de una calculadora web. En dicha aplicación, una página HTML estática sirve de formulario para el ingreso de los datos necesarios (dos operandos y un operador), a partir de los cuales un servlet java genera una respuesta dinámica.

2. Marco Teórico

Aplicación Web

Una aplicación web es una extensión dinámica de un servidor web o de aplicación. Existen dos tipos:

Orientadas a la presentación: Generan páginas web interactivas que contienen varios tipos de lenguaje de marcadores (HTML, XHTML, XML, entre otros) y contenido dinámico en respuesta a solicitudes.

Orientadas al servicio: Implementan el extremo de un servicio web. Las aplicaciones orientadas a la presentación usualmente son clientes de las aplicaciones web orientadas al servicio.

En la plataforma Java EE (Enterprise Edition), los componentes web proveen una extensión dinámica de las capacidades de un servidor web. Un componente web Java puede ser un servlet, páginas web implementadas con la tecnología JavaServer Faces, un extremo (endpoint) de servicio web o páginas JSP. La interacción entre un cliente web y una aplicación web puede ser ilustrada de la siguiente forma:

El cliente envía una solicitud HTTP al servidor web. Un servidor web que implementa las tecnologías Java Servlet y JavaServer Pages convierte la solicitud a un objeto

Page 2: Serv Lets Sistem as Dis Tribu i Dos

HTTPServletRequest. Dicho objeto es remitido a un componente web, que puede interactuar con componentes JavaBeans o con una base de datos para la generación de contenido dinámico. El componente web puede generar un HTTPServletResponse o puede pasar la solicitud a otro componente web. Eventualmente algún componente web generará un objeto HTTPServletResponse que el servidor convertirá a una respuesta HTTP que puede ser retornada al cliente.

Ciertos aspectos del comportamiento de una aplicación web pueden ser configurados cuando la aplicación es instalada (deployed). Esta información de configuración puede ser especificada usando anotaciones de Java EE (en especificaciones más recientes) o mantenidas en un archivo de texto en formato XML llamado deployment descriptor (DD, descriptor de despliegue).

Por último, es importante conocer la estructura de un módulo web (aplicación web) en Java EE. Un módulo web es la unidad utilizable y desplegable de recursos web más pequeña. Contiene componentes web y contenido web estático (archivos, imágenes), conocidos en conjunto como recursos web.

El directorio de nivel más alto se denomina la raíz del documento y contiene:

Páginas web

Subdirectorio WEB-INF o classes: Directorio que contiene todas las clases del lado del servidor (servlets,

enterprise beans, clases utilitarias y componentes JavaBeans). o lib: Directorio que almacena archivos JAR que contienen enterprise beans y

JARs de librerías llamadas por las clases del lado del servidor. o Descriptores de despliegue, como web.xml.

Servlets

Los servlets son clases del lenguaje de programación Java (que extienden la clase HttpServlet) que procesan solicitudes y generan respuestas de manera dinámica. Pese a que puede responder a cualquier tipo de solicitud, su utilización comúnmente involucra aplicaciones web para las cuales la tecnología Java Servlet define clases específicas para HTTP. Los paquetes javax.servlet y javax.servlet.http proveen interfaces y clases para desarrollar servlets. Todo

Page 3: Serv Lets Sistem as Dis Tribu i Dos

servlet debe implementar la interfaz Servlet, la cual define los métodos de su ciclo de vida. Por su parte, la clase HttpServlet provee métodos, como doGet y doPost, para el manejo de servicios específicos del protocolo HTTP.

Son adecuados para aplicaciones orientadas al servicio (endpoints de servicio web pueden ser implementados como servlets) y para las funciones de control de una aplicación orientada a la presentación, como despacho de solicitudes y manejo de datos no textuales.

La manera en que un servidor maneja las solicitudes de un servlet se describe en el siguiente gráfico:

*También se ilustra el ciclo de vida de un servlet.

Cuando una solicitud del cliente se mapea a un servlet, se ejecutan los siguientes pasos:

El servidor carga e inicializa el servlet llamando al método init.

El servlet maneja cada request del browser llamando al método service (el método principal para ejecutar una tarea). Dicho método será el encargado de llamar a otros métodos que puedan manejar el tipo específico de solicitud HTTP.

El servidor remueve el servlet llamando al método destroy. Esto ocurre cuando el servlet ha estado inactivo por algún tiempo o cuando el servidor es apagado.

3. Desarrollo de la Práctica

Creación de directorio de desarrollo dev/calc, con sus respectivos subdirectorios (en TOMCAT_HOME, el directorio de instalación de Tomcat):

o lib: Librerias necesarias para la compilación. o src: Código fuente del servlet. o web: Página html.

Page 4: Serv Lets Sistem as Dis Tribu i Dos

Creación de página estática index.html que invocará al servlet (se almacenará en el directorio dev/calc/web).

Creación de código fuente del servlet, CalcServlet.java, que implementa la calculadora (se almacenará en el directorio dev/calc/src).

Page 5: Serv Lets Sistem as Dis Tribu i Dos

Compilación de servlet. o Editar el perfil JDK en JCreator para incluir las librerías contenidas en servlet.jar,

necesarias para la compilación del código. A la ventana Options se accede desde Configure>Options en la barra de opciones superior del JCreator.

o Proceder a compilar el CalcServlet.java empleando la opción mostrada en la

captura.

Page 6: Serv Lets Sistem as Dis Tribu i Dos

El resultado de la compilación, el archivo con extensión .class, en el mismo directorio del archivo fuente (.java).

Creación de contexto de ejecución en Tomcat y copiado de archivos. La estructura de directorios corresponde a la organización para un módulo web, descrita en el marco teórico.

o Directorio raíz: TOMCAT_HOME/webapps/calc donde se copiará el contenido de dev/calc/web.

o Subdirectorios: WEB-INF que contendrá en deployment descriptor web.xml. WEB-INF/classes donde se copiará el archivo .class contenido en

dev/calc/web.

El archivo web.xml permite, entre otras cosas, mapear el servlet a un URL y su contenido es el siguiente:

Page 7: Serv Lets Sistem as Dis Tribu i Dos

Ejecución de la calculadora. Se accede a la aplicación con el URL localhost:8080/calc.

o Resultados de la ejecucción, llenando con distintos valores los campos P1, P2 y OP del formulario. Dichos valores son apreciables al inspeccionar el URL de la respuesta.

4. Arquitectura

La arquitectura de componentes, excluyendo el servidor de base de datos es la siguiente:

Page 8: Serv Lets Sistem as Dis Tribu i Dos

En la práctica todos los componentes se encontraban en un mismo dispositivo, tanto el servidor como el browser cliente. Sin embargo es posible realizar un diagrama de deployment a un escala un poco mayor, incluyendo clientes externos y dedicando un dispositivo a ser el servidor web.

5. Glosario de Términos

Servlet: Es una clase del lenguaje de programación Java utilizada para extender las capacidades de un servidor que hostea aplicaciones accedidas utilizando un modelo de programación solicitud-respuesta.

JVM: Es una implementación de Java Virtual Machine Specification que interpreta código compilado Java (llamado bytecode) para un procesador de computadora, con el objetivo de que pueda ejecutar instrucciones de programa Java. La JVM permite la construcción de programas de aplicación que pueden ser ejecutados en cualquier plataforma sin tener que ser reescritos o recompilados para cada plataforma específica. Es la JVM la estructura que

Page 9: Serv Lets Sistem as Dis Tribu i Dos

conoce y maneja los detalles particulares de la plataforma, no el lenguaje de alto nivel escrito por el programador.

JDK: Java Development Kit o (JDK), es un software que provee herramientas de desarrollo para la creación de programas en Java. Puede instalarse en una computadora local o en una unidad de red.

Class: Un archivo class Java presenta la extensión .class y contiene bytecode Java que puede ser ejecutado en la Java Virtual Machine (JVM). Es producido por un compilador Java a partir de un archivo fuente (archivo .java) que contiene clases Java.

Exe: EXE (de la abreviación del inglés executable, que se traduce en ejecutable) es una extensión que se refiere a un archivo ejecutable de código reubicable, es decir, sus direcciones de memoria son relativas. Windows es el principal sistema operativo que utiliza de forma nativa este formato.

XML: XML es un Lenguaje de Etiquetado Extensible muy simple, pero estricto, que juega un papel fundamental en el intercambio de una gran variedad de datos. Es un lenguaje muy similar a HTML pero su función principal es describir datos y no mostrarlos como es el caso de HTML. XML sirve para estructurar, almacenar e intercambiar información.

Web server: Se refiere al hardware (computadora) o software (aplicación) que ayuda a la entrega de contenido web que puede ser accedido a través de Internet. Su función principal suele ser la entrega de páginas web a clientes. La comunicación entre cliente y servidor toma lugar utilizando el protocolo HTTP y las páginas enviadas son frecuentemente documentos HTML. Un agente de usuario, comúnmente un web browser, inicia la comunicación realizando una petición de un recurso específico utilizando HTTP y el servidor responde con el contenido del recurso (o un mensaje de error si no es capaz de hacerlo).

Arquitectura: Término general que se aplica a la estructura de un sistema informático o de una parte del mismo. El término se aplica tanto al diseño del software de sistema como a la combinación de hardware y software básico que comunica los aparatos de una red informática. Es una visión conceptual de alto nivel de cómo va a estructurarse una aplicación. 6. Conclusiones

De acuerdo a las características que debe cumplir un sistema para ser considerado

distribuido, se puede concluir que el sistema implementado en la práctica de laboratorio no lo es. El motivo principal es que no presenta tolerancia a fallas. Las operaciones de lógica que se desarrollan en el servidor web se realizan en un único dispositivo. Estas operaciones son de suma importancia para el sistema y cualquier error en el servidor haría que el servicio no esté disponible. 7. Recomendaciones

Añadir redundancia mediante la inclusión de otros dispositivos que funcionen como

servidor web permitiría al sistema ser tolerante a fallas. Otra falencia del funcionamiento del sistema analizado en la práctica es la dependencia de IP para el acceso a recursos. Esto podría solucionarse empleando un servidor DNS para desligar el servicio de un dispositivo específico. De esta forma, pese a que el DNS se convertiría en el nuevo punto de falla de la arquitectura, el sistema se apegaría mucho más a la definición de sistema distribuido. 8. Bibliografía

Java Virtual Machine (JVM). Recuperado el 27 de Octubre de 2013 de

http://searchsoa.techtarget.com/definition/Java-virtual-machine.

Page 10: Serv Lets Sistem as Dis Tribu i Dos

Java Development Kit. Recuperado el 27 de Octubre de 2013 de http://es.wikipedia.org/wiki/Java_Development_Kit.

Java Class File. Recuperado el 27 de octubre de 2013 de http://en.wikipedia.org/wiki/Java_class_file.

Guía Breve de Tecnologías XML. Recuperado el 27 de Octubre de 2013 de http://www.w3c.es/Divulgacion/GuiasBreves/TecnologiasXML.

Web Server. Recuperado el 27 de octubre de 2013 de http://en.wikipedia.org/wiki/Web_server.

Definición de Arquitectura Informática. Recuperado el 27 de Octubre de http://lhija.wordpress.com/2011/11/04/definicion-de-arquitectura-informatica/.

Murach, Joel. Steelman, Andrea. (2008). Murach’s Java Servlets and JSP (2nd Edition). Estados Unidos: Mike Murach & Associates, Inc.

(2013). The Java EE 7 Tutorial. Recuperado el 27 de Octubre de 2013 de http://docs.oracle.com/javaee/7/tutorial/doc/home.htm.