Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El acceso a los datos, la presentación (interfaz) y la lógica de proceso Se aprovecha la capacidad de proceso del cliente. El cliente es capaz de
está en una única aplicación monolítica procesar datos (fat client).
La distribución de la lógica de negocio entre el cliente y el servidor dificulta
Existe un alto grado de acoplamiento entre las distintas partes de la su actualización y mantenimiento
aplicación lo que dificulta la reutilización de código y su Hay que instalar nuevas versiones en el cliente
mantenimiento.
Dificultades de escalado y alto tráfico de datos
No se puede distribuir el código entre diversas máquinas y no es
escalable Cliente Servidor
I. de datos
G. Lógica
U. de Negocio Servicios de
acceso/gestión
de datos
Cliente
PROCEDIMIENTOS
I. ALMACENADOS
G. Lógica
de Negocio
U.
©Baltasar Fernández Manjón 3 ©Baltasar Fernández Manjón 4
Arquitectura multinivel Particularidades de las aplicaciones web
Cliente ligero que se ocupa únicamente de la interfaz gráfica de usuario Las aplicaciones Web son aplicaciones distribuidas muy diferentes a las
clásicas, con nuevos problemas y particularidades
Proporciona una alta escalabilidad y posibilidad de distribución entre varias
máquinas Podemos tener millones en vez de cientos de clientes y por supuesto más
concurrencia que en un modelo cliente/servidor clásico. La escalabilidad es
un problema constante.
Navegador
Lógica PROCEDIMIENTOS El tiempo de desarrollo de las aplicaciones debe ser rápido debido a la
ALMACENADOS
de Negocio competencia
I.G.U.
Modelo cliente servidor en el que un servidor web proporciona Se ha evolucionado en los dos extremos
páginas estáticas a un navegador Ampliación de las capacidades del cliente
– Permitiendo la ejecución de código en el cliente que proporcionan
tecnologías como:
las applets – programas escritos en Java que se ejecutan dentro del navegador
que actúa como cliente
los lenguajes de secuencias de órdenes o scripts (p.e. javascript) que son
interpretados por el navegador
Ampliación de las capacidades del servidor
– El servidor como respuesta a una petición ya no sólo es capaz de devolver
un documento sino que también es capaz de ejecutar un programa
Interfaz de pasarela común (CGI, Common Gateway Interface)
Programas java que se ejecutan en el servidor (p.e. Servlets, JSP)
Aplicaciones específicas que se ejecutan en el servidor y que Aplicaciones creadas para cubrir unas necesidades específicas.
conectan el servidor web a las aplicaciones existentes.
Gran esfuerzo. Pueden convertirse en muy complejas y largas si las
A pesar de ser antiguas son predominantes hoy en día. empezamos desde cero
Presenta varios problemas : Hay que considerar todos los aspectos generales y que no son los centrales
de la aplicación:
Problemas de escalabilidad, concurrencia y recursos
Comunicación
Mal manejo de sesiones, es responsabilidad del programador
Seguridad
Actualización del código difícil Escalabilidad
Etc
Proporciona servicios de seguridad y facilidades de administración. Algunos servidores de aplicaciones son propietarios
(dependen de una única empresa) mientras que otros
siguen estándares abiertos
DBMS
J2EE
Servidor Plataforma estándar para el desarrollo de aplicaciones empresariales multicapa
de basadas en Java.
DBMS Promovido por Sun y otras empresas (IBM, BEA Systems, etc).
aplicaciones
Se basa en la utilización de componentes modulares, y maneja parte de la
Internet
Base de funcionalidad de las aplicaciones de forma declarativa, sin necesidad de
datos programación.
Incluye los siguientes APIs:
1ª Capa 2ª Capa 3ª Capa – JDBC, RMI, JNDI, JTA/JTS, EJB, JMS, Servlets, JSP
©Baltasar Fernández Manjón 11 ©Baltasar Fernández Manjón 12
Servidores de aplicaciones J2EE Arquitectura J2EE
Una aplicación web es una extensión dinámica a un servidor web Programa que se ejecuta en el servidor, escrito en Java que gestiona
(Sun) mensajes entre un cliente y un servidor web
Una aplicación web es un grupo de recursos en el servidor que Objetos Java que se basan en el API servlet y permiten extender la
permite crear una aplicación interactiva (Bea Systems) funcionalidad de un servidor web
Permiten generar contenido a partir de un programa como respuesta a
Estos recursos son componentes Web (p.e. servlet, JSP), documentos
una petición HTTP
estáticos (p.e. html, imágenes), clases que se ejecutan en el servidor,
bibliotecas de clases, e información de configuración y despliegue. Se ejecutan mediante una asignación con una URL
Los componentes Web se ejecutan dentro de un entorno denominado Son gestionados por un contenedor que tiene una arquitectura simple
contenedor web.
Disponibles en la mayoría de los servidores de aplicaciones del
Este contenedor proporciona los servicios de infraestructura básicos
mercado (y en todos los J2EE)
para la aplicación web (p.e. Seguridad, concurrencia o gestión del ciclo
de vida) Independientes del servidor y de la plataforma
JSP son documentos de texto que crean dinámicamente páginas web Normalmente los clientes web utilizan el protocolo HTTP para
a partir de una petición de un cliente (navegador) comunicarse con un servidor de aplicaciones J2EE.
Se ejecutan en el servidor
Es un protocolo basado en petición y respuesta
Un documento JSP contiene
El protocolo HTTP define
Plantillas de texto conteniendo formatos de presentación (HTML, XML)
las peticiones que puede enviar un cliente al servidor. Cada petición
Acciones dinámicas bien sea
– mediante código o contiene una URL que identifica el componente u objeto estático
– mediante etiquetas JSP que permiten en acceso a directivas o a otros solicitado (e.g. página HTML)
componentes Las respuestas que puede enviar el servidor a dichas peticiones
Los JSP se compilan automáticamente produciendo los servlets El servidor J2EE convierte la petición en un objeto de petición HTTP
correspondientes y lo envía al componente web identificado por la URL. El
componente web rellena un objeto de respuesta HTTP que el
Buscan simplificar la autoría y programación de aplicaciones servidor convierte en una respuesta HTTP que se envía al cliente.
Una petición HTTP consta de un método de petición, de La especificación describe HTTP como un protocolo de petición /
una URL, de campos de cabecera y de un cuerpo. respuesta sin estado cuya operación básica es la siguiente:
1. Una aplicación realizada por un cliente, por ejemplo un visualizador
Métodos de petición de HTTP 1.1 Web, abre un conector al puerto HTTP del servidor Web (el puerto
– GET – recupera el recurso identificado por la URL de la petición predeterminado es el 80).
– HEAD – devuelve las cabeceras identificadas por la URL de la petición
– POST – envía datos de longitud ilimitada al servidor Web 2. A través de la conexión el cliente escribe una línea de petición de texto
– PUT – almacena un recurso en la URL de la petición ASCII, seguida de ninguna, una o varias cabeceras HTTP , una línea en
– DELETE – elimina el recurso identificado por URL de la petición blanco, y cualquier dato que acompañe a la petición.
– OPTIONS – devuelve los métodos HTTP soportados por el servidor
3. El servidor Web analiza la petición y localiza el recurso especificado.
– TRACE – devuelve los campos de cabecera enviados con una petición TRACE
4. El servidor envía una copia del recurso al conector, donde es leído por
Una respuesta HTTP contiene un código de resultado, el cliente.
unos campos de cabecera y un cuerpo 5. El servidor cierra la conexión.
Algunos códigos de resultado habituales son:
– 404 – indica que el recurso solicitado no está disponible
– 401 – indica que la petición requiere autenticación HTTP
– 500 – indica un error en el servidor HTTP que impide dar respuesta a la petición
– 503 – indica que el servidor HTTP está temporalmente sobrecargado y es incapaz de
gestionar la petición
©Baltasar Fernández Manjón 19 ©Baltasar Fernández Manjón 20
Petición y respuesta con servlets Carga y ejecución de un servlet
Como respuesta a una petición que implica un servlet, el server lo
instancia (lo carga en memoria) y crea un hilo de ejecución. El servlet se
carga sólo una vez y permanece en memoria hasta que se desactiva
expresamente o se detiene el servidor
Clases relacionadas con los servlets Métodos definidos en la interface servlet de java.servlet
java.lang.String
getServletInfo()
Returns information about the servlet, such as author, version, and copyright.
void
init(ServletConfig config)
Called by the servlet container to indicate to a servlet that the servlet is being placed into service.
void
service(ServletRequest req, ServletResponse res)
Called by the servlet container to allow the servlet to respond to a request.
La gestión de las peticiones al servlet se realizan invocando los Una respuesta desde un servlet a un cliente se representa y encapsula
métodos: mediante un objeto HttpServletResponse
Servlets genéricos Habitualmente esta respuesta se genera dinámicamente en función de
– el método service() los datos de la petición
Servlets HTTP
– métodos principales: doGet() , doPost()
– Otros métodos:
doHead(), doDelete(), doOptions(), doTrace()
doPost()
void Receives an HTTP HEAD request from the protected service method and handles the request.
protected doOptions(HttpServletRequest req, HttpServletResponse resp)
void
Una petición GET se genera cuando un usuario proporciona protected
Called by the server (via the service method) to allow a servlet to handle a OPTIONS request.
Receives standard HTTP requests from the public service method and dispatches them to the doXXX
methods defined in this class.
HolaServlet.java
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
4
Utilizando la utilidad ant se compila el servlet
C:\bea\weblogic81\samples\server\examples\src\examples\servlets>
ant HelloWorldServlet
Se edita, se modifica y 2
se salvan los cambios
Modificación de los servlets de ejemplo de WebLogic: resultado Obtención de información sobre el servidor
El servlet puede obtener información del cliente sobre la String[] getParameterValues("paraName")
petición Devuelve un array de valores para todas las ocurrencias del
Obtener la dirección IP del cliente nombreParámetro en la cadena de petición y null si no aparece
– String request.getRemoteAddr()
Obtener el nombre del cliente Enumeration getParameterNames( )
– String request.getRemoteHost() Devuelve una enumeración de los parámetros de petición (sin orden
preestablecido)
Una petición puede estar acompañada de un número
arbitrario de parámetros
Los parámetros se pueden enviar desde formularios HTML
– GET como una cadena añadida a la URL
– POST como datos que no aparecen en la URL
El método String getParameter(“nombreParámetro")
devuelve el valor asociado a la primera aparición de nombreParámetro en la
petición (diferencia entre mayúsculas y minúsculas)
Devuelve null si no aparece dicho parámetro en la petición
Funciona igual para peticiones GET y POST
Operaciónes comunes en la respuesta Devolver como respuesta un mensaje de error como un documento
HTML que incluye un código de error y un mensaje
Establecer el tipo MIME del contenido de la respuesta
public void sendError(int códigoErrror, String mensaje)
P.e. respuesta.setContentType(“text/html”);
Ej respuesta.sendError(500, “paramétro no especificado”);
Escribir el cuerpo de la respuesta Hacer que el servlet redirija la petición a otra URL
Mediante un PrintWriter para enviar caracteres
public void sendRedirect(String URL)
– response.getWriter()
Ej respuesta.sendRedirect(“http://www.fdi.ucm.es”);
Mediante un ServletOutputStream para datos binarios (p.e. imágenes)
La URL de la redirección debe ser una dirección absoluta y completa
– response.getOutputStream()
(http://...)