SlideShare una empresa de Scribd logo
1 de 13
Descargar para leer sin conexión
II Curso Online JAVA-J2EE

                                          TEMA 7
                                   J2EE avanzado




Autor: PCYTA / Centro de Excelencia de Software Libre de Castilla-La Mancha
Versión: 1.0
Fecha: Revisado 07-02-2008 11:46
Licencia: CC-by-sa 2.5
0 Licencia
Usted es libre de:
      Copiar, distribuir y comunicar públicamente la obra

       Hacer obras derivadas
Bajo las condiciones siguientes:
       Reconocimiento. Debe reconocer los créditos de la obra de la manera especificada por el
       autor o el licenciador (pero no de una manera que sugiera que tiene su apoyo o apoyan el
uso    que hace de su obra).
       Compartir bajo la misma licencia. Si altera o transforma esta obra, o genera una obra
       derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta.
           •   Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia
               de esta obra.
           •   Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de
               los derechos de autor
           •   Nada en esta licencia menoscaba o restringe los derechos morales del autor.
Para ver la licencia visite:
http://creativecommons.org/licenses/by-sa/2.5/es/legalcode.es




6 de febrero de 2008                            Tema 7                                                  2
UNIDAD VII. J2EE AVANZADO
0 Licencia...........................................................................................................................................2
1 Seguridad en las aplicaciones Web...............................................................................................4
  1.1 Introducción a la seguridad en las aplicaciones Web...............................................................4
  1.2 Métodos de autenticación web.................................................................................................4
2 Patrones de diseño J2EE...............................................................................................................7
  2.1 Introducción a los patrones J2EE.............................................................................................7
  2.2 Resumen patrones J2EE...........................................................................................................9
3 Otros Web Frameworks..............................................................................................................11
  3.1 JSF, Spring MVC, Stripes, Structs 2, Tapestry, Ticket...........................................................12




6 de febrero de 2008                                                Tema 7                                                                          3
1 Seguridad en las aplicaciones Web
   1.1 Introducción a la seguridad en las aplicaciones Web
Cuando desarrollamos o desplegamos una aplicación en un entorno de producción es probable que
tengamos que tener en cuenta ciertas cuestiones relativas a la seguridad.
Primero, es posible que nuestra aplicación solicite al usuario que pruebe su identidad, esto se
denomina autenticación. Normalmente, se suele realizar mediante la introducción por parte del
usuario de su identificador (usuario) y una clave asociada (contraseña). Mediante la autenticación
nos aseguramos de que el usuario es quien dice ser.
Una vez autenticado un usuario, el siguiente paso es la autorización. Mediante la autorización
nos vamos a asegurar de que un usuario determinado sólo tiene acceso a los recursos a los que
se le quiera dar acceso. Normalmente, esto se consigue manteniendo unas tablas que nos indican
que acciones puede realizar un usuario determinado.
Por último, tenemos que tener en cuenta la confidencialidad de los datos, es decir, que los datos
únicamente tendrían que ser accesibles por la persona/s adecuadas.
Una vez definidos los conceptos de autenticación, autorización y confidencialidad de los datos,
vamos a ver como podemos conseguir estos requisitos de seguridad en la capa web.
En primer lugar necesitamos proporcionar un método para recoger la identidad de los usuarios o lo
que es lo mismo un mecanismo de login. La forma más famosa de login en las aplicaciones web es
la utilización de la pareja usuario/contraseña, pero podrían utilizarse también certificados para
realizar la autenticación.
Una vez que la información para autenticarse es aportada por el usuario necesitamos enviarla desde
el navegador al servidor. En este paso estamos hablando de confidencialidad, y la forma de realizar
el transporte de forma segura es mediante SSL.
Cuando el servidor reciba esta información (usuario/contraseña) necesita verificarla contra un
repositorio (base de datos, fichero plano, servidor LDAP, etc.). Este repositorio se denomina realm.
Un realm se encarga de mantener la información relacionada con los usuarios, contraseñas y
roles.
Además, es recomendable que los servidores también mantengan la información relacionada con el
control de acceso a los recursos (autorización), deben permitir la definición de que tipo de usuarios
(roles) pueden acceder a que recursos.

   1.2 Métodos de autenticación web
En este apartado vamos a resumir los dos esquemas de seguridad web más importantes:
Autenticación Básica (BASIC) y Autenticación basado en Formulario (FORM).La diferencia
entre estos dos métodos básicamente está en la forma en que el navegador recoge la identificación
del usuario. En el método Basic el navegador utiliza una ventana de diálogo propia y en el método
Form la pantalla de autenticación es un fichero (HTML o JSP) que tiene un formulario con unos
campos predefinidos.
Autenticación Básica (BASIC).
Los pasos para securizar una aplicación web con este método son los siguientes:


6 de febrero de 2008                          Tema 7                                               4
1. Definir        los        usuarios,        contraseñas        y       roles        (realms).
       La definición de los realms son específicos de cada servidor (Tomcat, Weblogic, etc) y
       pueden definirse realms en ficheros planos, bases de datos o servidores LDAP.
       Para Tomcat, el realm por defecto es un fichero que se denomina tomcat-users.xml y que se
       encuentra en el directorio conf. A continuación hay un ejemplo del contenido de este fichero:
       <?xml version="1.0" encoding="UTF-8"?>
         <tomcat-users>
           <role rolename="Administrador"/>
           <role rolename="Usuario"/>
           <user username="admin" password="admin" roles="Administrador,Usuario"/>
           <user username="juan" password="juan" roles="Usuario"/>
         </tomcat-users>
    2. Especificar los recursos (URLs) que tienen restricciones de acceso.
       Los parámetros de securización en la aplicación web se definen dentro del fichero web.xml.
       Para establecer la autenticación Básica se utilizan las siguientes etiquetas:
                 <security-constraint>
                     <web-resource-collection>
                          <web-resource-name>Admin</web-resource-name>
                          <url-pattern>/HolaAdministrador</url-pattern>
                          <http-method>POST</http-method>
                           <http-method>GET</http-method>
                     </web-resource-collection>
                     <auth-constraint>
                        <role-name>Administrador</role-name>
                     </auth-constraint>
                     <user-data-constraint>
                         <transport-guarantee>NONE</transport-guarantee>
                      </user-data-constraint>
                 </security-constraint>
       La etiqueta <transport-guarantee> cuando tiene el valor CONFIDENTIAL sirve para
       definir que las URLs protegidas serán accesibles a través de SSL, con NONE se hace todo
       sin SSL.


    3. Parametrizar la aplicación web para que utilice la autenticación                     Basica.
       Al igual que antes, esta definición se realiza también en el fichero web.xml:
                       <web-app>
                        ...
                        <security-constraint>...</security-constraint>
                        <login-config>
                          <auth-method>BASIC</auth-method>
                          <realm-name>default</realm-name>
                        </login-config>
                        ...
                       </web-app>


6 de febrero de 2008                          Tema 7                                              5
Autenticación basada en Formulario (FORM).
Los pasos 1 y 2 anteriores también se tienen que realizar para éste método, además tenemos que
realizar:
    1. Parametrizar la aplicación web para que utilice la autenticación basada en FORM.
       Los parámetros de securización en la aplicación web se definen dentro del fichero web.xml.
       Para establecer este método se utilizan las siguientes etiquetas:
                       <web-app>
                        ...
                        <security-constraint>...</security-constraint>
                        <login-config>
                          <auth-method>FORM</auth-method>
                          <realm-name>default</realm-name>
                        </login-config>
                        ...
                       </web-app>


    2. Crear los ficheros necesarios para la página de login y la página de error.
       La página de login puede ser un fichero HTML o JSP que contiene el siguiente formulario:
                <FORM ACTION="j_security_check" METHOD="POST">
                 <INPUT TYPE="TEXT" NAME="j_username">
                 <INPUT TYPE="PASSWORD" NAME="j_password">
                </FORM>
       La página de error también es un fichero HTML o JSP cuyo contenido no está prefijado.




6 de febrero de 2008                          Tema 7                                           6
2 Patrones de diseño J2EE
   2.1 Introducción a los patrones J2EE
Tal y como vimos en el Tema 1 un patrón de diseño define una forma de resolver un problema
que se presenta en un contexto determinado.
En esta lección vamos a ver algunos de los patrones J2EE que se definen en el libro 'Core J2EE
Patterns: Best Practices and Design Strategies' escrito por arquitectos del Sun Java Center
(http://java.sun.com/blueprints/corej2eepatterns/index.html).
En este libro se realiza una clasificación de patrones atendiendo al modelo de arquitectura en capas,
distinguiendo entre capa de presentación, capa de negocio y capa de integración. Se incluyen 15
patrones en el catálogo que se agrupan de la siguiente forma:
     Capa de Presentación       Intercepting Filter; Front Controller; View Helper; Composite
                                View; Service to Worker; Dispatcher View.
     Capa de Negocio            Business Delegate; Value Object; Session Facade; Composite
                                Entity; Value Object Assembler, Value List Handler; Service
                                Locator.
     Capa de Integración        Data Access Object; Service Activator


En la capa de presentación se encuentran los patrones relacionados con la tecnología JSP/Servlets,
la capa de negocio contiene los patrones relacionados con la tecnología EJB y en la capa de
integración contiene la tecnología relacionada con JDBC y JMS.
En la siguiente imagen podemos ver como se interrelacionan los patrones J2EE:




6 de febrero de 2008                          Tema 7                                               7
6 de febrero de 2008   Tema 7   8
2.2 Resumen patrones J2EE
En este apartado simplemente os voy a hacer un pequeño resumen de los patrones J2EE que
considero más importantes.
Intercepting Filter
Se utiliza para ‘interceptar’ peticiones (request) y respuestas (response) y aplicarles un filtro
determinado, por ejemplo, añadir logging, trazas de depuración, etc. Estos filtros pueden ser
añadidos o eliminados de forma declarativa, pudiendo aplicarse más de un filtro de forma
correlativa a la declaración realizada.
Front Controller
Proporciona un control centralizado para gestionar las peticiones que se realizan en la capa de
presentación. El controlador se encarga de recibir y gestionar las peticiones, centralizando la
invocación de los servicios de seguridad, delegando el procesamiento de la lógica de negocio,
controlando la elección de una vista apropiada, el manejo de errores y el control de la selección de
estrategias de creación del contenido de respuesta.
View Helper
Éste patrón enfatiza en la separación entre el código para la vista y el código de la lógica de
negocio. Se sugiere utilizar Helper para encapsular la lógica relacionada con la recogida de
parámetros, validaciones y adaptación de los datos enviados al modelo. Este componente
normalmente delega la lógica de negocio utilizando un patrón Business Delegate mientras que la
vista puede encontrarse compuesta de múltiples subcomponentes.
Composite View
Propone utilizar vistas compuestas que se componen de varias subvistas atómicas. Cada
componente de la plantilla se podría incluir dinámicamente dentro del total y la distribución de la
página se maneja independientemente del contenido.
Business Delegate
Reduce el acoplamiento entre capas y proporciona un punto de entrada único para acceder a los
servicios que ofrece la capa de negocio. Este patrón podría también implementar el cacheo de
consultas comunes para mejorar el rendimiento. Un Business Delegate normalmente utiliza un
patrón Service Locator que se va a encargar de los objetos del servicio, como EJBS y JMS.
Session Façade
Este patrón recomienda usar un bean de sesión como una fachada (facade) para encapsular la
complejidad de las interacciones entre los objetos de negocio participantes en un flujo de trabajo. El
Session Facade maneja los objetos de negocio y proporciona un servicio de acceso uniforme a los
clientes.
Value Object
El patrón Value Object proporciona las mejores técnicas y estrategias para intercambiar datos entre
las diferentes capas. Este patrón intenta reducir el número de llamadas remotas y evitar la
sobrecarga asociada que produce obtener datos de la capa de negocio.
Value List Handler
Se puede utilizar un Value List Handler para controlar las búsquedas, hacer un caché con los

6 de febrero de 2008                           Tema 7                                               9
resultados, y proporcionar los resultados al cliente en una hoja de resultados cuyo tamaño y
desplazamiento cumpla los requerimientos del cliente.
DAO (Data Access Object)
Utilizar un Data Access Object (DAO) para abstraer y encapsular todos los accesos a la fuente de
datos. El DAO maneja la conexión con la fuente de datos para obtener y almacenar datos.
 Para estudiar en detalle cada uno de ellos (contexto, problema, estrategias de solución y las
consecuencias) podéis ir pinchando sobre el nombre de cada patrón en la siguiente imagen
http://java.sun.com/blueprints/corej2eepatterns/Patterns/index.html.
La versión en castellano de dicha documentación la podéis encontrar en la página de Java en
castellano(http://www.programacion.com/java/tutorial/patrones/ y
http://www.programacion.com/java/tutorial/patrones2/).




6 de febrero de 2008                         Tema 7                                           10
3 Otros Web Frameworks
La cantidad de web frameworks para J2EE que nos podemos encontrar actualmente en el mercado
empieza a ser tan numerosa que podemos llegar a perdernos en el momento de tener que elegir cual
debemos utilizar.
Como ejemplo, os envío el link de un post donde Matt Raible intenta dar su opinión sobre que web
framework se debe utilizar a lo que recibe una serie de respuestas donde cada uno de los
programadores           expone         que       es         mejor la que         él        utiliza
(http://raibledesigns.com/rd/entry/re_what_web_application_framework).
En este foro os puedo enumerar que se comentan los siguiente frameworks:
    1. Struts, http://struts.apache.org/.
    2. JSF, http://java.sun.com/javaee/javaserverfaces/.
    3. Spring – Spring MVC, http://www.springframework.org/.
    4. Shale, http://shale.apache.org/.
    5. WebWork, http://sf.net/projects/opensymphony/.
    6. Struts 2 (Struts/WebWork), http://struts.apache.org/2.0.9/index.html.
    7. Tapestry, http://tapestry.apache.org/.
    8. Click. http://click.sourceforge.net/.
    9. Stripes, http://mc4j.org/confluence/display/stripes/Home.
    10.Wicket, http://wicket.apache.org/.
    11.Echo2, http://www.nextapp.com/platform/echo2/echo/.
    12.Thinwire, http://www.thinwire.com/.


Como podéis ver, son bastante como para dejarte en la duda de cual utilizar e, incluso, llegar a
decidir continuar con el que ya tienes que al menos lo controlas.
En el siguiente apartado, os voy a presentar las ventajas e inconvenientes de unos cuantos de éstos
frameworks, información que he extraído de un documento de Matt Raible donde los compara
(ComparingJavaWebFrameworks.pdf).




6 de febrero de 2008                          Tema 7                                            11
3.1 JSF, Spring MVC, Stripes, Structs 2, Tapestry, Ticket
 FRAMEWORK                       VENTAJAS                             INCONVENIENTES
                   - Es parte del estándar J2EE.            - Los JSPs terminan siendo una ‘sopa’
                   - Permite realizar desarrollos de forma  de etiquetas.
                   rápida y sencilla.                       - No funciona bien con restricciones de
JSF
                   - Existen multitud de librerías de       seguridad.
                   componentes desarrollados.               - No existe una única implementación
                                                            única.
                   - Facilidades para realizar              - Multitud de XML para realizar la
                   validaciones, binding entre vista y      configuración.
                   modelo, etc.                             - Se diría que es incluso demasiado
                   - Integración con múltiple vistas        flexible.
Spring MVC
                   JSP/JSTL, Tiles, Velocity, etc.          - No tiene soporte para Ajax
                   - Mediante el patrón IoC (Inversion of predefinido.
                   Control) que utiliza Spring se facilitan
                   las pruebas.
                   - No utiliza XML para la configuración - La comunidad ‘stripe’ es pequeña.
                   sino un convenio para el nombrado de - Este framework no tiene un desarrollo
                   clases.                                  tan activo como otros.
Stripes
                   - Existe buena documentación.            - Las direcciones URLs se encuentran
                   - Una comunidad de desarrollo            ‘hard-coded’ en los ActionBeans, es
                   entusiasta.                              decir, directamente escritas dentro del
                                                            código de los ActionBeans.
                   - Arquitectura sencilla y fácilmente     - La documentación se encuentra mal
                   extensible.                              organizada.
                   - La librería de etiquetas se pueden     - Se tiene una concentración excesiva
Struts 2           personalizar con FreeMarker o            en la nuevas funcionalidades.
                   Velocity.                                - Las búsquedas de documentación te
                   - Se puede definir la navegación         remiten a la versión 1.x.
                   basada en Controladores o basada en
                   páginas.
                   - Es un framework muy productivo una - La documentación es más conceptual
                   vez que se aprende.                      que pragmática.
                   - Las plantillas son HTML, lo que es - La curva de aprendizaje es alta.
Tapestry           muy conveniente si se trabaja            - Los ciclos definidos para lanzar
                   conjuntamente con diseñadores            nuevas versiones son excesivamente
                   gráficos.                                largos.
                   - En cada nueva versión se aportan
                   gran cantidad de innovaciones.
                   - Recomendado para desarrolladores - Las plantillas HTML se mezclan con
                   Java, no para desarrolladores web.       el código Java.
Wicket             - Las páginas y las vistas se encuentran - Se necesita tener un buen nivel de
                   altamente enlazadas.                     programación orientada a objetos.
                   - Participa una comunidad muy activa - Todo se hace en Java (Ticket Way).
                   en dicho framework.


6 de febrero de 2008                         Tema 7                                             12
6 de febrero de 2008   Tema 7   13

Más contenido relacionado

La actualidad más candente

DocumentacióN Del Sitio Web En Xml
DocumentacióN Del Sitio Web En XmlDocumentacióN Del Sitio Web En Xml
DocumentacióN Del Sitio Web En Xml
Antonio
 
05 Joomla. Consideraciones Globales
05 Joomla. Consideraciones Globales05 Joomla. Consideraciones Globales
05 Joomla. Consideraciones Globales
José M. Padilla
 
Instalacion SQL server 2012 replicacion
Instalacion SQL server 2012 replicacionInstalacion SQL server 2012 replicacion
Instalacion SQL server 2012 replicacion
Jonathan Rivas
 
Manual de wordpress
Manual de wordpressManual de wordpress
Manual de wordpress
Jess Abad
 
Web 2.0 ajax con SharePoint
Web 2.0 ajax con SharePointWeb 2.0 ajax con SharePoint
Web 2.0 ajax con SharePoint
goreorti
 
03 Joomla. Conceptos Generales
03 Joomla. Conceptos Generales03 Joomla. Conceptos Generales
03 Joomla. Conceptos Generales
José M. Padilla
 
Diapositivas joomla
Diapositivas joomlaDiapositivas joomla
Diapositivas joomla
Bruja Loca
 

La actualidad más candente (11)

DocumentacióN Del Sitio Web En Xml
DocumentacióN Del Sitio Web En XmlDocumentacióN Del Sitio Web En Xml
DocumentacióN Del Sitio Web En Xml
 
Joomla cms primeros pasos para administrar contenidos en la web
Joomla cms primeros pasos para administrar contenidos en la webJoomla cms primeros pasos para administrar contenidos en la web
Joomla cms primeros pasos para administrar contenidos en la web
 
05 Joomla. Consideraciones Globales
05 Joomla. Consideraciones Globales05 Joomla. Consideraciones Globales
05 Joomla. Consideraciones Globales
 
Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012
Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012
Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012
 
Instalacion SQL server 2012 replicacion
Instalacion SQL server 2012 replicacionInstalacion SQL server 2012 replicacion
Instalacion SQL server 2012 replicacion
 
Manual de wordpress
Manual de wordpressManual de wordpress
Manual de wordpress
 
Aplicaciones Web Seguras (Anti-SQLi)
Aplicaciones Web Seguras (Anti-SQLi)Aplicaciones Web Seguras (Anti-SQLi)
Aplicaciones Web Seguras (Anti-SQLi)
 
Web 2.0 ajax con SharePoint
Web 2.0 ajax con SharePointWeb 2.0 ajax con SharePoint
Web 2.0 ajax con SharePoint
 
03 Joomla. Conceptos Generales
03 Joomla. Conceptos Generales03 Joomla. Conceptos Generales
03 Joomla. Conceptos Generales
 
Diapositivas joomla
Diapositivas joomlaDiapositivas joomla
Diapositivas joomla
 
Manual de joomla
Manual de joomlaManual de joomla
Manual de joomla
 

Destacado

C9 internacionalizacion diu_mododecompatibilidad_
C9 internacionalizacion diu_mododecompatibilidad_C9 internacionalizacion diu_mododecompatibilidad_
C9 internacionalizacion diu_mododecompatibilidad_
Julio Pari
 
C1 introduccion 2012_1_ssoo_mododecompatibilidad_
C1 introduccion 2012_1_ssoo_mododecompatibilidad_C1 introduccion 2012_1_ssoo_mododecompatibilidad_
C1 introduccion 2012_1_ssoo_mododecompatibilidad_
Julio Pari
 
C2 administracion procesador_ss00_mododecompatibilidad_
C2 administracion procesador_ss00_mododecompatibilidad_C2 administracion procesador_ss00_mododecompatibilidad_
C2 administracion procesador_ss00_mododecompatibilidad_
Julio Pari
 
Trabajo 2-grupo-13-elementos graficos y sonido
Trabajo 2-grupo-13-elementos graficos y sonidoTrabajo 2-grupo-13-elementos graficos y sonido
Trabajo 2-grupo-13-elementos graficos y sonido
Julio Pari
 
Unmsm fisi - problema de la asignación - io1 cl14 asignacion
Unmsm   fisi - problema de la asignación - io1 cl14 asignacionUnmsm   fisi - problema de la asignación - io1 cl14 asignacion
Unmsm fisi - problema de la asignación - io1 cl14 asignacion
Julio Pari
 
C5 abrazo mortal_ssoo_mododecompatibilidad_
C5 abrazo mortal_ssoo_mododecompatibilidad_C5 abrazo mortal_ssoo_mododecompatibilidad_
C5 abrazo mortal_ssoo_mododecompatibilidad_
Julio Pari
 
C7 memoria virtual_ssoo_mododecompatibilidad_
C7 memoria virtual_ssoo_mododecompatibilidad_C7 memoria virtual_ssoo_mododecompatibilidad_
C7 memoria virtual_ssoo_mododecompatibilidad_
Julio Pari
 
C4 sincronizacion procesos_ssoo_mododecompatibilidad_
C4 sincronizacion procesos_ssoo_mododecompatibilidad_C4 sincronizacion procesos_ssoo_mododecompatibilidad_
C4 sincronizacion procesos_ssoo_mododecompatibilidad_
Julio Pari
 
Diferencias de sistemas operativos
Diferencias de sistemas operativosDiferencias de sistemas operativos
Diferencias de sistemas operativos
AleMuPa
 
Contrato marco de desarrollo de software
Contrato marco de desarrollo de softwareContrato marco de desarrollo de software
Contrato marco de desarrollo de software
ariz_2214
 
Modelo Contrato para el-desarrollo-de-software
Modelo Contrato para el-desarrollo-de-softwareModelo Contrato para el-desarrollo-de-software
Modelo Contrato para el-desarrollo-de-software
ariz_2214
 

Destacado (14)

C9 internacionalizacion diu_mododecompatibilidad_
C9 internacionalizacion diu_mododecompatibilidad_C9 internacionalizacion diu_mododecompatibilidad_
C9 internacionalizacion diu_mododecompatibilidad_
 
C1 introduccion 2012_1_ssoo_mododecompatibilidad_
C1 introduccion 2012_1_ssoo_mododecompatibilidad_C1 introduccion 2012_1_ssoo_mododecompatibilidad_
C1 introduccion 2012_1_ssoo_mododecompatibilidad_
 
C2 administracion procesador_ss00_mododecompatibilidad_
C2 administracion procesador_ss00_mododecompatibilidad_C2 administracion procesador_ss00_mododecompatibilidad_
C2 administracion procesador_ss00_mododecompatibilidad_
 
Trabajo 2-grupo-13-elementos graficos y sonido
Trabajo 2-grupo-13-elementos graficos y sonidoTrabajo 2-grupo-13-elementos graficos y sonido
Trabajo 2-grupo-13-elementos graficos y sonido
 
Unmsm fisi - problema de la asignación - io1 cl14 asignacion
Unmsm   fisi - problema de la asignación - io1 cl14 asignacionUnmsm   fisi - problema de la asignación - io1 cl14 asignacion
Unmsm fisi - problema de la asignación - io1 cl14 asignacion
 
Formato de contrato marco para desarrollo ágil
Formato de contrato marco para desarrollo ágilFormato de contrato marco para desarrollo ágil
Formato de contrato marco para desarrollo ágil
 
C5 abrazo mortal_ssoo_mododecompatibilidad_
C5 abrazo mortal_ssoo_mododecompatibilidad_C5 abrazo mortal_ssoo_mododecompatibilidad_
C5 abrazo mortal_ssoo_mododecompatibilidad_
 
C7 memoria virtual_ssoo_mododecompatibilidad_
C7 memoria virtual_ssoo_mododecompatibilidad_C7 memoria virtual_ssoo_mododecompatibilidad_
C7 memoria virtual_ssoo_mododecompatibilidad_
 
C4 sincronizacion procesos_ssoo_mododecompatibilidad_
C4 sincronizacion procesos_ssoo_mododecompatibilidad_C4 sincronizacion procesos_ssoo_mododecompatibilidad_
C4 sincronizacion procesos_ssoo_mododecompatibilidad_
 
El Contrato de desarrollo de software
El Contrato de desarrollo de softwareEl Contrato de desarrollo de software
El Contrato de desarrollo de software
 
contratos de software
contratos de softwarecontratos de software
contratos de software
 
Diferencias de sistemas operativos
Diferencias de sistemas operativosDiferencias de sistemas operativos
Diferencias de sistemas operativos
 
Contrato marco de desarrollo de software
Contrato marco de desarrollo de softwareContrato marco de desarrollo de software
Contrato marco de desarrollo de software
 
Modelo Contrato para el-desarrollo-de-software
Modelo Contrato para el-desarrollo-de-softwareModelo Contrato para el-desarrollo-de-software
Modelo Contrato para el-desarrollo-de-software
 

Similar a Tema 7

autenticacion apache con mysql
autenticacion apache con mysqlautenticacion apache con mysql
autenticacion apache con mysql
Roberto Almena
 
Seguridad 2° exp_ooo
Seguridad 2° exp_oooSeguridad 2° exp_ooo
Seguridad 2° exp_ooo
Yuzel Sederap
 

Similar a Tema 7 (20)

Seguridad
SeguridadSeguridad
Seguridad
 
Hacking de servidores web OMHE
Hacking de servidores web OMHEHacking de servidores web OMHE
Hacking de servidores web OMHE
 
Grails: Framework para el desarrollo de aplicaciones Web No 5
Grails: Framework para el desarrollo de aplicaciones Web No 5Grails: Framework para el desarrollo de aplicaciones Web No 5
Grails: Framework para el desarrollo de aplicaciones Web No 5
 
Apache: Servidores web con autentificación
Apache: Servidores web con autentificaciónApache: Servidores web con autentificación
Apache: Servidores web con autentificación
 
15a. Reunion de SpringHispano.org y grails.org.mx
15a. Reunion de SpringHispano.org y grails.org.mx15a. Reunion de SpringHispano.org y grails.org.mx
15a. Reunion de SpringHispano.org y grails.org.mx
 
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdfAsegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
 
UDA-Anexo gestión de validaciones
UDA-Anexo gestión de validacionesUDA-Anexo gestión de validaciones
UDA-Anexo gestión de validaciones
 
autenticacion apache con mysql
autenticacion apache con mysqlautenticacion apache con mysql
autenticacion apache con mysql
 
Tema 3
Tema 3Tema 3
Tema 3
 
Metodo de autenticacion por clave publica
Metodo de autenticacion por clave publicaMetodo de autenticacion por clave publica
Metodo de autenticacion por clave publica
 
Seguridad 2° exp_ooo
Seguridad 2° exp_oooSeguridad 2° exp_ooo
Seguridad 2° exp_ooo
 
Autentificación de Seguridad de SQL SERVER
Autentificación de Seguridad de SQL SERVERAutentificación de Seguridad de SQL SERVER
Autentificación de Seguridad de SQL SERVER
 
RESUMEN PROXY
RESUMEN PROXYRESUMEN PROXY
RESUMEN PROXY
 
servidor proxy
servidor proxyservidor proxy
servidor proxy
 
Resumen Servidor Proxy
Resumen Servidor ProxyResumen Servidor Proxy
Resumen Servidor Proxy
 
GFI - Seguridad en tus APIs
GFI - Seguridad en tus APIsGFI - Seguridad en tus APIs
GFI - Seguridad en tus APIs
 
Resumen squid
Resumen squidResumen squid
Resumen squid
 
Ataques a-bases-de-datos
Ataques a-bases-de-datosAtaques a-bases-de-datos
Ataques a-bases-de-datos
 
Glassfish
GlassfishGlassfish
Glassfish
 
SEMANA IT 2013 - Distribucion de aplicaciones con System Center Configuration...
SEMANA IT 2013 - Distribucion de aplicaciones con System Center Configuration...SEMANA IT 2013 - Distribucion de aplicaciones con System Center Configuration...
SEMANA IT 2013 - Distribucion de aplicaciones con System Center Configuration...
 

Más de Julio Pari

Ingenieria Software Examen Parcial 2013 2 Profesor Cordero
Ingenieria Software Examen Parcial 2013 2 Profesor CorderoIngenieria Software Examen Parcial 2013 2 Profesor Cordero
Ingenieria Software Examen Parcial 2013 2 Profesor Cordero
Julio Pari
 
Práctica de Inventarios - Investigación Operativa II
Práctica de Inventarios - Investigación Operativa IIPráctica de Inventarios - Investigación Operativa II
Práctica de Inventarios - Investigación Operativa II
Julio Pari
 
Armas silenciosas para guerras tranquilas
Armas silenciosas para guerras tranquilasArmas silenciosas para guerras tranquilas
Armas silenciosas para guerras tranquilas
Julio Pari
 
Formato de presentación de Proyecto UNMSM FISI
Formato de presentación de Proyecto UNMSM FISIFormato de presentación de Proyecto UNMSM FISI
Formato de presentación de Proyecto UNMSM FISI
Julio Pari
 
Cuento para nuestro hijo y nuestra hija
Cuento para nuestro hijo y nuestra hijaCuento para nuestro hijo y nuestra hija
Cuento para nuestro hijo y nuestra hija
Julio Pari
 
Ingeniería de Software Examen Parcial
Ingeniería de Software Examen ParcialIngeniería de Software Examen Parcial
Ingeniería de Software Examen Parcial
Julio Pari
 
Sistemas Distribuidos Examen Parcial
Sistemas Distribuidos Examen ParcialSistemas Distribuidos Examen Parcial
Sistemas Distribuidos Examen Parcial
Julio Pari
 
Php07 consultas bd
Php07 consultas bdPhp07 consultas bd
Php07 consultas bd
Julio Pari
 
Php06 instalacion my_sql
Php06 instalacion my_sqlPhp06 instalacion my_sql
Php06 instalacion my_sql
Julio Pari
 
Php05 funciones usuario
Php05 funciones usuarioPhp05 funciones usuario
Php05 funciones usuario
Julio Pari
 

Más de Julio Pari (20)

Evento - Virtual Lab Despliegue de aplicaciones en Kubernetes #Ibm virtual la...
Evento - Virtual Lab Despliegue de aplicaciones en Kubernetes #Ibm virtual la...Evento - Virtual Lab Despliegue de aplicaciones en Kubernetes #Ibm virtual la...
Evento - Virtual Lab Despliegue de aplicaciones en Kubernetes #Ibm virtual la...
 
Links kubernetes - Evento - Virtual Lab Despliegue de aplicaciones en Kubernetes
Links kubernetes - Evento - Virtual Lab Despliegue de aplicaciones en KubernetesLinks kubernetes - Evento - Virtual Lab Despliegue de aplicaciones en Kubernetes
Links kubernetes - Evento - Virtual Lab Despliegue de aplicaciones en Kubernetes
 
Comandos - Evento - Virtual Lab Despliegue de aplicaciones en Kubernetes
Comandos - Evento - Virtual Lab Despliegue de aplicaciones en KubernetesComandos - Evento - Virtual Lab Despliegue de aplicaciones en Kubernetes
Comandos - Evento - Virtual Lab Despliegue de aplicaciones en Kubernetes
 
Indice General Tesis Sistemas UPC
Indice General Tesis Sistemas UPCIndice General Tesis Sistemas UPC
Indice General Tesis Sistemas UPC
 
Arquitectura Web FISI UNMSM
Arquitectura Web FISI UNMSMArquitectura Web FISI UNMSM
Arquitectura Web FISI UNMSM
 
Jelastic Enterprise
Jelastic EnterpriseJelastic Enterprise
Jelastic Enterprise
 
Marketing Examen Parcial Profesor Osorio
Marketing Examen Parcial Profesor OsorioMarketing Examen Parcial Profesor Osorio
Marketing Examen Parcial Profesor Osorio
 
Ingenieria Software Examen Parcial 2013 2 Profesor Cordero
Ingenieria Software Examen Parcial 2013 2 Profesor CorderoIngenieria Software Examen Parcial 2013 2 Profesor Cordero
Ingenieria Software Examen Parcial 2013 2 Profesor Cordero
 
Documento de Arquitectura
Documento de ArquitecturaDocumento de Arquitectura
Documento de Arquitectura
 
Solucion Examen Parcial Sistemas Digitales UNMSM FISI
Solucion Examen Parcial Sistemas Digitales UNMSM FISISolucion Examen Parcial Sistemas Digitales UNMSM FISI
Solucion Examen Parcial Sistemas Digitales UNMSM FISI
 
Práctica de Inventarios - Investigación Operativa II
Práctica de Inventarios - Investigación Operativa IIPráctica de Inventarios - Investigación Operativa II
Práctica de Inventarios - Investigación Operativa II
 
Armas silenciosas para guerras tranquilas
Armas silenciosas para guerras tranquilasArmas silenciosas para guerras tranquilas
Armas silenciosas para guerras tranquilas
 
UML Java
UML JavaUML Java
UML Java
 
Formato de presentación de Proyecto UNMSM FISI
Formato de presentación de Proyecto UNMSM FISIFormato de presentación de Proyecto UNMSM FISI
Formato de presentación de Proyecto UNMSM FISI
 
Cuento para nuestro hijo y nuestra hija
Cuento para nuestro hijo y nuestra hijaCuento para nuestro hijo y nuestra hija
Cuento para nuestro hijo y nuestra hija
 
Ingeniería de Software Examen Parcial
Ingeniería de Software Examen ParcialIngeniería de Software Examen Parcial
Ingeniería de Software Examen Parcial
 
Sistemas Distribuidos Examen Parcial
Sistemas Distribuidos Examen ParcialSistemas Distribuidos Examen Parcial
Sistemas Distribuidos Examen Parcial
 
Php07 consultas bd
Php07 consultas bdPhp07 consultas bd
Php07 consultas bd
 
Php06 instalacion my_sql
Php06 instalacion my_sqlPhp06 instalacion my_sql
Php06 instalacion my_sql
 
Php05 funciones usuario
Php05 funciones usuarioPhp05 funciones usuario
Php05 funciones usuario
 

Tema 7

  • 1. II Curso Online JAVA-J2EE TEMA 7 J2EE avanzado Autor: PCYTA / Centro de Excelencia de Software Libre de Castilla-La Mancha Versión: 1.0 Fecha: Revisado 07-02-2008 11:46 Licencia: CC-by-sa 2.5
  • 2. 0 Licencia Usted es libre de: Copiar, distribuir y comunicar públicamente la obra Hacer obras derivadas Bajo las condiciones siguientes: Reconocimiento. Debe reconocer los créditos de la obra de la manera especificada por el autor o el licenciador (pero no de una manera que sugiera que tiene su apoyo o apoyan el uso que hace de su obra). Compartir bajo la misma licencia. Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. • Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. • Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor • Nada en esta licencia menoscaba o restringe los derechos morales del autor. Para ver la licencia visite: http://creativecommons.org/licenses/by-sa/2.5/es/legalcode.es 6 de febrero de 2008 Tema 7 2
  • 3. UNIDAD VII. J2EE AVANZADO 0 Licencia...........................................................................................................................................2 1 Seguridad en las aplicaciones Web...............................................................................................4 1.1 Introducción a la seguridad en las aplicaciones Web...............................................................4 1.2 Métodos de autenticación web.................................................................................................4 2 Patrones de diseño J2EE...............................................................................................................7 2.1 Introducción a los patrones J2EE.............................................................................................7 2.2 Resumen patrones J2EE...........................................................................................................9 3 Otros Web Frameworks..............................................................................................................11 3.1 JSF, Spring MVC, Stripes, Structs 2, Tapestry, Ticket...........................................................12 6 de febrero de 2008 Tema 7 3
  • 4. 1 Seguridad en las aplicaciones Web 1.1 Introducción a la seguridad en las aplicaciones Web Cuando desarrollamos o desplegamos una aplicación en un entorno de producción es probable que tengamos que tener en cuenta ciertas cuestiones relativas a la seguridad. Primero, es posible que nuestra aplicación solicite al usuario que pruebe su identidad, esto se denomina autenticación. Normalmente, se suele realizar mediante la introducción por parte del usuario de su identificador (usuario) y una clave asociada (contraseña). Mediante la autenticación nos aseguramos de que el usuario es quien dice ser. Una vez autenticado un usuario, el siguiente paso es la autorización. Mediante la autorización nos vamos a asegurar de que un usuario determinado sólo tiene acceso a los recursos a los que se le quiera dar acceso. Normalmente, esto se consigue manteniendo unas tablas que nos indican que acciones puede realizar un usuario determinado. Por último, tenemos que tener en cuenta la confidencialidad de los datos, es decir, que los datos únicamente tendrían que ser accesibles por la persona/s adecuadas. Una vez definidos los conceptos de autenticación, autorización y confidencialidad de los datos, vamos a ver como podemos conseguir estos requisitos de seguridad en la capa web. En primer lugar necesitamos proporcionar un método para recoger la identidad de los usuarios o lo que es lo mismo un mecanismo de login. La forma más famosa de login en las aplicaciones web es la utilización de la pareja usuario/contraseña, pero podrían utilizarse también certificados para realizar la autenticación. Una vez que la información para autenticarse es aportada por el usuario necesitamos enviarla desde el navegador al servidor. En este paso estamos hablando de confidencialidad, y la forma de realizar el transporte de forma segura es mediante SSL. Cuando el servidor reciba esta información (usuario/contraseña) necesita verificarla contra un repositorio (base de datos, fichero plano, servidor LDAP, etc.). Este repositorio se denomina realm. Un realm se encarga de mantener la información relacionada con los usuarios, contraseñas y roles. Además, es recomendable que los servidores también mantengan la información relacionada con el control de acceso a los recursos (autorización), deben permitir la definición de que tipo de usuarios (roles) pueden acceder a que recursos. 1.2 Métodos de autenticación web En este apartado vamos a resumir los dos esquemas de seguridad web más importantes: Autenticación Básica (BASIC) y Autenticación basado en Formulario (FORM).La diferencia entre estos dos métodos básicamente está en la forma en que el navegador recoge la identificación del usuario. En el método Basic el navegador utiliza una ventana de diálogo propia y en el método Form la pantalla de autenticación es un fichero (HTML o JSP) que tiene un formulario con unos campos predefinidos. Autenticación Básica (BASIC). Los pasos para securizar una aplicación web con este método son los siguientes: 6 de febrero de 2008 Tema 7 4
  • 5. 1. Definir los usuarios, contraseñas y roles (realms). La definición de los realms son específicos de cada servidor (Tomcat, Weblogic, etc) y pueden definirse realms en ficheros planos, bases de datos o servidores LDAP. Para Tomcat, el realm por defecto es un fichero que se denomina tomcat-users.xml y que se encuentra en el directorio conf. A continuación hay un ejemplo del contenido de este fichero: <?xml version="1.0" encoding="UTF-8"?> <tomcat-users> <role rolename="Administrador"/> <role rolename="Usuario"/> <user username="admin" password="admin" roles="Administrador,Usuario"/> <user username="juan" password="juan" roles="Usuario"/> </tomcat-users> 2. Especificar los recursos (URLs) que tienen restricciones de acceso. Los parámetros de securización en la aplicación web se definen dentro del fichero web.xml. Para establecer la autenticación Básica se utilizan las siguientes etiquetas: <security-constraint> <web-resource-collection> <web-resource-name>Admin</web-resource-name> <url-pattern>/HolaAdministrador</url-pattern> <http-method>POST</http-method> <http-method>GET</http-method> </web-resource-collection> <auth-constraint> <role-name>Administrador</role-name> </auth-constraint> <user-data-constraint> <transport-guarantee>NONE</transport-guarantee> </user-data-constraint> </security-constraint> La etiqueta <transport-guarantee> cuando tiene el valor CONFIDENTIAL sirve para definir que las URLs protegidas serán accesibles a través de SSL, con NONE se hace todo sin SSL. 3. Parametrizar la aplicación web para que utilice la autenticación Basica. Al igual que antes, esta definición se realiza también en el fichero web.xml: <web-app> ... <security-constraint>...</security-constraint> <login-config> <auth-method>BASIC</auth-method> <realm-name>default</realm-name> </login-config> ... </web-app> 6 de febrero de 2008 Tema 7 5
  • 6. Autenticación basada en Formulario (FORM). Los pasos 1 y 2 anteriores también se tienen que realizar para éste método, además tenemos que realizar: 1. Parametrizar la aplicación web para que utilice la autenticación basada en FORM. Los parámetros de securización en la aplicación web se definen dentro del fichero web.xml. Para establecer este método se utilizan las siguientes etiquetas: <web-app> ... <security-constraint>...</security-constraint> <login-config> <auth-method>FORM</auth-method> <realm-name>default</realm-name> </login-config> ... </web-app> 2. Crear los ficheros necesarios para la página de login y la página de error. La página de login puede ser un fichero HTML o JSP que contiene el siguiente formulario: <FORM ACTION="j_security_check" METHOD="POST"> <INPUT TYPE="TEXT" NAME="j_username"> <INPUT TYPE="PASSWORD" NAME="j_password"> </FORM> La página de error también es un fichero HTML o JSP cuyo contenido no está prefijado. 6 de febrero de 2008 Tema 7 6
  • 7. 2 Patrones de diseño J2EE 2.1 Introducción a los patrones J2EE Tal y como vimos en el Tema 1 un patrón de diseño define una forma de resolver un problema que se presenta en un contexto determinado. En esta lección vamos a ver algunos de los patrones J2EE que se definen en el libro 'Core J2EE Patterns: Best Practices and Design Strategies' escrito por arquitectos del Sun Java Center (http://java.sun.com/blueprints/corej2eepatterns/index.html). En este libro se realiza una clasificación de patrones atendiendo al modelo de arquitectura en capas, distinguiendo entre capa de presentación, capa de negocio y capa de integración. Se incluyen 15 patrones en el catálogo que se agrupan de la siguiente forma: Capa de Presentación Intercepting Filter; Front Controller; View Helper; Composite View; Service to Worker; Dispatcher View. Capa de Negocio Business Delegate; Value Object; Session Facade; Composite Entity; Value Object Assembler, Value List Handler; Service Locator. Capa de Integración Data Access Object; Service Activator En la capa de presentación se encuentran los patrones relacionados con la tecnología JSP/Servlets, la capa de negocio contiene los patrones relacionados con la tecnología EJB y en la capa de integración contiene la tecnología relacionada con JDBC y JMS. En la siguiente imagen podemos ver como se interrelacionan los patrones J2EE: 6 de febrero de 2008 Tema 7 7
  • 8. 6 de febrero de 2008 Tema 7 8
  • 9. 2.2 Resumen patrones J2EE En este apartado simplemente os voy a hacer un pequeño resumen de los patrones J2EE que considero más importantes. Intercepting Filter Se utiliza para ‘interceptar’ peticiones (request) y respuestas (response) y aplicarles un filtro determinado, por ejemplo, añadir logging, trazas de depuración, etc. Estos filtros pueden ser añadidos o eliminados de forma declarativa, pudiendo aplicarse más de un filtro de forma correlativa a la declaración realizada. Front Controller Proporciona un control centralizado para gestionar las peticiones que se realizan en la capa de presentación. El controlador se encarga de recibir y gestionar las peticiones, centralizando la invocación de los servicios de seguridad, delegando el procesamiento de la lógica de negocio, controlando la elección de una vista apropiada, el manejo de errores y el control de la selección de estrategias de creación del contenido de respuesta. View Helper Éste patrón enfatiza en la separación entre el código para la vista y el código de la lógica de negocio. Se sugiere utilizar Helper para encapsular la lógica relacionada con la recogida de parámetros, validaciones y adaptación de los datos enviados al modelo. Este componente normalmente delega la lógica de negocio utilizando un patrón Business Delegate mientras que la vista puede encontrarse compuesta de múltiples subcomponentes. Composite View Propone utilizar vistas compuestas que se componen de varias subvistas atómicas. Cada componente de la plantilla se podría incluir dinámicamente dentro del total y la distribución de la página se maneja independientemente del contenido. Business Delegate Reduce el acoplamiento entre capas y proporciona un punto de entrada único para acceder a los servicios que ofrece la capa de negocio. Este patrón podría también implementar el cacheo de consultas comunes para mejorar el rendimiento. Un Business Delegate normalmente utiliza un patrón Service Locator que se va a encargar de los objetos del servicio, como EJBS y JMS. Session Façade Este patrón recomienda usar un bean de sesión como una fachada (facade) para encapsular la complejidad de las interacciones entre los objetos de negocio participantes en un flujo de trabajo. El Session Facade maneja los objetos de negocio y proporciona un servicio de acceso uniforme a los clientes. Value Object El patrón Value Object proporciona las mejores técnicas y estrategias para intercambiar datos entre las diferentes capas. Este patrón intenta reducir el número de llamadas remotas y evitar la sobrecarga asociada que produce obtener datos de la capa de negocio. Value List Handler Se puede utilizar un Value List Handler para controlar las búsquedas, hacer un caché con los 6 de febrero de 2008 Tema 7 9
  • 10. resultados, y proporcionar los resultados al cliente en una hoja de resultados cuyo tamaño y desplazamiento cumpla los requerimientos del cliente. DAO (Data Access Object) Utilizar un Data Access Object (DAO) para abstraer y encapsular todos los accesos a la fuente de datos. El DAO maneja la conexión con la fuente de datos para obtener y almacenar datos. Para estudiar en detalle cada uno de ellos (contexto, problema, estrategias de solución y las consecuencias) podéis ir pinchando sobre el nombre de cada patrón en la siguiente imagen http://java.sun.com/blueprints/corej2eepatterns/Patterns/index.html. La versión en castellano de dicha documentación la podéis encontrar en la página de Java en castellano(http://www.programacion.com/java/tutorial/patrones/ y http://www.programacion.com/java/tutorial/patrones2/). 6 de febrero de 2008 Tema 7 10
  • 11. 3 Otros Web Frameworks La cantidad de web frameworks para J2EE que nos podemos encontrar actualmente en el mercado empieza a ser tan numerosa que podemos llegar a perdernos en el momento de tener que elegir cual debemos utilizar. Como ejemplo, os envío el link de un post donde Matt Raible intenta dar su opinión sobre que web framework se debe utilizar a lo que recibe una serie de respuestas donde cada uno de los programadores expone que es mejor la que él utiliza (http://raibledesigns.com/rd/entry/re_what_web_application_framework). En este foro os puedo enumerar que se comentan los siguiente frameworks: 1. Struts, http://struts.apache.org/. 2. JSF, http://java.sun.com/javaee/javaserverfaces/. 3. Spring – Spring MVC, http://www.springframework.org/. 4. Shale, http://shale.apache.org/. 5. WebWork, http://sf.net/projects/opensymphony/. 6. Struts 2 (Struts/WebWork), http://struts.apache.org/2.0.9/index.html. 7. Tapestry, http://tapestry.apache.org/. 8. Click. http://click.sourceforge.net/. 9. Stripes, http://mc4j.org/confluence/display/stripes/Home. 10.Wicket, http://wicket.apache.org/. 11.Echo2, http://www.nextapp.com/platform/echo2/echo/. 12.Thinwire, http://www.thinwire.com/. Como podéis ver, son bastante como para dejarte en la duda de cual utilizar e, incluso, llegar a decidir continuar con el que ya tienes que al menos lo controlas. En el siguiente apartado, os voy a presentar las ventajas e inconvenientes de unos cuantos de éstos frameworks, información que he extraído de un documento de Matt Raible donde los compara (ComparingJavaWebFrameworks.pdf). 6 de febrero de 2008 Tema 7 11
  • 12. 3.1 JSF, Spring MVC, Stripes, Structs 2, Tapestry, Ticket FRAMEWORK VENTAJAS INCONVENIENTES - Es parte del estándar J2EE. - Los JSPs terminan siendo una ‘sopa’ - Permite realizar desarrollos de forma de etiquetas. rápida y sencilla. - No funciona bien con restricciones de JSF - Existen multitud de librerías de seguridad. componentes desarrollados. - No existe una única implementación única. - Facilidades para realizar - Multitud de XML para realizar la validaciones, binding entre vista y configuración. modelo, etc. - Se diría que es incluso demasiado - Integración con múltiple vistas flexible. Spring MVC JSP/JSTL, Tiles, Velocity, etc. - No tiene soporte para Ajax - Mediante el patrón IoC (Inversion of predefinido. Control) que utiliza Spring se facilitan las pruebas. - No utiliza XML para la configuración - La comunidad ‘stripe’ es pequeña. sino un convenio para el nombrado de - Este framework no tiene un desarrollo clases. tan activo como otros. Stripes - Existe buena documentación. - Las direcciones URLs se encuentran - Una comunidad de desarrollo ‘hard-coded’ en los ActionBeans, es entusiasta. decir, directamente escritas dentro del código de los ActionBeans. - Arquitectura sencilla y fácilmente - La documentación se encuentra mal extensible. organizada. - La librería de etiquetas se pueden - Se tiene una concentración excesiva Struts 2 personalizar con FreeMarker o en la nuevas funcionalidades. Velocity. - Las búsquedas de documentación te - Se puede definir la navegación remiten a la versión 1.x. basada en Controladores o basada en páginas. - Es un framework muy productivo una - La documentación es más conceptual vez que se aprende. que pragmática. - Las plantillas son HTML, lo que es - La curva de aprendizaje es alta. Tapestry muy conveniente si se trabaja - Los ciclos definidos para lanzar conjuntamente con diseñadores nuevas versiones son excesivamente gráficos. largos. - En cada nueva versión se aportan gran cantidad de innovaciones. - Recomendado para desarrolladores - Las plantillas HTML se mezclan con Java, no para desarrolladores web. el código Java. Wicket - Las páginas y las vistas se encuentran - Se necesita tener un buen nivel de altamente enlazadas. programación orientada a objetos. - Participa una comunidad muy activa - Todo se hace en Java (Ticket Way). en dicho framework. 6 de febrero de 2008 Tema 7 12
  • 13. 6 de febrero de 2008 Tema 7 13