Directriz: Identificación de servlets
Esta directriz trata la forma en que identificar y modelar servlets para una aplicación J2EE.
Relaciones
Elementos relacionados
Descripción principal

Introducción

Esta directriz se centra en identificar servlets. En la sección Directriz: servlets se proporciona ayuda adicional sobre servlets.

Identificación de servlets

Los servlets son clases de servidor que interactúan con clientes basados en la web. Se identifican fundamentalmente de las clases de control (consulte la sección Directriz: clase de análisis) en arquitecturas web. Se pueden utilizar para generar páginas web a efectos de presentación, pero en general, las JSP son más adecuadas para ello (consulte la sección Directriz: JavaServer Page (JSP) para obtener más información). También se pueden utilizar para interactuar con bases de datos, como en una configuración de despliegue centrada en la web, tal como se describe en la sección Concepto: configuraciones de despliegue de J2EE. Y desde J2EE 1.4, también se pueden utilizar para implementar servicios web tal como define la especificación JAX-RPC.

Sin embargo, para aplicaciones con una lógica empresarial significativa, o para aplicaciones que necesitan las características que ofrecen los EJB, es más adecuado una configuración de despliegue de varias capas (consulte la sección Concepto: configuraciones de despliegue de J2EE para obtener más información). En este caso, los servlets habitualmente se utilizan para coordinar la lógica de presentación y para proporcionar un puente entre la lógica empresarial y los datos que proporcionan los EJB.

Un uso habitual de un servlet es el de controlador frontal. Los controladores frontales proporcionan un único punto de entrada a una aplicación, que hace que la seguridad, el estado de la aplicación y la presentación tengan un carácter uniforme y sean más fáciles de mantener. Un controlador frontal acepta una solicitud de usuario, la procesa y determina cuál es el componente adecuado para reenviársela. Consulte Core J2EE Design Patterns - Front Controller ([ALU01]) para obtener más detalles.

Si el diseño tiene un gran número de JSP con un código de control similar, considere el introducir un servlet para consolidar esta lógica en un único lugar.

Modelado de servlets

En RUP los servlets se representan con Producto de trabajo: clases de diseño y por lo tanto se modelan como clases. Con los servlets para manejar solicitudes HTTP se utiliza el estereotipo <<HTTPServlet>>. Con los servlets para manejar otros protocolos se utiliza el estereotipo <<GenericServlet>>.

Se puede pensar como si cada servlet proporciona la misma interfaz, una única operación que da servicio a solicitudes y que proporciona información de contexto de servlet, sesión y cliente estándar. Por lo tanto, al modelar un servlet no se trata tanto de definir las operaciones de interfaz, sino de como definir sus responsabilidades y cómo interactúa con otros elementos de diseño como, por ejemplo, clientes, JSP, clases de ayudante, EJB, etc.

Punto final de servicios web

Como se ha visto con anterioridad, los servlets se pueden utilizar para implementar servicios web, con la necesidad de cumplir requisitos que se indican a continuación:

  • Debe tener un constructor público predeterminado.
  • Debe implementar todos los métodos que se declaran en la sección Interfaz de punto final de servicio y sus métodos deben ser públicos y no finales ni estáticos.
  • Debe ser sin estado.
  • La clase debe ser pública, y no final ni abstracta.