Spring, un Framework para desarrollar aplicaciones Web Java

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Spring, un Framework para desarrollar aplicaciones Web Java"

Transcripción

1 Sé diferente, intégrate Mca088 Manual Spring, un Framework para desarrollar aplicaciones Web Java Autor: Orlando Gutiérrez Fecha: 01/01/2011 Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 1

2 ÍNDICE: L1 DESARROLLO DE APLICACIONES WEB...3 L2 DESARROLLO DE APLICACIONES EN MÚLTIPLES CAPAS...4 L3 MODELO MVC...5 L4 FRAMEWOKS DE DESARROLLO...6 L5 QUÉ ES SPRING?...6 L6 REQUISITOS SPRING...7 L8 ARQUITECTURA SPRING...9 L9 PROGRAMACIÓN ORIENTADA POR ASPECTOS AOP L10 PATRÓN IOC INVERSIÓN DEL CONTROL L11 DESARROLLO DE UNA APLICACIÓN Y CONFIGURACIÓN DEL AMBIENTE: INDEX.JSP, TOMCAT, WEB.XML L12 DESARROLLO Y CONFIGURACIÓN DE LAS CAPAS DE VISTA Y LOS CONTROLADORES L13 DESARROLLO LA LÓGICA DEL NEGOCIO L14 DESARROLLO DE LA INTERFAZ WEB: AGREGAR UN FORMULARIO, AGREGAR UN CONTROLADOR DE FORMULARIO L15 IMPLEMENTAR PERSISTENCIA A TRAVÉS DE BASES DE DATOS L16 JDBC L17 INTEGRAR LAS CAPAS L18 AGREGAR SERVICIOS L19 MANEJAR TRANSACCIONES L20 MANEJAR POOL DE CONEXIONES L21 DESARROLLAR SCRIPTS PARA EL BUILD Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 2

3 L1 DESARROLLO DE APLICACIONES WEB En la ingeniería de software se denomina aplicación web a aquellas aplicaciones donde los usuarios pueden utilizar accediendo a un servidor web a través de Internet o de una intranet mediante un navegador. En otras palabras, es una aplicación software codificada en un lenguaje soportado por los navegadores web donde se confía la ejecución al navegador. Las aplicaciones web son populares debido a lo práctico del navegador web como cliente ligero, a la independencia del sistema de operación, así como a la facilidad para actualizar y mantener aplicaciones web sin distribuir e instalar software a miles de usuarios potenciales. Existen aplicaciones como los webmails, wikis, weblogs, tiendas en línea; siendo ejemplos bien conocidos de aplicaciones web. Es importante mencionar una página Web puede contener elementos permitiendo una comunicación activa entre el usuario y la información. Esto permite al usuario acceder a los datos de modo interactivo, porque la página responderá a cada una de sus acciones, como por ejemplo rellenar y enviar formularios, participar en juegos diversos y acceder a manejadirores de base de datos de todo tipo. VENTAJAS - Ahorra tiempo: Se pueden realizar tareas sencillas sin necesidad de descargar ni instalar ningún programa. - No existen problemas de compatibilidad: Basta tener un navegador actualizado para poder utilizarlas. - No ocupan espacio en el disco duro. - Actualizaciones inmediatas: Como el software lo gestiona el propio desarrollador, cuando el usuario se conectanos está usando siempre la última versión lanzada. - Consumo de recursos bajo: Toda (o gran parte) de la aplicación no se encuentra en el computador del usuario, muchas de las tareas realizas por el software no consumen recursos nuestros porque se realizan desde el servidor. - Multiplataforma: Se pueden utilizar desde cualquier sistema de operación porque sólo es necesario tener un navegador. - Portables: Es independiente del computador donde se utilice (un PC, un portátil...) porque se accede a través de una página web (sólo es necesario disponer de acceso a Internet). La reciente tendencia al acceso a las aplicaciones web a través de teléfonos móviles requiere sin embargo un diseño específico de los archivos CSS para no dificultar el acceso de estos usuarios. - La disponibilidad suele ser alta porque el servicio se ofrece desde múltiples localizaciones para asegurar la continuidad del mismo. - Los virus no dañan los datos porque éstos están guardados en el servidor de la aplicación. - Colaboración: Como el acceso al servicio se realiza desde una única ubicación es sencillo el acceso y el intercambio de datos por parte de varios usuarios.. - Los navegadores ofrecen cada vez más y mejores funcionalidades para crear aplicaciones web con interfaces del tipo rich (RIAs). Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 3

4 INCONVENIENTES - Generalmente ofrecen menos funcionalidades a las aplicaciones de escritorio. Porque las funcionalidades a realizar desde un navegador son más limitadas a las realizadas desde el sistema de operación. Pero cada vez los navegadores están más preparados para mejorar en este aspecto. La aparición de HTML 5 representa un hito en este sentido. Es posible añadir funcionalidades a estas aplicaciones gracias al uso de Aplicaciones de Internet tipo rich. - La disponibilidad depende de un tercero, el proveedor de la conexión a internet o el proveedor del enlace entre el servidor de la aplicación y el cliente. La disponibilidad del servicio está supeditada al proveedor. 1 L2 DESARROLLO DE APLICACIONES EN MÚLTIPLES CAPAS A continuación, se muestra un ejemplo de una aplicación J2EE, mostrando una pequeña aplicación Enterprise multicapa consistiendo en una página HTML, un servlet y un Bean de sesión. La pequeña aplicación cliente de ejemplo acepta entrada de usuario a través de un formulario HTML invocando un servlet. El servlet usa el API JNDI (Java Naming and Directory Interface ) para buscar un Bean de sesión realizando los cálculos por él. Este ejemplo es una aplicación pequeña porque el servlet no ejecuta ninguna lógica de negocio. El sencillo cálculo lo realiza un Bean de sesión ejecutándose en el servidor de aplicaciones J2EE. Por eso el cliente es pequeño, porque no maneja el proceso; lo hace el Bean de sesión. Las aplicaciones multi-capa pueden consistir en 3 ó 4 capas. Como se ve en la figura siguiente, el ejemplo multicapa tiene cuatro capas. La arquitectura de tres capas extiende al cliente estándar de dos capas y el modelo del servidor situando un servidor de aplicaciones multi-capa entre la aplicación cliente no-basada-en-web y la base de datos final. La arquitectura de cuatro capas extiende el modelo de tres capas reemplazando la aplicación cliente con un navegador Web y una página HTML potenciada con las tecnologías servlet/javaserver Pages. El objetivo principal del desarrollo multi-capas es lograr independencia total de las capas, mínimo acoplamiento entre ellas permitiendo modificar en la totalidad una capa sin afectar el resto. Por ejemplo en la arquitectura Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 4

5 mostrada anteriormente se podría cambiar de manejador de Base de Datos de mysql a PostgreSQL sin afectar en el resto de las capas. L3 MODELO MVC Spring está basado en un patrón clásico del diseño web conocido como arquitectura MVC, formado por tres niveles: El Modelo representa la información funcional de la aplicación, la lógica de negocio. La Vista transforma el modelo en una página web permitiendo al usuario interactuar con ella. El Controlador se encarga de procesar las interacciones del usuario y realizar los cambios apropiados en el modelo o en la vista. La siguiente figura ilustra el funcionamiento del patrón MVC. La arquitectura MVC separa la lógica de negocio (el modelo) y la presentación (la vista) facilitando el mantenimiento de las aplicaciones. Si por ejemplo una misma aplicación debe ejecutarse tanto en un navegador estándar como un un navegador de un dispositivo móvil, solamente es necesario crear una vista nueva para cada dispositivo; manteniendo el controlador y el modelo original. El controlador se encarga de aislar al modelo y a la vista de los detalles del protocolo utilizado para las peticiones (HTTP, consola de comandos, , etc.). El modelo se encarga de la abstracción de la lógica relacionada con los datos, Y la vista y las acciones son independientes de, por ejemplo, el tipo de administrador de bases de datos utilizado por la aplicación. L4 FRAMEWOKS DE DESARROLLO Un framework simplifica el desarrollo de una aplicación mediante la automatización de los patrones más comúnmente empleados para el desarrollo de software en un Lenguaje de Programación. Spring es un framework para Java facilitando el patrón de desarrollo MVC (Modelo Vista Controlador). Un framework proporciona: Estructuración del código fuente, forzando al desarrollador a crear código más legible y más fácil demantener. Facilita la programación de aplicaciones, encapsulando operaciones complejas en instrucciones sencillas. Spring es framework diseñado para optimizar el desarrollo de las aplicaciones web. En primer lugar, separa la lógica de negocio, la lógica de servidor y la capa de presentación de la aplicación web. Proporciona varias herramientas y Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 5

6 clases encaminadas a reducir el tiempo de desarrollo de una aplicación web compleja. Además, automatiza las tareas más comunes, permitiendo al desarrollador dedicarse por completo a los aspectos específicos de cada aplicación (lógica del negocio). Lo más importante al utilizar un framework es que no se reinventa la rueda cada vez que se desarrolla una nueva aplicación web. Spring está desarrollado completamente con Java, ha sido experimentado en varios proyectos reales y se utiliza en sitios web de comercio electrónico. Spring es compatible con la mayoría de los manejadores de bases de datos (DBMS), por soportar una abstracción JDBC: como MySQL, PostgreSQL, Oracle y Microsoft SQL Server. Se puede ejecutar en todas las plataformas donde se ejecuta Java. L5 QUÉ ES SPRING? Spring es un framework de aplicaciones Java/J2EE desarrollado usando licencia de OpenSource. Se basa en una configuración empleando javabeans bastante simple. Es potente en cuanto a la gestión del ciclo de vida de los componentes y fácilmente ampliable. Es interesante el uso de programación orientada a aspectos (IoC). Tiene plantillas permitiendo un más fácil uso de Hibernate, ibatis, JDBC..., se integra "de fábrica" con Quartz, Velocity, Freemarker, Struts, Webwork2 y tiene un plugin para eclipse. Ofrece un ligero contenedor de bean para los objetos de la capa de negocio, DAOs y repositorio de Datasources JDBC y sesiones Hibernate. Mediante un xml se define el contexto de la aplicación siendo una potente herramienta para manejar objetos Singleton o factorias que necesitan su propia configuración. El objetivo de Spring es no ser intrusivo, aquellas aplicaciones configuradas para usar beans mediante Spring no necesitan depender de interfaces o clases de Spring, pero obtienen su configuración a través de las propiedades de sus beans. Este concepto puede ser aplicado a cualquier entorno, desde una aplicación J2EE a un applet. Como ejemplo se puede pensar en conexiones a base de datos o de persistencia de datos, como Hibernate, la gestión de transacciones genérica de Spring para DAOs es muy interesante. La meta a conseguir es separar los accesos a datos y los aspectos relacionados con las transacciones, para permitir objetos de la capa de negocio reutilizables no dependientes de ninguna estrategia de acceso a datos o transacciones. Spring ofrece una manera simple de implementar DAOs basados en Hibernate sin necesidad de manejar instancias de sesion de Hibernate o participar en transacciones. No necesita bloques try-catch, el cual innecesario para el chequeo de transacciones. Se podría conseguir un método de acceso simple a Hibernate con una sola línea. QUÉ PROPORCIONA? Spring proporciona: Una potente gestión de configuración basada en JavaBeans, aplicando los principios de Inversión de Control (IoC). Esto hace la configuración de aplicaciones, rápida y sencilla. Ya no es necesario tener singletons ni archivos de configuración, una aproximación consistente y elegante. Estas definiciones de beans se realizan en el contexto de aplicación. Una capa genérica de abstracción para la gestión de transacciones, permitiendo gestores de transacción añadibles (pluggables), y haciendo sencilla la demarcación de transacciones sin tratarlas a bajo nivel. Se incluyen estrategias genéricas para JTA y un único JDBC DataSource. En contraste con el JTA simple o EJB CMT, el soporte de transacciones de Spring no está atado a entornos J2EE. Una capa de abstracción JDBC ofreciendo una significativa jerarquía de excepciones (evitando la necesidad de obtener de SQLException los códigos asignados por cada manejador de base de datos), simplificando el manejo de errores, y reduciendo considerablemente la cantidad de código necesario. Integración con Hibernate, JDO e ibatis SQL Maps en términos de soporte a implementaciones DAO y estrategias con transacciones. Especial soporte a Hibernate añadiendo convenientes características de IoC, y solucionando muchos de los comunes problemas de integración de Hibernate. Todo ello cumpliendo con las transacciones genéricas de Spring y la jerarquía de excepciones DAO. Funcionalidad AOP, totalmente integrada en la gestión de configuración de Spring. Se puede aplicar AOP a cualquier objeto gestionado por Spring, añadiendo aspectos como gestión de transacciones declarativa. Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 6

7 Con Spring se puede tener gestión de transacciones declarativa sin EJB, incluso sin JTA, si se utiliza una única base de datos en un contenedor Web sin soporte JTA. Un framework MVC (Model-View-Controller), construido sobre el núcleo de Spring. Este framework es altamente configurable vía interfaces y permite el uso de múltiples tecnologías para la capa vista como pueden ser JSP, Velocity, Tiles, itext o POI. De cualquier manera una capa modelo realizada con Spring puede ser fácilmente utilizada con una capa web basada en cualquier otro framework MVC, como Struts, WebWork o Tapestry. L6 REQUISITOS SPRING Para poder codificar en Spring se necesitan varias librerías. Para facilitar la ejecución se recomienda tener instalado un ide de desarrollo java como eclipse o netbeans para poder navegar por el código con soltura. Para programar con Spring se requieren las siguientes librerías: Spring en existe un archivo Springframework-whith-dependences.zip conteniendo todas las clases necesarias para ejecutar todas las herramientas de spring. Java SDK 1.5 Ant 1.7 Apache Tomcat Eclipse 3.3 (Recomendado, pero no necesario) Eclipse 3.3 Europa (http://www.eclipse.org/europa) en conjunto con el Proyecto Web Tools Platform (WTP) Project (http://www.eclipse.org/webtools) y el proyecto Spring IDE Project (http://www.springide.org) proven un excelente ambiente para el desarrollo web. Se puede utilizar una variación del software aquí mencionado. Por ejemplo, se puede utilizar NetBeans o IntelliJ en lugar de Eclipse o Jetty en lugar de Tomcat. L7 FRAMEWORK SPRING El Spring Framework (también conocido simplemente como Spring) es un framework de código abierto para desarrollo de aplicaciones en la plataforma Java. La primera versión fue escrita por Rod Jonhson. El framework fue lanzado inicialmente bajo Apache 2.0 License en junio de El primer gran lanzamiento hito fue la versión 1.0, apareciendo en marzo de 2004 y fue seguida por otros hitos en septiembre de 2004 y marzo de Aunque Spring Framework no obliga a utilizar un modelo de programación en particular, se ha popularizado en la comunidad de programadores en Java al ser considerado como una alternativa y sustituto del modelo de Enterprise JavaBean. Por su diseño, el framework ofrece mucha libertad a los desarrolladores en Java y soluciones muy bien documentadas y fáciles de usar para las prácticas comunes en la industria. Las características fundamentales de este framework pueden emplearse en cualquier aplicación desarrollada en Java. Existen muchas extensiones y mejoras para construir aplicaciones basadas en web por encima de la plataforma empresarial de Java (Java Enterprise Platform). A partir de 2009 las actualizaciones del producto (en su forma binaria) estarán disponibles únicamente para la última versión publicada del Framework. Para acceder a las actualizaciones en forma binaria para versiones anteriores se deberá pagar una subscripción. Sin embargo, estas actualizaciones estarán disponibles libremente (y gratuitamente) en forma de código fuente en los repositorios públicos del proyecto. HISTORIA Los primeros componentes evolucionando hacia Spring Framework fueron escritos por Rod Johnson en el año 2000, mientras trabajaba como consultor independiente para sus clientes en la industria financiera en Londres. Rod Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 7

8 Johnson amplió su código para sintetizar su visión acerca de cómo las aplicaciones trabajando con varias partes de la plataforma J2EE podían llegar a ser más simples y más consistentes a aquellas utilizadas por los desarrolladores y las compañías. En el año 2001 los modelos dominantes de programación para aplicaciones basadas en web eran ofrecidas por el API Java Servlet y los Enterprise JavaBeans, ambas especificaciones creadas por Sun Microsystems en colaboración con otros distribuidores y partes interesadas disfrutando de gran popularidad en la comunidad Java. Las aplicaciones no basadas en web, como las aplicaciones basadas en cliente o aplicaciones en batch, podían ser escritas con base en herramientas y proyectos de código abierto o comerciales proveyendo las características requeridas para aquellos desarrollos. Rod Johnson es reconocido por crear un framework basado en las mejores prácticas aceptadas, y ello las hizo disponibles para todo tipo de aplicaciones, no sólo aquellas basadas en web. Se formó un pequeño equipo de desarrolladores para trabajar en extender el framework y un proyecto fue creado en Sourceforge en febrero de Después de trabajar en su desarrollo durante más de un año lanzaron una primera versión (1.0) en marzo de Después de este lanzamiento Spring ganó mucha popularidad en la comunidad Java, debido en parte al uso de Javadoc y de una documentación de referencia por encima del promedio de un proyecto de código abierto. Sin embargo, Spring Framework también fue duramente criticado en 2004 y sigue siendo el tema de acalorados debates. Al tiempo en que se daba su primer gran lanzamiento muchos desarrolladores y líderes de opinión vieron a Spring como un gran paso con respecto al modelo de programación tradicional; esto era especialmente cierto con respecto a Enterprise JavaBeans. Una de las metas de diseño de Spring Framework es su facilidad de integración con los estándares J2EE y herramientas comerciales existentes. Esto quita en parte la necesidad de definir sus características en un documento de especificación elaborado por un comité oficial y que podría ser criticado. Spring Framework hizo que aquellas técnicas que resultaban desconocidas para la mayoría de programadores se volvieran populares en un periodo muy corto de tiempo. El ejemplo más notable es la inversión de control. En el año 2004, Spring disfrutó de unas altísimas tasas de adopción y al ofrecer su propio framework de programación orientada a aspectos (aspect-oriented programming, AOP)consiguió hacer más popular su paradigma de programación en la comunidad Java. En 2005 Spring superó las tasas de adopción del año anterior como resultado de nuevos lanzamientos y más características fueron añadidas. El foro de la comunidad formada alrededor de Spring Framework (The Spring Forum) arrancando a finales de 2004 también ayudó a incrementar la popularidad del framework y desde entonces ha crecido hasta llegar a ser la más importante fuente de información y ayuda para sus usuarios. L8 ARQUITECTURA SPRING El objetivo central de Spring es permitir la reutilización de objetos de negocio y de acceso a datos, no atados a servicios J2EE específicos. Estos objetos pueden ser reutilizados tanto en entornos J2EE (Web o EJB), aplicaciones standalone, entornos de pruebas, etc. sin ningún problema. La arquitectura en capas de Spring ofrece mucha de flexibilidad. Toda la funcionalidad está construida sobre los niveles inferiores. Por ejemplo se puede utilizar la gestión de configuración basada en JavaBeans sin utilizar el framework MVC o el soporte AOP. Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 8

9 L9 PROGRAMACIÓN ORIENTADA POR ASPECTOS AOP QUÉ ES AOP? AOP son las siglas en ingles de Programación orientada al aspecto (Aspect Oriented Programming). La definición más simple de AOP es una manera de eliminar codigo duplicado. Java es un lenguaje orientado a objetos y permite crear aplicaciones usando una determinada jerarquía de objetos, sin embargo esto no permite una manera simple de eliminar código repetido en aquellos objetos que no pertenecen a la jerarquía. AOP permite controlar tareas. En AOP se utilizarán conceptos como interceptor, inspeccionando el código a ejecutar, permitiendo por lo tanto realizar ciertas acciones como: escritura de trazas cuando el método es llamado, modificar los objetos devueltos o envío de notificaciones. INTRODUCCIÓN Cuando apareció la programación Orientada a Objetos (OO) en el desarrollo de software, tuvo un efecto dramático en cómo se desarrollaba éste. Los desarrolladores podían visualizar sistemas como grupos de entidades y la interacción entre esas entidades, permitiendo realizar sistemas más grandes y más complicados y desarrollarlos en mucho menos tiempo. El único problema con la programación OO es que es esencialmente estática, y un cambio en los requerimientos puede tener un profundo impacto en el tiempo de desarrollo. Consideremos un ejemplo: se desarrolla una sencilla aplicación web utilizando servlets como punto de entrada, donde un servlet acepta los valores de un formulario HTML, los une a un objeto, lo pasa a la aplicación para procesarlo y luego devuelve una respuesta al usuario. La primera versión del servlet podría ser muy simple, con la cantidad de código mínima necesaria para cumplir el papel a desempeñar. Sin embargo, el código crece en tres o cuatro veces su tamaño original debido a los requerimientos secundarios como el manejo de excepciones, la seguridad, y el logging implementado. Se utiliza el término requerimientos secundarios porque un servlet no debería Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 9

10 saber nada sobre el loggin o los mecanismos de seguridad a utilizar; su función principal es aceptar una entrada y procesarla. AOP ayuda a modificar dinámicamente el modelo estático para incluir el código requerido para cumplir los requerimientos secundarios sin tener que modificar el modelo estático original (de echo, ni siquiera se requiere el código original). Mejor aún, normalmente se puede tener este código adicional en una única localización en vez de tenerlo repartido por el modelo existente, como se haría si se se estuviera usando sólo OO. TERMINOLOGÍA Aquí se presenta la termonología estándar para ayudar a entender los conceptos. Cross-cutting concerns (problema cruzado): Incluso aunque la mayoría de las clases de un modelo OO realizarán una función sencilla y específica, normalmente comparten requerimientos secundarios comunes con otras clases. Por ejemplo, se puede agregar logging a las clases dentro de la capa de acceso a los datos y también a las clases de la capa de presentación siempre que un thread entre o salga de un método. Incluso aunque la funcionalidad primaria de cada clase sea muy diferente, el código necesario para realizar la segunda funcionalidad es casi siempre idéntico. Advice (Consejo): Este es el código adicional a aplicar a nuestro modelo existente. En el ejemplo, es el código de logging a aplicar siempre que el thread entre o salga de un método. Point-cut (punto de corte): Este es el término dado al punto de ejecución en flujo de la aplicación donde se necesita aplicar el problema cruzado. En el ejemplo, se tiene un punto de corte cuando el thread entra a un método, y otro punto de corte cuando el thread sale de ese método. Aspect (Aspecto): La combinación del punto de corte y el consejo es conocida como un aspecto. En el siguiente ejemplo, se añade un aspecto de login a la aplicación definiendo un punto de corte y dándole el consejo correcto. Existen muchas otras facetas AOP, como las introducciones (donde se pueden añadir interfaces/métodos/campos a clases existentes), conteniendo un potencial tremendo para los desarrolladores. CONCEPTOS Aspect (Aspecto) es una funcionalidad transversal (cross-cutting) a implementar de forma modular y separada del resto del sistema. El ejemplo más común y simple de un aspecto es el logging (registro de sucesos) dentro del sistema, porque necesariamente afecta a todas las partes del sistema generando un suceso. Join point (Punto de Cruce o de Unión) es un punto de ejecución dentro del sistema donde un aspecto puede ser conectado, como una llamada a un método, el lanzamiento de una excepción o la modificación de un campo. El código del aspecto será insertado en el flujo de ejecución de la aplicación para añadir su funcionalidad. Advice (Consejo) es la implementación del aspecto, es decir, contiene el código que implementa la nueva funcionalidad. Se insertan en la aplicación en los Puntos de Cruce. Pointcut (Puntos de Corte) define los Consejos a aplicar en cada Punto de Cruce. Se especifica mediante Expresiones Regulares o mediante patrones de nombres (de clases, métodos o campos), e incluso dinámicamente en tiempo de ejecución según el valor de ciertos parámetros. Introduction (Introducción) permite añadir métodos o atributos a clases ya existentes. Un ejemplo es la creación de un Consejo de Auditoría manteniendo la fecha de la última modificación de un objeto, mediante una variable y un Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 10

11 método setultimamodificacion(fecha), introducidos en todas las clases (o sólo en algunas) para proporcionarles esta nueva funcionalidad. Target (Destinatario) es la clase aconsejada, la clase objeto de un consejo. Sin AOP, esta clase debería contener su lógica, además de la lógica del aspecto. Proxy (Resultante) es el objeto creado después de aplicar el Consejo al Objeto Destinatario. El resto de la aplicación únicamente soportará al Objeto Destinatario (pre-aop) y no al Objeto Resultante (post-aop). Weaving (Tejido) es el proceso de aplicar Aspectos a los Objetos Destinatarios para crear los nuevos Objetos Resultantes en los especificados Puntos de Cruce. Este proceso puede ocurrir a lo largo del ciclo de vida del Objeto Destinatario. L10 PATRÓN IOC INVERSIÓN DEL CONTROL Spring se basa en IoC. IoC es lo conocido como El Principio de Inversión de Dependencia, Inversion of Control" (IoC) o patrón Hollywood ("No nos llames, nosotros le llamaremos") consiste en: Un Contenedor manejando objetos por usted. El contenedor generalmente controla la creación de estos objetos. Por decirlo de alguna manera, el contenedor hace los new de las clases java para que no los realice usted. El contenedor resuelve dependencias entre los objetos contenidos. Estos puntos son suficientes y necesarios para poder hablar de una definición básica de IoC. Spring proporciona un contenedor manejando todo lo realizado con los objetos del IoC. Debido a la naturaleza del IoC, el contenedor más o menos ha definido el ciclo de vida de los objetos. Y, finalmente, el contenedor resuelve las dependencias entre los servicios controlados por él. La Inversión de Control es un patrón de diseño pensado para permitir un menor acoplamiento entre componentes de una aplicación y fomentar así el reuso de los mismos. UN PROBLEMA, UNA SOLUCIÓN Como todo patrón, comienza planteando un problema y el viene a resolver. Muchas veces, un componente tiene dependencias de servicios o componentes cuyos tipos concretos son especificados en tiempo de diseño. En el ejemplo de la imagen, clase A depende de ServiceA y de ServiceB. Los problemas planteados son: Al reemplazar o actualizar las dependencias, se necesita cambiar el código fuente de la clase A. Las implementaciones concretas de las dependencias debem estar disponibles en tiempo de compilación. Las clases son difíciles de testear aisladamente porque tienen directas definiciones a sus dependencias. Esto significa que las dependencias no pueden ser reemplazadas por componentes stubs o mocks. Las clases tienen código repetido para crear, localizar y gestionar sus dependencias. Aquí la solución pasa por delegar la función de seleccionar una implementación concreta de las dependencias a un componente externo. Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 11

12 El control de cómo un objeto A obtiene la referencia de un objeto B es invertido. El objeto A no es responsable de obtener una referencia al objeto B sino que es el Componente Externo el responsable de esto. Esta es la base del patrón IoC. USOS El patrón IoC se puede utilizar cuando: Se desea desacoplar las clases de sus dependencias de manera de que las mismas puedan ser reemplazadas o actualizadas con muy pocos o casi ningún cambio en el código fuete de sus clases. Se desea escribir clases que dependan de clases cuyas implementaciones no son conocidas en tiempo de compilación. Se desea testar las clases aisladamente sin sus dependencias. Se desea desacoplar sus clases de ser responsables de localizar y gestionar el tiempo de vida de sus dependencias. TÉCNICAS DE IMPLEMENTACIÓN Según diversos enfoques, este patrón puede implementarse de diversas maneras. Entre las más conocidas se tiene: Inyección de dependencias Service Locutor SERVICE LOCATOR Un Service Locator es un componente conteniendo referencias a los servicios y encapsula la lógica localizaando dichos servicios. Así, en las clases, se utilizamo el Service Locator para obtener instancias de los servicios realmente necesarios. El Service Locator no instancia los servicios. Provee una manera de registrar servicios y mantener una referencia a dichos servicios. Una vez registrado el servicio, el Service Locator puede localizarlo. El Service Locator debe proveer una forma de localizar un servicio sin especificar el tipo. Por ejemplo, puede usar una clave string o el tipo de interface. Esto permite un fácil reemplazo de la dependencia sin modificar el código fuente de la clase. Es asunto de la implementación de esta forma de IoC, el determinar la forma en que se localizará el servicio requerido. INYECCIÓN DE DEPENDENCIAS Una dependencia entre un componente y otro, puede establecerse estáticamente o en tiempo de compilación, o bien, dinámicamente o en tiempo de ejecución. Es en éste ultimo escenario es donde cabe el concepto de inyección, y para que esto fuera posible, se deben referenciar interfaces y no implementaciones directas. Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 12

13 En general, las dependencias son expresadas en términos de interfaces en lugar de clases concretas. Esto permite un rápido reemplazo de las implementaciones dependientes sin modificar el código fuente de la clase. La Inyección de dependencias propone, no instanciar las dependencias explícitamente en su clase, sino que declarativamente expresarlas en la definición de la clase. La esencia de la inyección de las dependencias es contar con un componente capaz de obtener instancias validas de las dependencias del objeto y pasárselas durante la creación o inicialización del objeto. 1. A necesita una referencia a B, pero no necesita saber como debe crear la instancia de B, solo quiere una referencia a ella. 2. B puede ser una interface, clase abstracta o clase concreta. 3. Antes de que una instancia de A sea usada, necesitara una referencia a una instancia de B. Aquí no hay un alto acoplamiento entre A y B, ambas pueden cambiar internamente sin afectar a la otra. Los detalles de cómo se crea y gestiona un objeto B, no es decidido en la implementación de A. Es un framework IoC quien usa un método como setb() de A para inyectar luego a un objeto B. Existen tres principales maneras de implementar la inyección de dependencias: INYECCIÓN BASADA EN CONSTRUCTOR Las dependencias se inyectan utilizando un constructor con parámetros del objeto dependiente. Éste constructor recibe las dependencias como parámetros y las establece en los atributos del objeto. Considerando un diseño de dos capas donde se tiene una capa de BusinessFacade y otra de BusinessLogic, la capa BusinessFacade depende de la BusinessLogic para operar correctamente. Todas las clases de lógica de negocio implementan la interface IBusinessLogic. En la inyección basada en un constructor, se creará una instancia de BusinessFacade usando un constructor parametizado al cual se le pasará una referencia de un IBusinessLogic para poder inyectar la dependencia. interface IBusinessLogic { //Some code class ProductBL implements IBusinessLogic { //Some code class CustomerBL implements IBusinessLogic { //Some code public class BusinessFacade Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 13

14 { private IBusinessLogic businesslogic; public BusinessFacade(IBusinessLogic businesslogic) { this.businesslogic = businesslogic; El objeto responsable de las dependencias realizará la inyección de la siguiente forma: IBusinessLogic productbl = new ProductBL(); BusinessFacade businessfacade = new BusinessFacade(productBL); La principal desventaja de la IoC basada en constructor es que una vez que la clase BusinessFacade es instanciada no podemos cambiar las dependencias inyectadas. INYECCIÓN BASADA EN MÉTODOS SETTERS En este tipo de IoC, se utiliza un método setters para inyectar una dependencia en el objeto que la requiere. Se invoca así al setter de cada dependencia y se le pasa como parámetro una referencia a la misma. public class BusinessFacade { private IBusinessLogic businesslogic; public setbusinesslogic(ibusinesslogic businesslogic) { this.businesslogic = businesslogic; El objeto responsable de las dependencias realizará la inyección de la siguiente forma: IBusinessLogic productbl = new ProductBL(); BusinessFacade businessfacade = new BusinessFacade(); businessfacade.setbusinesslogic(productbl); La ventaja aquí es que uno puede cambiar la dependencia entre BusinessFacade y la implementación de IBusinessLogic luego de haber instanciado la clase BusinessFacade. La desventaja es que un objeto con setters no puede ser inmutable y suele ser complicado determinar cuales son las dependencias que se necesitan y en que momento se las necesita. Se recomienda así utilizar IoC basada en constructor a menos que necesite cambiar la dependencia y sepa claramente los momentos en los cuales realizar estos cambios. Otra desventaja es que al utilizar setters (necesarios para la inyección), es la exposición de las propiedades de un objeto al mundo exterior cuando en realidad no era un requerimiento de negocio hacerlo. INYECCIÓN BASADA EN INTERFACES Aquí se utiliza una interfaz común que otras clases implementan para poderles luego inyectar dependencias. En el siguiente ejemplo, a toda clase que implemente IBusinessFacade se le podrá inyectar cualquier objeto que implemente IBusinessLogic mediante el método injectblobject. interface IBusinessLogic { //Some code interface IBusinessFacade { public void injectblobject (IBusinessLogic businesslogic); class ProductBL implements IBusinessLogic { //Some code Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 14

15 class CustomerBL implements IBusinessLogic { //Some code class BusinessFacade implements IBusinessFacade { private IBusinessLogic businesslogic; public void injectblobject (IBusinessLogic businesslogic) { this.businesslogic = businesslogic; El objeto responsable de las dependencias realizará la inyección de la siguiente forma: IBusinessLogic businesslogic = new ProductBL(); BusinessFacade businessfacade = new BusinessFacade(); businessfacade.injectblobject(businesslogic); Las tres formas de inyección presentadas, pasan una referencia a una implementación de IBusinessLogic más que un tipo particular de BusinessLogic. Esto presenta muchas ventajas. APLICABILIDAD CUANDO UTILIZAR IOC La inyección de dependencias no debería usarse siempre que una clase dependa de otra, sino más bien es efectiva en situaciones específicas como las siguientes: Inyectar datos de configuración en un componente. Inyectar la misma dependencia en varios componentes. Inyectar diferentes implementaciones de la misma dependencia. Inyectar la misma implementación en varias configuraciones Se necesitan alguno de los servicios provistos por un contenedor. La IoC no es necesaria si uno va a utilizar siempre la misma implementación de una dependencia o la misma configuración, o al menos, no reportará grandes beneficios en estos casos. Contenedores En pos de implementar el patrón IoC en alguna de sus variantes, existen los denominados contenedores de inyección de dependencias (CID), que son los componentes encargados de instanciar las dependencias y realizar las inyecciones necesarias entre todos los objetos y además gestionar sus respectivos ciclos de vida. En cuanto a la instanciación e inyección, un CID se configura para especificarle que dependencias debe instanciar y donde deberá luego inyectarlas. Para la instanciación además, se debe definir el modo de instanciación, es decir, si se creará una nueva siempre que se lo requiera, o se reusará la instancia creada (singleton). En cuanto a la gestión de los ciclos de vida de los objetos creados, implica que son capaces de administrar las diferentes etapas de la vida del componente (instanciación, configuración, eliminación). El hecho de que el contenedor a veces mantenga una referencia a los componentes creados luego de la instanciación es lo que lo hace un contenedor. No todos los objetos deben ser gestionados. El contenedor mantiene una referencia a aquellos objetos que son reusados para futuras inyecciones, como singletones. Cuando se configure el contenedor para que siempre cree nuevas instancias, entonces éste se suele olvidar de dichos objetos creados, dejando la tarea al GC para recolectarlos luego de que no sean más usados. Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 15

16 L11 DESARROLLO DE UNA APLICACIÓN Y CONFIGURACIÓN DEL AMBIENTE: INDEX.JSP, TOMCAT, WEB.XML PASO 1. CREAR LA ESTRUCTURA DEL DIRECTORIO DE PROYECTOS Es recomendable utilizar un directorio donde se almacenen todos los fuentes y los otros archives relacionados con el proyecto. Por ejemplo, en caso de existir una aplicación con el nombre 'springapp', la ruta debería tener la forma de '$HOME/Projects/springapp'. Dentro de este directorio, se crea un sub directorio llamado 'src' para almacenar todos los archivos de código fuente Java. Luego, se crea otro subdirectorio llamado 'war'. Este directorio contiene toda la información a colocar en el archivo.war utilizada para empaquetar e implementar la aplicación. A continuación se muestra un ejemplo de la estructura desarrollada en el IDE de Eclipse. PASO 2 CREAR EL ARCHIVO 'INDEX.JSP' Para desarrollar una aplicación WEB, lo más conveniente es tener una página principal de la herramienta index.jsp en el directorio war. 'springapp/war/index.jsp': <html> <head><title>example :: Spring Application</title></head> <body> <h1>example - Spring Application</h1> <p>this is my test.</p> </body> </html> Para completar una aplicación web, se crea un directorio 'WEB-INF' dentro del directorio 'war' directory y se coloca un archivo 'web.xml' en este directorio: Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 16

17 'springapp/war/web-inf/web.xml': <?xml version="1.0" encoding="utf-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/j2ee > <welcome-file-list> <welcome-file> index.jsp </welcome-file> </welcome-file-list> </web-app> PASO 3 IMPLEMENTAR EN TOMCAT A continuación se muestra un script (ant build) a utilizar en este manual. El script (ant build) contiene las instrucciones para compilar, construir e implementar la aplicación. 'springapp/build.xml': <?xml version="1.0"?> <project name="springapp" basedir="." default="usage"> <property file="build.properties"/> <property name="src.dir" value="src"/> <property name="web.dir" value="war"/> <property name="build.dir" value="${web.dir/web-inf/classes"/> <property name="name" value="springapp"/> <path id="master-classpath"> <fileset dir="${web.dir/web-inf/lib"> <include name="*.jar"/> </fileset> <!-- We need the servlet API classes: --> <!-- * for Tomcat 5/6 use servlet-api.jar --> <!-- * for other app servers - check the docs --> <fileset dir="${appserver.lib"> <include name="servlet*.jar"/> </fileset> <pathelement path="${build.dir"/> </path> <target name="usage"> <echo message=""/> <echo message="${name build file"/> <echo message=" "/> <echo message=""/> <echo message="available targets are:"/> <echo message=""/> <echo message="build --> Build the application"/> <echo message="deploy --> Deploy application as directory"/> <echo message="deploywar --> Deploy application as a WAR file"/> <echo message="install --> Install application in Tomcat"/> <echo message="reload --> Reload application in Tomcat"/> <echo message="start --> Start Tomcat application"/> <echo message="stop --> Stop Tomcat application"/> <echo message="list --> List Tomcat applications"/> <echo message=""/> <target name="build" description="compile main source tree java files"> Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 17

18 <mkdir dir="${build.dir"/> <javac destdir="${build.dir" source="1.5" target="1.5" debug="true" deprecation="false" optimize="false" failonerror="true"> <src path="${src.dir"/> <classpath refid="master-classpath"/> </javac> <target name="deploy" depends="build" description="deploy application"> <copy todir="${deploy.path/${name" preservelastmodified="true"> <fileset dir="${web.dir"> <include name="**/*.*"/> </fileset> </copy> <target name="deploywar" depends="build" description="deploy application as a WAR file"> <war destfile="${name.war" webxml="${web.dir/web-inf/web.xml"> <fileset dir="${web.dir"> <include name="**/*.*"/> </fileset> </war> <copy todir="${deploy.path" preservelastmodified="true"> <fileset dir="."> <include name="*.war"/> </fileset> </copy> <!-- ============================================================== --> <!-- Tomcat tasks - remove these if you don't have Tomcat installed --> <!-- ============================================================== --> <path id="catalina-ant-classpath"> <!-- We need the Catalina jars for Tomcat --> <!-- * for other app servers - check the docs --> <fileset dir="${appserver.lib"> <include name="catalina-ant.jar"/> </fileset> </path> <taskdef name="install" classname="org.apache.catalina.ant.installtask"> <classpath refid="catalina-ant-classpath"/> </taskdef> <taskdef name="reload" classname="org.apache.catalina.ant.reloadtask"> <classpath refid="catalina-ant-classpath"/> </taskdef> <taskdef name="list" classname="org.apache.catalina.ant.listtask"> <classpath refid="catalina-ant-classpath"/> </taskdef> <taskdef name="start" classname="org.apache.catalina.ant.starttask"> <classpath refid="catalina-ant-classpath"/> </taskdef> <taskdef name="stop" classname="org.apache.catalina.ant.stoptask"> <classpath refid="catalina-ant-classpath"/> </taskdef> <target name="install" description="install application in Tomcat"> <install url="${tomcat.manager.url" username="${tomcat.manager.username" password="${tomcat.manager.password" path="/${name" war="${name"/> <target name="reload" description="reload application in Tomcat"> Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 18

19 <reload url="${tomcat.manager.url" username="${tomcat.manager.username" password="${tomcat.manager.password" path="/${name"/> <target name="start" description="start Tomcat application"> <start url="${tomcat.manager.url" username="${tomcat.manager.username" password="${tomcat.manager.password" path="/${name"/> <target name="stop" description="stop Tomcat application"> <stop url="${tomcat.manager.url" username="${tomcat.manager.username" password="${tomcat.manager.password" path="/${name"/> <target name="list" description="list Tomcat applications"> <list url="${tomcat.manager.url" username="${tomcat.manager.username" password="${tomcat.manager.password"/> <!-- End Tomcat tasks --> </project> Si se requiere utilizar un servidor de aplicaciones web diferentes, se pueden eliminar las tareas específicas de Tomcat al final del script. El IDE utilizado puede encontrar un número de errores reportados en el archivo build.xml ; estos pueden ser ignorados, el arhivo es correcto. También es necesario crear un archivo 'build.properties', el cual debe ser modificado dependiendo de la instalación del servidor. Este archivo se coloca en el mismo directorio del arhivo 'build.xml'. 'springapp/build.properties': # Ant properties for building the springapp appserver.home=${user.home/apache-tomcat # for Tomcat 5 use $appserver.home/server/lib # for Tomcat 6 use $appserver.home/lib appserver.lib=${appserver.home/lib deploy.path=${appserver.home/webapps tomcat.manager.url=http://localhost:8080/manager tomcat.manager.username=tomcat tomcat.manager.password=s3cret Para crear un usuario tomcat llamado 'tomcat' con contraseña 's3cret', en el archivo de usuarios tomcat 'appserver.home/conf/tomcat-users.xml' se debe agregar la siguiente entrada de usuario. <?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="manager"/> <user username="tomcat" password="s3cret" roles="manager"/> </tomcat-users> Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 19

20 Ahora se ejecuta Ant para asegurar todo se está ejecutando correctamente. El directorio actual debe estar en 'springapp'. Ejecutar 'ant'. $ ant Buildfile: build.xml usage: [echo] [echo] springapp build file [echo] [echo] [echo] Available targets are: [echo] [echo] build --> Build the application [echo] deploy --> Deploy application as directory [echo] deploywar --> Deploy application as a WAR file [echo] install --> Install application in Tomcat [echo] reload --> Reload application in Tomcat [echo] start --> Start Tomcat application [echo] stop --> Stop Tomcat application [echo] list --> List Tomcat applications [echo] BUILD SUCCESSFUL Total time: 2 seconds El último paso es construir e implementar la aplicación. $ ant deploy Buildfile: build.xml build: [mkdir] Created dir: /Users/trisberg/Projects/springapp/war/WEB-INF/classes deploy: [copy] Copying 2 files to /Users/trisberg/apache-tomcat /webapps/springapp BUILD SUCCESSFUL Total time: 4 seconds PASO 4 REVISAR LA APLICACIÓN TRABAJA Iniciar Tomcat ejecutando '${appserver.home/bin/startup.bat'. Para asegurarse se puede acceder a la aplicación se encuentra la tarea 'list'. $ ant list Buildfile: build.xml list: [list] OK - Listed applications for virtual host localhost [list] /springapp:running:0:springapp [list] /manager:running:0:manager [list] /:running:0:root [list] /docs:running:0:docs [list] /examples:running:0:examples [list] /host-manager:running:0:host-manager BUILD SUCCESSFUL Total time: 3 seconds Ahora, se puede abrir un navegador y desplegar la página de inicio: Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 20

21 DESCARGAR EL FRAMEWORK SPRING El framework puede ser descargado de MODIFICAR EL ARCHIVO 'WEB.XML' EN EL DIRECTORIO 'WEB-INF' En el directorio 'springapp/war/web-inf', modificar el archivo 'web.xml'. Se definirá un DispatcherServlet (conocido como 'Front Controller'). Este elemento controlará todos los requerimientos y los enrutará donde se necesite. Esta definición de servlet tiene una entrada attendant <servlet-mapping/> mapeando a los patrones URL patterns utilizados. En los ejemplos aquí mostradod los URL con una extensión '.htm' serán enrutados al servlet 'springapp' (DispatcherServlet). 'springapp/war/web-inf/web.xml': <?xml version="1.0" encoding="utf-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/j2ee > <servlet> <servlet-name>springapp</servlet-name> <servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 21

22 <servlet-mapping> <servlet-name>springapp</servlet-name> <url-pattern>*.htm</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file> index.jsp </welcome-file> </welcome-file-list> </web-app> En el siguiente paso, crear un archivo llamado 'springapp-servlet.xml en el directorio 'springapp/war/web- INF'. Este archivo contiene las definiciones de los bean utilizados por DispatcherServlet. En el objeto WebApplicationContext es donde se colocan todos los componentes web. El nombre de este archivo es determinado por el valor del elemento <servlet-name/> del archivo de configuración 'web.xml', con '-servlet' de sufijo (siendo 'springapp-servlet.xml'). Esta es la convención de nombres standard utilizada en el modelo MVC de Framework Spring. A continuación, se agrega un bean llamado '/hello.htm' y se especifica la clase springapp.web.hellocontroller. Esto define el controlador de la aplicación para servir los requerimientos realizados al URL '/hello.htm'. El framework MVC de Spring utiliza una clase de implementación de la interfaz llamada HandlerMapping para definir el mapeo entre el Url de requerimiento y el objeto manejando el requerimiento (el handler). Distinto a DispatcherServlet, el HelloController es el responsable por manejar el requerimiento para una página el particular del sitio web y es también conocido como un controlador de páginas 'Page Controller'. El HandlerMapping por defecto utilizado por el DispatcherServlet es BeanNameUrlHandlerMapping; esta clase utilizará el nombre del bean para mapear al URL en el requerimiento, de modo que el DispatcherServlet conoce cual controlador debe ser invocado para manear diferentes URLs. 'springapp/war/web-inf/springapp-servlet.xml': <?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://www.springframework.org/schema/beans <!-- the application context definition for the springapp DispatcherServlet --> <bean name="/hello.htm" class="springapp.web.hellocontroller"/> </beans> COPIAR LAS LIBRERÍAS EN 'WEB-INF/LIB' Crear un directorio 'lib' en el directoorio 'war/web-inf'. Luego, desde la distribución de Spring, copiar spring.jar (desde spring-framework-x.x/dist) y spring-webmvc.jar (desde spring-frameworkx.x/dist/modules) al nuevo directorio 'war/web-inf/lib'. También, copiar commonslogging.jar (desde spring-framework-x.x/lib/jakarta-commons) al directorio 'war/web-inf/lib'. Estos.jars serán implantados al servidor durante el proceso de build. CREAR EL CONTROLADOR Crear la clase controlador. El el ejemplo se denomina HelloController, y es definida en el paquete 'springapp.web'. Se crea el directorio de los paquetes, luego se crea el archivo 'HelloController.java' y se coloca en el directorio 'src/springapp/web'. 'springapp/src/springapp/web/hellocontroller.java': package springapp.web; Copyright 2011 Reservados todos los derechos, prohibida la reproducción, Instituto Gala de Venezuela, C. A. 22

JAVA EE 5. Arquitectura, conceptos y ejemplos.

JAVA EE 5. Arquitectura, conceptos y ejemplos. JAVA EE 5. Arquitectura, conceptos y ejemplos. INTRODUCCIÓN. MODELO DE LA APLICACIÓN JEE5. El modelo de aplicación Java EE define una arquitectura para implementar servicios como lo hacen las aplicaciones

Más detalles

Tema 5. Plataforma Java EE

Tema 5. Plataforma Java EE Tema 5. Plataforma Java EE SCS Sistemas Cliente/Servidor 4 o informática http://ccia.ei.uvigo.es/docencia/scs enero 2009 FJRP, FMBR 2008/09 ccia SCS 5.1 Introducción a Java EE Java EE (Java Enterprise

Más detalles

Curso de Spring Framework

Curso de Spring Framework Todos los Derechos Reservados Global Mentoring 2012 Experiencia y Conocimiento para tu Vida 1 Spring es un proyecto de código abierto (open source), originalmente creado por Rod Johnson y descrito en su

Más detalles

Capítulo III. Análisis y diseño.

Capítulo III. Análisis y diseño. Capítulo III. Análisis y diseño. 3.1 Análisis. El análisis es el intermediario entre los requisitos del sistema y el diseño, esta sección definiremos el análisis con una serie de modelos técnicos del sistema,

Más detalles

CREACIÓN DE WEBSERVICES

CREACIÓN DE WEBSERVICES CREACIÓN DE WEBSERVICES Versión 1.1 MARZO 2007 Página: 1 1 TABLA DE CONTENIDO 1 TABLA DE CONTENIDO... 2 2 INTRODUCCIÓN... 3 3 HERRAMIENTA DE DESARROLLO ANT... 3 4 CREACION SERVICIO WEB... 3 5 CREACIÓN

Más detalles

Experto Universitario Java Enterprise Spring

Experto Universitario Java Enterprise Spring Experto Universitario Java Enterprise Spring Sesión 1: Spring core Puntos a tratar Introducción. Spring vs. JavaEE estándar El contenedor de beans (Spring core) Trabajo con beans Definir beans Instanciar

Más detalles

Bienvenidos a la presentación: Introducción a conceptos básicos de programación.

Bienvenidos a la presentación: Introducción a conceptos básicos de programación. Bienvenidos a la presentación: Introducción a conceptos básicos de programación. 1 Los programas de computadora son una serie de instrucciones que le dicen a una computadora qué hacer exactamente. Los

Más detalles

Curso de Java EE Todos los Derechos Reservados Global Mentoring Experiencia y Conocimiento para tu Vida 1

Curso de Java EE Todos los Derechos Reservados Global Mentoring Experiencia y Conocimiento para tu Vida 1 1 Los Enterprise Java Beans (EJB) es código Java del lado del Servidor. Normalmente tienen la lógica de negocio de nuestra aplicación, y por lo tanto cubren el rol de la capa de servicio de nuestras aplicaciones

Más detalles

Tema 5. Plataforma Java EE

Tema 5. Plataforma Java EE Tema 5. Plataforma Java EE SCS Sistemas Cliente/Servidor 4 o informática http://ccia.ei.uvigo.es/docencia/scs septiembre 2011 FJRP, FMBR 2008-2011 ccia SCS 5.1 Introducción a Java EE Java EE (Java Enterprise

Más detalles

Facultad de Sistemas e Informática

Facultad de Sistemas e Informática Escuela Politécnica del Ejército Sede Latacunga Facultad de Sistemas e Informática Galarza Maira Tapia Cevallos Paulina DESARROLLO DE APLICACIONES DISTRIBUIDAS UTILIZANDO PATRONES DE DISEÑO MODELO/VISTA

Más detalles

Curso de Java EE Todos los Derechos Reservados Global Mentoring 2012 Experiencia y Conocimiento para tu Vida 1

Curso de Java EE Todos los Derechos Reservados Global Mentoring 2012 Experiencia y Conocimiento para tu Vida 1 Todos los Derechos Reservados Global Mentoring 2012 Experiencia y Conocimiento para tu Vida 1 Vivimos en un mundo globalizado, donde la eficiencia y productividad de las empresas es un factor crucial para

Más detalles

Introducción a Javato

Introducción a Javato Introducción a Javato Fº. Javier Pereñiguez Steria Iberica 20/02/2008 Índice Introducción Arquitectura Ejemplo arquitectura Plataforma Desarrollo Ejemplo de entorno de desarrollo Vías futuras Casos de

Más detalles

Práctica Java POJO de Integración de Sistemas Tienda de Comercio Electrónico

Práctica Java POJO de Integración de Sistemas Tienda de Comercio Electrónico Práctica Java POJO de Integración de Sistemas Tienda de Comercio Electrónico Curso académico 2008-2009 1 Introducción La práctica de Integración de Sistemas consistirá en el diseño e implementación de

Más detalles

Experiencias con J2EE

Experiencias con J2EE Experiencias con J2EE Carlos Luna García Project Manager J2EE carlos.luna@sistel.es Presentación corporativa (1)! Presentación de la compañía.» Sistel es una compañía de integración y desarrollo de sistemas

Más detalles

El Framework de desarrollo del Consejo

El Framework de desarrollo del Consejo El Framework de desarrollo del Consejo Superior de Investigaciones Científicas Director de la OPCSIC Centro Técnico de Informática (CSIC) Directora Centro Técnico de Informática (CSIC) Palabras clave Framework,

Más detalles

TFC J2EE. Aplicación Web para la gestión de facturación de una empresa de cerrajería. Sara Gutiérrez Melero ITIG Junio de 2012

TFC J2EE. Aplicación Web para la gestión de facturación de una empresa de cerrajería. Sara Gutiérrez Melero ITIG Junio de 2012 TFC J2EE Aplicación Web para la gestión de facturación de una empresa de cerrajería Sara Gutiérrez Melero ITIG Junio de 2012 Consultor: Jose Juan Rodriguez Índice 1. Introducción Objetivos Planificación

Más detalles

Notas técnicas de JAVA Nro. 7 Tip Breve

Notas técnicas de JAVA Nro. 7 Tip Breve Notas técnicas de JAVA Nro. 7 Tip Breve (Lo nuevo, lo escondido, o simplemente lo de siempre pero bien explicado) Tema: JAVA Basics: Diferencias conceptuales entre JavaBeans y Enterprise JavaBeans (EJB)

Más detalles

Desarrollo de Aplicaciones Web con Eclipse

Desarrollo de Aplicaciones Web con Eclipse Desarrollo de Aplicaciones Web con Eclipse Oscar Gosdinski Software Services Representative Java Es un lenguaje de programación y una plataforma de desarrollo. 2 Lenguaje de alto nivel que puede ser caracterizado

Más detalles

Aplicaciones web construidas a base de componentes:

Aplicaciones web construidas a base de componentes: Java EE Aplicaciones Web/Sistemas Web Juan Pavón Mestras Dep. Ingeniería del Software e Inteligencia Artificial Facultad de Informática Universidad Complutense Madrid Material bajo licencia Creative Commons

Más detalles

Arquitectura Java para el Cuarto Ejercicio. José Antonio Ruano Ampudia Técnico Superior de Proyecto Informático

Arquitectura Java para el Cuarto Ejercicio. José Antonio Ruano Ampudia Técnico Superior de Proyecto Informático Arquitectura Java para el Cuarto Ejercicio José Antonio Ruano Ampudia Técnico Superior de Proyecto Informático Sumario Introducción Arquitectura en n-capas Arquitectura y el Cuarto Examen Java y su modelo

Más detalles

http://www.cem.itesm.mx/extension/ms

http://www.cem.itesm.mx/extension/ms Diplomado Programación orientada a objetos con Java y UML Las empresas necesitan contar con sistemas de información modernos, ágiles y de calidad para alcanzar sus objetivos y ser cada vez más competitivos

Más detalles

Diplomado Java. Descripción. Objetivo. A quien está dirigido. Requisitos. Beneficios

Diplomado Java. Descripción. Objetivo. A quien está dirigido. Requisitos. Beneficios Diplomado Java Descripción El lenguaje de programación Java es uno de los más utilizados hoy en día. Su potencia, simplicidad, funcionalidad y capacidad hacen que este lenguaje sea una de las herramientas

Más detalles

CURSO DE PROGRAMACIÓN EN JAVA J2EE 7 ÍNDICE

CURSO DE PROGRAMACIÓN EN JAVA J2EE 7 ÍNDICE CURSO DE PROGRAMACIÓN EN JAVA J2EE 7 ÍNDICE PRÓLOGO... 13 APECTOS BÁSICOS DE JAVA... 15 1.1. LA MÁQUINA VIRTUAL JAVA... 15 1.2. EDICIONES JAVA... 16 1.3. ESTRUCTURA DE UN PROGRAMA JAVA... 16 1.4. EL MÉTODO

Más detalles

Capítulo 2 : Marco Teórico

Capítulo 2 : Marco Teórico Capítulo 2 : Marco Teórico En este capítulo se darán a conocer algunos conceptos básicos del contexto de este trabajo, con la finalidad de situar al problema dentro de un conjunto de conocimientos. Dentro

Más detalles

Desarrollo y servicios web Sesión 18

Desarrollo y servicios web Sesión 18 Desarrollo y servicios web Sesión 18 Luisa Fernanda Rincón Pérez 2014-2 Qué son los patrones arquitectónicos? Definen la estructura de la solución al mas alto nivel. Por esto es lo primero que se tiene

Más detalles

DIPLOMATURA DESARROLLO DE APLICACIONES JAVA

DIPLOMATURA DESARROLLO DE APLICACIONES JAVA DIPLOMATURA DESARROLLO DE APLICACIONES JAVA Contenidos MÓDULO UNO: Características del Lenguaje. OOP Reconocer las características del lenguaje Java y sus componentes. Distinguir la similitudes y diferencias

Más detalles

UNIVERSIDAD DE PIURA

UNIVERSIDAD DE PIURA ESPECIALIZACIÓN EN DESARROLLO DE APLICACIONES EMPRESARIALES CON JAVA EE Ofrecer al alumno los conocimientos necesarios para la construcción de sistemas informáticos bajo una arquitectura cliente servidor

Más detalles

Model View Controller Architecture. Dra. Marcela Capobianco

Model View Controller Architecture. Dra. Marcela Capobianco Diseño y Desarrollo de Software Model View Controller Architecture Dra. Marcela Capobianco 1 Qué es MVC? Model View Controller (MVC) es un patrón agregado que separa los datos de una aplicación, la interfaz

Más detalles

Cursos PROGRAMACIÓN DE APLICACIONES CON JAVA

Cursos PROGRAMACIÓN DE APLICACIONES CON JAVA Cursos CIÓN DE APLICACIONES CON JAVA OBJETIVOS Los cursos ofrecen al alumno fundamentos muy sólidos en la Plataformas de desarrollo Java, no solo en aspectos concretos (lenguaje java, paquetes disponibles,

Más detalles

Framework para el desarrollo ágil de aplicaciones

Framework para el desarrollo ágil de aplicaciones Framework para el desarrollo ágil de aplicaciones 1 Índice INTRODUCCIÓN... 3 QUÉ ES UN FRAMEWORK?... 3 VENTAJAS DE UTILIZAR UN FRAMEWORK... 4 DESVENTAJAS DE UTILIZAR UN FRAMEWORK... 5 CARACTERÍSTICAS DE

Más detalles

FUJITSU Java Development Framework

FUJITSU Java Development Framework FUJITSU Java Development Framework DOCUMENT DETAILS Created: 10.12.2005 Version: 2.0 Author: FUJITSU ESPAÑA SERVICES S.A. 1. INTRODUCCIÓN 1.1 Arquitectura conceptos básicos La arquitectura planteada por

Más detalles

1 Índice... 1. 2 Introducción... 2. 2.1 Propósito... 2. 2.2 Alcance... 2. 3 Modelo Arquitectónico Inicial... 3

1 Índice... 1. 2 Introducción... 2. 2.1 Propósito... 2. 2.2 Alcance... 2. 3 Modelo Arquitectónico Inicial... 3 1 Índice 1 Índice... 1 2 Introducción... 2 2.1 Propósito... 2 2.2 Alcance... 2 3 Modelo Arquitectónico Inicial... 3 3.1 Diagrama de alto nivel de la arquitectura... 3 3.2 Vista de Casos de Uso... 5 3.2.1

Más detalles

Capítulo II. Arquitectura del Software

Capítulo II. Arquitectura del Software Capítulo II. Arquitectura del Software Después de un cuidadoso análisis de los objetivos del proyecto, se determinó que la mejor manera de estructurar el sistema era haciendo uso del muy famoso patrón

Más detalles

Herramienta de Gestión Integral de E-Business

Herramienta de Gestión Integral de E-Business Herramienta de Gestión Integral de E-Business Ingeniería técnica de informática de sistemas Autor: David López Martín Tutor: Antoni Oller Arcas Índice Introducción Metodología Análisis Diseño Planificación

Más detalles

II Curso Online JAVA-J2EE

II Curso Online JAVA-J2EE II Curso Online JAVA-J2EE TEMA 3 Introducción a J2EE Autor: PCYTA / Centro de Excelencia de Software Libre de Castilla-La Mancha Versión: 1.0 Fecha: Revisado 13-02-2008 23:56 Licencia: CC-by-sa 2.5 0 Licencia

Más detalles

JAVA ENTERPRISE EDITION (J2EE) ARQUITECTURA TECNOLOGÍAS (1/2) (L1)

JAVA ENTERPRISE EDITION (J2EE) ARQUITECTURA TECNOLOGÍAS (1/2) (L1) TECNOLOGÍAS (1/2) (L1) EJB ( Enterprise Java Beans ) JSP ( Java Server Pages ) JNDI ( Java Naming and Directory Interface ) JDBC ( Java Data Base Connectivity ) Java Mail JSF ( Java Server Faces ) TECNOLOGÍAS

Más detalles

Tema 1. Introducción a Java EE

Tema 1. Introducción a Java EE Objetivos del tema Propiedades de las aplicaciones empresariales El Modelo Cliente/Servidor Presentar la Plataforma Java Presentar Java EE y otras tecnologías horizontales Tema 1. Introducción a Java EE

Más detalles

Experto Universitario Java Enterprise Spring

Experto Universitario Java Enterprise Spring Spring Sesión 6: Acceso remoto. Pruebas Indice Spring para acceso remoto Spring vs. EJB Comparación de los protocolos disponibles Acceso remoto con HttpInvoker Pruebas Acceso remoto. Pruebas 2012-2013

Más detalles

ANOTACIONES PARA LA PRESENTACIÓN

ANOTACIONES PARA LA PRESENTACIÓN DIAPOSITIVA Nº2 Cada vez más gente tiene horario de oficinas y necesitan comer en el trabajo, o bien porque no les da tiempo de ir a casa o bien porque no tienen tiempo o habilidades para gestionar su

Más detalles

Centro de Capacitación en Tecnologías de la Información. Desarrollo de. diplomado

Centro de Capacitación en Tecnologías de la Información. Desarrollo de. diplomado Centro de Capacitación en Tecnologías de la Información Desarrollo de Objetivo Dotar al alumno de la metodología y los fundamentos de la programación en Java usando la plataforma J2SE (Java 2 Standard

Más detalles

Java 7.0 Advanced Application Developer

Java 7.0 Advanced Application Developer DESCRIPCIÓN La arquitectura de software es un conjunto de elementos y estructuras interrelacionados entre sí que componen a un sistema informático: define qué elementos tiene una aplicación, cómo se relacionan

Más detalles

Java Web Server Tabla de Contenidos

Java Web Server Tabla de Contenidos Java Web Server Tabla de Contenidos 3. Java Web Server...2 3.1 Conceptos generales... 2 3.2 Elección de servidor Web con capacidad para servlets...3 3.3 Instalación de Tomcat 5... 4 3.3.1 Comienza la instalación...5

Más detalles

Tema 1: Introducción a las Tecnologías Java

Tema 1: Introducción a las Tecnologías Java Tema 1: Introducción a las Tecnologías Java Índice Características de las aplicaciones empresariales Tecnologías Java Alternativas a las tecnologías Java XML Material de clase Características de las aplicaciones

Más detalles

ATLAS MANUAL DE USUARIO DEL ARQUETIPO WEBSERVICE

ATLAS MANUAL DE USUARIO DEL ARQUETIPO WEBSERVICE ATLAS MANUAL DE USUARIO DEL ARQUETIPO WEBSERVICE Versión 1.8 Área de Aplicaciones Especiales y Arquitectura de Software Hoja de Control Título Documento de Referencia Responsable Manual de usuario del

Más detalles

Servlets. Unidad: 4 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

Servlets. Unidad: 4 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos Servlets Unidad: 4 Laboratorio de Programación Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos Indice Introducción CGI Servlets: concepto, caracteristicas Servlets Vs. CGI Ciclo

Más detalles

Tema 3. 3.3 Tecnologías de Desarrollo

Tema 3. 3.3 Tecnologías de Desarrollo Tema 3 3.3 Tecnologías de Desarrollo HTML pronto pasa a ser insuficiente para todas las posibilidades de la Red No se puede interactuar con el servidor Aparecen los primeros scripts para propocionar dichar

Más detalles

Arquitectura de aplicaciones

Arquitectura de aplicaciones Arquitectura de aplicaciones Arquitectura en capas API API dic-08 alb@uniovi.es 2 Layers y Tiers Layer: capa arquitectónica de la aplicación software Presentación, lógica, persistencia Tier: capa física

Más detalles

Indizen Labs imade. Marco de Desarrollo Aplicaciones de Indizen

Indizen Labs imade. Marco de Desarrollo Aplicaciones de Indizen Indizen Labs imade Marco de Desarrollo Aplicaciones de Indizen Índice de contenidos Indizen Labs Introducción a imade Metodología imade Arquitectura imade Herramientas imade Indizen Labs Indizen Labs Son

Más detalles

FRAMEWORK SPRING EN UNA APLICACIÓN WEB

FRAMEWORK SPRING EN UNA APLICACIÓN WEB 3CM2 FRAMEWORK SPRING EN UNA APLICACIÓN WEB WEB APPLICATION DEVELOPMENT 1. INTRODUCCIÓN El Spring Framework es un popular marco de aplicaciones de código abierto que puede hacer más fácil el desarrollo

Más detalles

JavaEE. www.javasoft.com

JavaEE. www.javasoft.com JavaEE Java Enterprise Edition www.javasoft.com Por qué Java en el servidor? Ventajas Independencia de la plataforma portabilidad Gran conjunto de APIs Reusabilidad y modularidad Seguro en la ejecución

Más detalles

CAPÍTULO 4 ANÁLISIS Y DISEÑO: e-commerce CONSTRUCTOR

CAPÍTULO 4 ANÁLISIS Y DISEÑO: e-commerce CONSTRUCTOR CAPÍTULO 4 ANÁLISIS Y DISEÑO: e-commerce CONSTRUCTOR En este capítulo se describe el análisis y diseño de un sistema, denominado e-commerce Constructor, el cual cumple con los siguientes objetivos: Fungir

Más detalles

Capitulo 5. Implementación del sistema MDM

Capitulo 5. Implementación del sistema MDM Capitulo 5. Implementación del sistema MDM Una vez que se concluyeron las actividades de análisis y diseño se comenzó la implementación del sistema MDM (Manejador de Documentos de MoProSoft). En este capitulo

Más detalles

Unidad V: Programación del lado del servidor

Unidad V: Programación del lado del servidor Unidad V: Programación del lado del servidor 5.1 Introducción al lenguaje La Programación del lado del servidor es una tecnología que consiste en el procesamiento de una petición de un usuario mediante

Más detalles

Tema 1: Introducción a Java EE

Tema 1: Introducción a Java EE Tema 1: Introducción a Java EE Índice Arquitecturas características de las aplicaciones empresariales Tecnologías J2EE Alternativas a J2EE Patrones arquitectónicos Model-View-Controller y Layers Recursos

Más detalles

Ficha Técnica. Categoría. Contenido del Pack. Sinopsis. Programación. - 2 Manual Teórico - 1 Cuaderno de Ejercicios - 1 CDROM

Ficha Técnica. Categoría. Contenido del Pack. Sinopsis. Programación. - 2 Manual Teórico - 1 Cuaderno de Ejercicios - 1 CDROM Ficha Técnica Categoría Programación Contenido del Pack - 2 Manual Teórico - 1 Cuaderno de Ejercicios - 1 CDROM Sinopsis Java fue desarrollado por la compañía Sun Microsystems como una tecnología capaz

Más detalles

Desarrollo de aplicaciones web con Java y XML Experiencias en el CTI@UIB

Desarrollo de aplicaciones web con Java y XML Experiencias en el CTI@UIB Desarrollo de aplicaciones web con Java y XML Experiencias en el CTI@UIB Universidad idad de las Islas Baleares Centro de Tecnologías de la Información n (CTI@UIB( CTI@UIB) Daniel López Janáriz Objetivos

Más detalles

Requisitos técnicos para la instalación. Arquitectura Hardware Arquitectura Software. Instrucciones de instalación GONG-R

Requisitos técnicos para la instalación. Arquitectura Hardware Arquitectura Software. Instrucciones de instalación GONG-R v 3 Junio 2015 ÍNDICE Introducción Requisitos técnicos para la instalación Arquitectura Hardware Arquitectura Software Instrucciones de instalación Instalación módulo GONG2 Instalación módulo eporte Instrucciones

Más detalles

FUNCIONAMIENTO: FUNCIONALIDAD

FUNCIONAMIENTO: FUNCIONALIDAD STRUTS Qué Es? Es un framework que implementa el patrón de arquitectura MVC en Java. El patrón de arquitectura MVC (Model-View-Controller) es un patrón que define la organización independiente del Model

Más detalles

PROGRAMACIÓN VISUAL ANALISTA PROGRAMADOR UNIVERSITARIO FAC DE INGENIERIA - PLAN 2008 AÑO 2010

PROGRAMACIÓN VISUAL ANALISTA PROGRAMADOR UNIVERSITARIO FAC DE INGENIERIA - PLAN 2008 AÑO 2010 ARQUITECTURA J2EE Principios de Funcionamiento de Aplicaciones WEB El HypertText Markup Language (HTML) se concibió como una herramienta fundamental de Internet para la creación de páginas WEB. El concepto

Más detalles

Cómo puede ayudarle JBuilder en sus Desarrollos Java?

Cómo puede ayudarle JBuilder en sus Desarrollos Java? Artículos técnicos Grupo Danysoft: Cómo puede ayudarle JBuilder en sus Desarrollos Java? Oscar Cristóbal Ruiz Departamento Java Equipo Grupo Danysoft Enero 2003 - (902) 123146 www.danysoft.com Cómo puede

Más detalles

Centro de Capacitación en Tecnologías de la Información. Desarrollo de. aplicaciones web con

Centro de Capacitación en Tecnologías de la Información. Desarrollo de. aplicaciones web con Centro de Capacitación en Tecnologías de la Información Objetivo El objetivo del curso es brindar a los asistentes los conceptos y el uso de la tecnología de componentes J2EE. Se presentan las técnicas

Más detalles

Curso de Jboss Administración

Curso de Jboss Administración Curso de Jboss Administración Este curso está dirigido a gente interesada en la administración de Jboss, el cual nos brindará un soporte robusto para el despliegue de aplicaciones Java, tanto Web como

Más detalles

Práctica Java POJO de Integración de Sistemas Sitio Web de Apuestas Deportivas

Práctica Java POJO de Integración de Sistemas Sitio Web de Apuestas Deportivas Práctica Java POJO de Integración de Sistemas Sitio Web de Apuestas Deportivas Curso académico 2009-2010 1 Introducción La práctica de Integración de Sistemas consistirá en el diseño e implementación de

Más detalles

Requisitos. Universidad ORT Arquitectura de Software

Requisitos. Universidad ORT Arquitectura de Software Requisitos Java Development Kit (JDK) 1.5 o superior NetBeans IDE 6.5 o superior JBoss Application Server 4.2.x o 5.x.x Variable de entorno JAVA_HOME apuntando al directorio de instalación de la JDK 1

Más detalles

Características de OpenCms

Características de OpenCms Características de OpenCms Se basa en Java y Xml OpenCms está totalmente desarrollado en java bajo el estándar servlet. Por lo tanto, se puede integrar fácilmente en entornos hardware y software existentes,

Más detalles

1. Definición. Open Source. Escalable. Alto desempeño. Arquitectura Modular. Producto de licencia de código abierto sin coste adicional.

1. Definición. Open Source. Escalable. Alto desempeño. Arquitectura Modular. Producto de licencia de código abierto sin coste adicional. 1. Definición JBoss es un proyecto de código abierto, con el que se consigue un servidor de aplicaciones basado en J2EE, e implementado al 100% en Java. Por lo tanto al estar basado en Java, JBoss puede

Más detalles

DESARROLLO DE APLICACIONES WEB Introducción a Java Server Faces

DESARROLLO DE APLICACIONES WEB Introducción a Java Server Faces DESARROLLO DE APLICACIONES WEB Introducción a Java Server Faces 1. Objetivo: Introducir los conceptos relacionados con la construcción de aplicaciones Web Java basadas en Java Server Faces 2.x. 2. Prerrequisitos:

Más detalles

Práctica 1: Instalación de un servidor de aplicaciones web y diseño de la vista de una aplicación

Práctica 1: Instalación de un servidor de aplicaciones web y diseño de la vista de una aplicación Práctica 1: Instalación de un servidor de aplicaciones web y diseño de la vista de una aplicación Sistemas de Información Grado de Informática Dpto. de Informática e Ingeniería de Sistemas, Universidad

Más detalles

Programación y Arquitectura

Programación y Arquitectura Programación y Arquitectura Proyecto Santos es una aplicación web que usa múltiples APIs i Java EE 7: La tecnología JavaServer Faces ii, incluyendo Ajax Contextos y la inyección de dependencias para la

Más detalles

Introducción a JAX-WS Web Services

Introducción a JAX-WS Web Services INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE CÓMPUTO ALUMNO: SANLUIS CASTILLO JOSE DAVID PROFESOR: CIFUENTES ALVAREZ ALEJANDRO SIGFRIDO MATERIA: WEB APPLICATION DEVEPLOMENT Introducción a JAX-WS

Más detalles

Proyecto Fin de Carrera de Daniel Prado Rodríguez

Proyecto Fin de Carrera de Daniel Prado Rodríguez Marco Conceptual para la Gestión de Conocimiento de entornos de colaboración: aplicación a la creación 391 INDICE 7 Manual de Instalación...393 7.1 Introducción...393 7.2 J2SDK...393 7.3 Kawa...394 7.4

Más detalles

Lógica de negocio. Dsfg dsfg sdfg. Sdfgdfg dfg Dsf gsdfg sdfg. Dfg. Sdfgdfg dfg. Dfg. Dsf gsdfg sdfg.

<HTML> <IMG src= logo.gif > </HTML> Lógica de negocio. Dsfg dsfg sdfg. Sdfgdfg dfg Dsf gsdfg sdfg. Dfg. Sdfgdfg dfg. Dfg. Dsf gsdfg sdfg. Sdfgdfg dfg Dsf gsdfg sdfg Dsfg dsfg sdfg Sdfgdfg dfg Dfg Dsf gsdfg sdfg Dsfg dsfg sdfg Sdfgdfg dfg Dfg Dfg Índice Programación web Copyright 2001-2003 Víctor ROBLES FORCADA vrobles@fi.upm.es http://laurel.datsi.fi.upm.es/~ssoo/dsw/

Más detalles

DESARROLLO DE APLICACIONES CON TECNOLOGÍAS WEB PROFESIONAL

DESARROLLO DE APLICACIONES CON TECNOLOGÍAS WEB PROFESIONAL Página 1 de 21 CUALIFICACIÓN DESARROLLO DE APLICACIONES CON TECNOLOGÍAS WEB PROFESIONAL Familia Profesional Informática y Comunicaciones Nivel 3 Código IFC154_3 Versión 5 Situación RD 1087/2005 Actualización

Más detalles

Revista Digital Universitaria. 10 de agosto 2004 Volumen 5 Número 7 ISSN: 1067-6079

Revista Digital Universitaria. 10 de agosto 2004 Volumen 5 Número 7 ISSN: 1067-6079 Revista Digital Universitaria 10 de agosto 2004 Volumen 5 Número 7 ISSN: 1067-6079 JAVA o L.I. Anabell Comas Becaria de la Coordinación de Publicaciones Digitales anabell@alethia.dgsca.unam.mx o http://www.revista.unam.mx/vol.7/num12/art104/art104.htm

Más detalles

Desarrollo de aplicaciones web con WL Workshop

Desarrollo de aplicaciones web con WL Workshop CC5604 Desarrollo de aplicaciones empresariales con J2EE Guía de Trabajo Desarrollo de aplicaciones web con WL Workshop 1 Objetivos El objetivo de esta guía de trabajo es permitirle adquirir una experiencia

Más detalles

GUÍA TÉCNICA. Desarrollo de Proyectos en Plataforma Liferay en el Gobierno de Extremadura

GUÍA TÉCNICA. Desarrollo de Proyectos en Plataforma Liferay en el Gobierno de Extremadura Desarrollo de Proyectos en en el Gobierno de Extremadura Página 1 de 10 Control de versiones Núm Fecha Descripción Autores 1.0 01/09/2012 Estandar para el desarrollo de portales con el gestor de contenidos

Más detalles

Java y Eclipse. Lenguajes y Entornos de Programación Libre

Java y Eclipse. Lenguajes y Entornos de Programación Libre Java y Eclipse Lenguajes y Entornos de Programación Libre El lenguaje Java Un poco de historia: 1990: James Gosling, responsable de una empresa filial creada por Sun Microsystems, empieza a diseñar Java

Más detalles

UNIVERSIDAD AUTONOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

UNIVERSIDAD AUTONOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES UNIVERSIDAD AUTONOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES Área de formación: Elección libre Unidad académica: Desarrollo de Sistemas de Información basado en Web I Ubicación: Octavo Semestre.

Más detalles

[CASI v.0109] Pág. 1

[CASI v.0109] Pág. 1 I. DATOS INFORMATIVOS Carrera Especialidad Curso Código Ciclo : Quinto Requisitos Duración Horas Semana : 08 horas Versión : v.0109 II. SUMILLA : COMPUTACIÓN E INFORMATICA : Ingeniería de Software : Lenguaje

Más detalles

Instalación de Servidor de Aplicaciones - JBoss. Por: Carlos Carreño V. ccarreno@jbossperu.org

Instalación de Servidor de Aplicaciones - JBoss. Por: Carlos Carreño V. ccarreno@jbossperu.org Instalación de Servidor de Aplicaciones - JBoss Por: Carlos Carreño V. ccarreno@jbossperu.org Introducción JBoss AS es un contenedor de aplicaciones J2EE EJB 2.1/3.0 y componentes Web Soporte de Clustering

Más detalles

Experto en Desarrollo de Componentes Web con Tecnología Servlet y JSP (Online)

Experto en Desarrollo de Componentes Web con Tecnología Servlet y JSP (Online) Experto en Desarrollo de Componentes Web con Tecnología Servlet y JSP (Online) Experto en Desarrollo de Componentes Web con Tecnología Servlet y JSP (Online) Duración: 300 horas Precio: 200 * Modalidad:

Más detalles

Desarrollo de Aplicaciones web con JPA, EJB, JSF y PrimeFaces

Desarrollo de Aplicaciones web con JPA, EJB, JSF y PrimeFaces Desarrollo de Aplicaciones web con JPA, EJB, JSF y PrimeFaces Fernando Pech-May 1, Mario A. Gomez-Rodriguez 1, Luis A. de la Cruz-Diaz 1, Salvador U. Lara-Jeronimo 1 1 Instituto Tecnológico Superior de

Más detalles

Capítulo 2. Marco Teórico

Capítulo 2. Marco Teórico Capítulo 2. Marco Teórico 2.1. Frameworks para Aplicaciones Web en Java Con el crecimiento exponencial de Internet en los últimos años, las aplicaciones Web se han convertido en una parte básica y común

Más detalles

DIPLOMADO EN TECNOLOGÍAS WEB. (120 Hs.)

DIPLOMADO EN TECNOLOGÍAS WEB. (120 Hs.) DIPLOMADO EN TECNOLOGÍAS WEB (120 Hs.) A quien va dirigido: Este curso ha sido especialmente desarrollado para el personal técnico, estudiantes de ingeniería de último año con conocimientos en algún lenguaje

Más detalles

Técnico Superior en Programación con Java SE Standard Edition

Técnico Superior en Programación con Java SE Standard Edition Código: M087_04 Técnico Superior en Programación con Java SE Standard Edition Modalidad: Distancia Duración: 120 horas Objetivos: Este pack de materiales formativos proporcionará al alumnado la base que

Más detalles

Curso: Programación con JAVA SE Estándar Edition.

Curso: Programación con JAVA SE Estándar Edition. Curso: Programación con JAVA SE Estándar Edition. Código: 1062 Familia Profesional: Programación. Acreditación: Formación reconocida a través de vías no formales Modalidad: Distancia Duración: 150 horas

Más detalles

Enterprise JavaBeans

Enterprise JavaBeans Enterprise Java Beans y JBoss Enterprise JavaBeans Es una de las API que forman parte del estándar de construcción de aplicaciones empresariales J2EE (ahora JEE 5.0) de Oracle Corporation (inicialmente

Más detalles

Conceptos de Orquestador O2 EMPRESAS TUXPAN www.tuxpan.com

Conceptos de Orquestador O2 EMPRESAS TUXPAN www.tuxpan.com EMPRESAS TUXPAN www.tuxpan.com AÑO 2007 INDICE DE CONTENIDO 1 Software de Servicios y Orquestación de Procesos 2 1.1.1 Introducción 2 1.1.2 Software de Orquestación como Integrador 3 1.1.3 Automatización

Más detalles

Experto en Desarrollo de Componentes Web con Tecnología Servlet y JSP (Online)

Experto en Desarrollo de Componentes Web con Tecnología Servlet y JSP (Online) Experto en Desarrollo de Componentes Web con Tecnología Servlet y JSP (Online) Titulación certificada por EUROINNOVA BUSINESS SCHOOL Experto en Desarrollo de Componentes Web con Tecnología Servlet y JSP

Más detalles

CICLO SUPERIOR DESARROLLO DE APLICACIONES MULTIPLATAFORMA

CICLO SUPERIOR DESARROLLO DE APLICACIONES MULTIPLATAFORMA CICLO SUPERIOR DESARROLLO DE APLICACIONES MULTIPLATAFORMA PROGRAMACIÓN DIDACTICA ANUAL Parte específica del módulo: 0485. Programación Departamento de Familia Profesional de Informática Curso: 2014-15

Más detalles

ARQUITECTUA DE M2M MIGUEL ÁLVAREZ Y CLARA HERRERO. Documento inicial

ARQUITECTUA DE M2M MIGUEL ÁLVAREZ Y CLARA HERRERO. Documento inicial Título ARQUITECTUA DE M2M Proyecto Monkey to Monkey ( M 2 M ) Equipo Proyectos Informáticos Versión 1.0 Código PLAN_M2M_2012_04_01 Fecha 19/04/2012 Autores MIGUEL ÁLVAREZ Y CLARA HERRERO Estado Documento

Más detalles

Proyecto ELO-330 Administración Salas del Departamento de Electrónica RC1. Gerardo Lecaros Felipe Díaz

Proyecto ELO-330 Administración Salas del Departamento de Electrónica RC1. Gerardo Lecaros Felipe Díaz Proyecto ELO-330 Administración Salas del Departamento de Electrónica RC1 Gerardo Lecaros Felipe Díaz Problemática Petición de salas de forma tradicional Solución J2EE Java 2 Platform, Enterprise Edition

Más detalles

Práctica de Integración de Sistemas Aplicación Web.NET: Sitio de Comentarios de Eventos Deportivos

Práctica de Integración de Sistemas Aplicación Web.NET: Sitio de Comentarios de Eventos Deportivos Práctica de Integración de Sistemas Aplicación Web.NET: Sitio de Comentarios de Eventos Deportivos 1. Introducción Curso académico 2009-2010 La práctica de Integración de Sistemas consiste en el diseño

Más detalles

Certificaciones: Diploma de Aprobación en Desarrollo Web con Java.

Certificaciones: Diploma de Aprobación en Desarrollo Web con Java. DIPLOMATURA EN DESAR ROLLO DE APLICACIONE S WEB CON JAVA PARTE I: OBJETIVOS ESPECÍFICOS La Diplomatura en Desarrollo de Aplicaciones Web con Java tiene los siguientes objetivos específicos: Adquirir habilidad

Más detalles

Licencia 2: (Creative Commons)

Licencia 2: (Creative Commons) Licencia 2: (Creative Commons) Esta obra está bajo una licencia Reconocimiento-No comercial-sin obras derivadas 2.5 España de Creative Commons. Puede copiarlo, distribuirlo y transmitirlo públicamente

Más detalles

DESARROLLO WEB EN ENTORNO SERVIDOR

DESARROLLO WEB EN ENTORNO SERVIDOR DESARROLLO WEB EN ENTORNO SERVIDOR CAPÍTULO 7: Programación de servicios Web Marcos López Sanz Juan Manuel Vara Mesa Jenifer Verde Marín Diana Marcela Sánchez Fúquene Jesús Javier Jiménez Hernández Valeria

Más detalles

Curso de Android con Java

Curso de Android con Java Todos los Derechos Reservados Global Mentoring Experiencia y Conocimiento para tu Vida 1 Este es un tiempo único para el mundo de los celulares, en particular de los Smartphones. Este tipo de dispositivos

Más detalles