78
Por Ing. Guillermo Medrano Email: [email protected] Celular: 709 09 065 Programación para Web 2 con Eclipse Java EE CURSO

Desarrollo Web 2 con Eclipse Java..pdf

  • Upload
    guichi

  • View
    307

  • Download
    15

Embed Size (px)

Citation preview

Page 1: Desarrollo Web 2 con Eclipse Java..pdf

1

Por

Ing. Guillermo Medrano

Email: [email protected]

Celular: 709 09 065

Programación para

Web 2 con Eclipse

Java EE

CURSO

Page 2: Desarrollo Web 2 con Eclipse Java..pdf

2

Tabla de Contenido

1.1. Informática distribuida, computación distribuida. ............................................ 4

1.2. Comunicación síncrona (RMI) y asíncrona (mensaje XML en HTTP) ............ 5

1.3. El Internet Orientado a los Servicios ................................................................... 5

1.4. Arquitectura Orientada a Servicios SOA. ........................................................... 5

1.5. Arquitectura Empresarial de Java (J2EE -> JEE) ............................................. 5

1.5.1. Modelo de Desarrollo. ................................................................................................6

1.6. Servicio Web ........................................................................................................... 6

1.7. Estándar Abierto XML ......................................................................................... 7

1.7.1. Conjunto de especificaciones .....................................................................................7

1.7.2. Interacción de las tecnologías ....................................................................................7

1.8. Arquitectura de pilas de servicios web (SOAP-WSDL-UDDI) ......................... 8

1.9. Framework de Servicios Web JBoss Web Services (pila de aplicaciones) ....... 8

1.10. Modelo de servicios web de IBM .......................................................................... 9

1.11. Fundamentos de programación – Programación Orientada a Objetos –

Programación basada en patrones de diseño - Programación sobre arquitectura del

marco de trabajo – Programación de servicios web. ..................................................... 9

2.1. La Iniciativa de Pasarela de Servicios Abierto (OSGi). ................................... 11

2.2. Especificación del framework OSGi. ................................................................. 12

2.3. Bundle ................................................................................................................... 12

2.4. Eclipse-IBM .......................................................................................................... 12

2.5. Control de Inversión ............................................................................................ 13

2.6. Hot Spots ............................................................................................................... 13

3.1. Decisión del framewrok para el ERP. ................................................................ 14

3.2. JBoss Seam ........................................................................................................... 14

3.3. Caso de Implementación ..................................................................................... 15

3.4. Evaluación del framework .................................................................................. 15

3.4.1. Complejidad tecnológica ..........................................................................................15

3.4.2. Facilidad de exponer el servicio ................................................................................15

3.4.3. Facilidad de administración ......................................................................................15

3.4.4. Utilización de recursos ..............................................................................................16

Page 3: Desarrollo Web 2 con Eclipse Java..pdf

3

3.4.5. Facilidad de implementación de la presentación .....................................................16

3.4.6. Facilidad de implementación de la lógica del negocio ..............................................16

3.4.7. Facilidad de la administración de la base de datos ...................................................16

3.5. Evaluación como ERP-framework ..................................................................... 16

3.6. Conclusión ............................................................................................................ 17

4.1. JBoss Application Server .................................................................................... 18

4.2. La tecnología JBoss Seam ................................................................................... 19

4.3. Crear proyecto con Seam-Gen -> CRUD ......................................................... 20

4.4. Seam new-project ................................................................................................. 22

5.1. Etapa de instalación inicial ................................................................................. 24

Descomprimir, instalar y/o renombrar los archivos bajados de las anteriores URLs

mismas que contienen en el DVD, los archivos deberían quedar: .............................. 24

5.2. Etapa instalación MySql ..................................................................................... 25

Page 4: Desarrollo Web 2 con Eclipse Java..pdf

4

En el presente apartado primero vemos el surgimiento de la informática distribuida, luego

los tipos de comunicación basada en mensaje síncrono y asíncrono, la cualidad del Internet

orientado a servicios y arquitectura SOA.

1.1. Informática distribuida, computación distribuida.

En tiempos lejanos las máquinas que dominaban el mundo eran los grandes computadores,

años más adelante el computador personal PC desde donde el usuario podía ejecutar sus

propias aplicaciones; hasta ahí los protocolos de red no ocupaban un espacio demasiado

importante para los desarrolladores.

A principios de los 90, iniciativas dentro del Grupo de Gestión de Objetos OMG surge

COM de Microsoft y CORBA como modelos o arquitecturas diseñadas para la escritura y

encapsulación del código binario, componentes que los programadores podrían invocar

desde cualquier aplicación, no obstante no eran interoperables. Surgen la era de las redes

local y los protocolos como CORBA/IIOP, DCOM y RMI.

Modelo de

programación Web

CAPITULO

1

Page 5: Desarrollo Web 2 con Eclipse Java..pdf

5

1.2. Comunicación síncrona (RMI) y asíncrona (mensaje XML en HTTP)

Los protocolos DCOM y RMI están orientados al modelo de interacción petición/respuesta;

es decir trabajan de forma sincrónica; por tanto, no permiten un intercambio de mensajes

de sentido único o unidireccional.

Por otro lado, Java Message Service JMS que permite utilizar colas de mensajes, como el

modelo de publicación y suscripción. Microsoft Message Queuing MSMQ se caracteriza

por su completa funcionalidad, en ambos casos las aplicaciones se encuentran en una

misma red local.

1.3. El Internet Orientado a los Servicios

La aparición de Internet con la Web, la red creció y se volvió extremadamente distribuida

y descentralizada, adelantando la decisión sobre qué sistemas operativos o entorno de

programación/lenguaje, se ejecutaría los diversos ordenadores conectados a Internet.

1.4. Arquitectura Orientada a Servicios SOA.

Las arquitecturas de servicios prometen implementar aplicaciones compuestas que ofrezcan

transparencia en la localización y segregación de la lógica de negocio. La transparencia de

localización permite a los consumidores y proveedores de servicios intercambiar mensajes

sin referenciar a una u otra localización concreta. La segregación solapada de lógica del

negocio es el núcleo del proceso de otro proveedor de servicio y consumidor.

Juntos, estas características le permiten reemplazar o actualizar componentes individuales

en una aplicación compuesta sin afectar otros componentes o el proceso como un todo. Sin

embargo, se puede independientemente especificar el camino alternativo a través el cual

varias partes de la aplicación compuesta intercambien mensajes.

1.5. Arquitectura Empresarial de Java (J2EE -> JEE)

J2EE es la versión previa a JEE como plataforma de desarrollo encabezado por Sun

Microsystems con una colección de patrones.

Java EE 5 o JEE creada en 1997 por Sun Microsystems soporta múltiples sistemas como

Windows, Unix, Linux y Solaris con la instancia Java Virtual Machine JVM, de desarrollan

Page 6: Desarrollo Web 2 con Eclipse Java..pdf

6

en torno a un organismo de control JCP en el cual están afiliadas SAP, ORACLE, SUN,

IBM, Motorola entre otros. Apunta a la competitividad como solución libre y madura.

Una arquitectura empresarial podría verse como el estudio de sistemas empresariales

complejos desde el punto de vista de su estructura, como lo señala IEEE-1417-FAQ “No

estamos seguros, pero la reconocemos cuando vemos una”. Abarca un conjunto de

especificaciones.

1.5.1. Modelo de Desarrollo.

JEE define una arquitectura de implementación de servicios, donde el modelo puede tener

n-capas: Bases de datos, sistemas legados (ERP, CRM), Capa negocio, capa web, capa de

cliente, como se muestra en los enlaces en la siguiente figura.

1.6. Servicio Web

Un servicio web es una aplicación modular auto descriptivo que se puede publicar, ubicar e

invocar desde cualquier lugar de la Web o red local. No es necesario que el proveedor y el

usuario del servicio web XML tengan en cuenta el sistema operativo, el entorno del

lenguaje, el modelo de componentes utilizados en la creación y acceso al Servicio Web

XML, ya que se basan en estándares omnipresentes de Internet, como XML, HTTP y

SMTP.

Page 7: Desarrollo Web 2 con Eclipse Java..pdf

7

Simple Object Access Protocol SOAP es un protocolo sencillo y extensible para la

comunicación de ordenador a ordenador, que emplea por igual los estándares actuales de

Internet: XML para el formato de mensajes, http y otros protocolos de Internet para el

transporte de mensajes.

XML y SOAP son las tecnologías base de los servicios Web.

1.7. Estándar Abierto XML

El lenguaje de definición de lenguajes de marcado es como un metalenguaje, define

lenguajes de marcado por medio de DTD’s (Document Type Definition) y es estandarizado

por el w3c (Recommendation 10-Feb- 1998).

1.7.1. Conjunto de especificaciones

XML (Estructura de los datos)

XSL = XSLT + XSL-FO’s + XPath (Hojas estilo)

XLL = XLink + XPointer +Xpath (Hiperenlaces)

1.7.2. Interacción de las tecnologías

XML: Intercambio de Información

XML+XSL: Formato de publicación

XML+XSL+XLL: Navegación

XML+XSL+XLL+ script: DXML (aplicación)

Page 8: Desarrollo Web 2 con Eclipse Java..pdf

8

1.8. Arquitectura de pilas de servicios web (SOAP-WSDL-UDDI)

Consta de tres bloques: ubicación, descripción y llamada, donde cada bloque consta de una

serie de capas que encajan entre sí.

(Grafico: Mensaje/Cable (Invocación) Transporte – Descripción

(Significado) –Descubrimiento)

1.9. Framework de Servicios Web JBoss Web Services (pila de aplicaciones)

Seam integrado con JBossWS permite al estándar JEE Web Services tomar ventaja total de

del framework contextual de Seam. Incluyendo soporte para servicios Web

conversacionales.

Para permitir a Seam a interceptor requerimientos de Web services para los contextos

necesarios que pueden ser creados por el requerimiento, un manejador SOAP especial

deberá ser configurado, dicha implementación deberá trabajar gestionando el ciclo de vida

durante el ámbito del requerimiento del Servicio Web.

Para la propagación de las conversaciones entre request de los servicios Web, Seam emplea

un elemento de cabecera usando SOAP presente en ambos request SOAP y respuestas de

mensajes para acarrear el ID de conversación desde el consumidor hacia el servicio, y

vuelta atrás.

Como un servicio Web debe estar implementado en otros session bean sin estado o POJO,

es recomendable que la conversación de servicios Web, el servicio web actué como una

fachada hacia el componente conversacional Seam

Page 9: Desarrollo Web 2 con Eclipse Java..pdf

9

1.10. Modelo de servicios web de IBM

Los productos de servicios web de IBM, se basan en el modelo:

El proveedor del servicio, implanta la lógica empresarial que va a enviarse y anuncia su

existencia publicando información con el registro del servicio.

El solicitante de servicio desearía emplear los servicios del Proveedor de Servicio, por lo

que consulta el Registro del Servicio para encontrar un proveedor adecuado.

Una vez equipado con la información del Registro del Servicio, el solicitante de servicio

puede encontrar al Proveedor del Servicio y aprender acerca de su interfaz. Esta

información es suficiente para que el solicitante contacte con el Proveedor del Servicio y

así pueda utilizar los servicios que ofrece.

Este modelo es una excelente representación de un web service, y explora la característica

más valiosa de éstos: los componentes eran empaquetados de forma poco rígida,

simplificando la inevitable adaptación del sistema a los nuevos requisitos, algo que resulta

tan común en el mundo empresarial de hoy en día.

1.11. Fundamentos de programación – Programación Orientada a Objetos – Programación basada en patrones de diseño - Programación sobre arquitectura del marco de trabajo – Programación de servicios web.

En el modelo de programación orientado a máquina están los lenguajes como Assembler,

luego evolucionan los lenguajes sin estructura del tipo GOTO, más adelante surgen las

estructuras de control con la programación estructurada que hereda el problema con un alto

Page 10: Desarrollo Web 2 con Eclipse Java..pdf

10

acoplamiento, surge la programación modular con el uso de las subrutinas y paso de

parámetros pero en la medida que crecía el código y ante la necesidad de extenderlo sea

hacia trabajo adicional no productivo, surgen la programación OO que fomenta la

reutilización del código, pero luego la experiencia de las comunidades de programadores

surgen modeles a las soluciones generales para una serie de problemas similares o la

programación basada en patrones de diseño que en definitiva cambian y entregan el control

de ejecución del programa a los marcos de trabajo construidos ya no pensados en el diseño

de bajo nivel sino mas bien en la arquitectura como las orientadas a servicios que la Web

nos brinda.

Page 11: Desarrollo Web 2 con Eclipse Java..pdf

11

2.1. La Iniciativa de Pasarela de Servicios Abierto (OSGi).

Open Services Gateway Initiative (OSGi) es una organización internacional que define y

promueve especificaciones abiertas, deliberando y gestionando las especificaciones para

entornos en red.

El elemento clave de la iniciativa es el framework OSGi; el cual es un framework liviano y

delgado para su despliegue y ejecución de aplicaciones orientadas a servicios.

Debido a estas características el framework OSGi está cobrando gran interés creciente en su

aplicación para dispositivos: consumidor y no consumidor, de áreas de dominio específicas;

esto es desarrollo de software orientado a servicios.

Estándar abierto

XML y rol de la

OSGi

CAPITULO

2

Page 12: Desarrollo Web 2 con Eclipse Java..pdf

12

2.2. Especificación del framework OSGi.

La especificación del framework OSGi define los servicios del framework al incluir:

Modelo de componentes mínimo,

Gestión de servicios para los componentes,

Registro de servicios.

Los servicios son paquetes, donde sus implementaciones están asociadas a bundles.

2.3. Bundle

Es un archivo Java Archive Runtime JAR, que contiene un manifiesto y una combinación

de archivos de clases Java en código nativo y recursos asociados. El manifiesto de un

archivo JAR bundle contiene metadatos descriptivos, entre otras cosas, los paquetes Java

que el bundle requiere o provee.

Los estados del ciclo de vida un bundle como se presenta en el siguiente diagrama a los

mecanismos de gestión que el framework provee para: instalación, activación,

desactivación, actualización y eliminación de bundles.

2.4. Eclipse-IBM

El proyecto Eclipse es un entorno de desarrollo integrado IDE de plugin-centralizado y

modular encabezado por IBM, el IDE está experimentando en el uso de OSGi como una

Page 13: Desarrollo Web 2 con Eclipse Java..pdf

13

mecanismo de plug-in dinámico; la experimentación está tomando mayor espacio con los

sub-proyectos: Seam y Web Beans.

2.5. Control de Inversión

Cuando el control del flujo de ejecución del programa reside o es tarea fundamental del

framework y no en las aplicaciones; por ejemplo el caso de Bijeccion.

2.6. Hot Spots

Mide el comportamiento cambiante de una clase genérica.

Page 14: Desarrollo Web 2 con Eclipse Java..pdf

14

3.1. Decisión del framewrok para el ERP.

Los sistemas de gestión empresarial computarizada o software ERP dejan muchos

beneficios a una organización. Las pequeñas empresas es caro pagar el costo del producto.

La otra opción es soluciones libres o abiertas. Se tiene como opciones un enorme arreglo de

diferentes vendedores, una de las decisiones más difíciles radica; ¿Cuál software

framework ERP open source o libre adoptar?, en nuestro caso nos centraremos en JBoss y

el modelo integrado de programación de de aplicaciones empresarial; JBoss Seam.

3.2. JBoss Seam

Como el más popular framework de desarrollo empresarial de software basado sobre Java

EE, combina Java Server Faces JSF, Enterprise JavaBeans EJB 3.0 integra con la

tecnología de mapeo de objetos relacionales de Hibernate, integra con AJAX y otros como

capa de seguridad y para la lógica de negocios.

Evaluación técnica

del Framework

CAPITULO

3

Page 15: Desarrollo Web 2 con Eclipse Java..pdf

15

3.3. Caso de Implementación

Consiste en una demo con los siguientes requerimientos de funcionalidad:

1) Web service para gestión de productos.

2) Web service para gestión de clientes.

3) Web Service para consultar saldos de Cliente: a)Simple saldo, b) Kardex de cliente

4) Web Service para realizar una compra de productos( Cant, Cod. descripción, Punit,

Importe) - 1 sola moneda (por decir en bs) al estilo de SICAM.

Se deber poder elegir varios productos en un solo comprobante.

6) Web services para reportes productos

7) Web services para reportes saldos clientes

8) Gestión de usuarios

3.4. Evaluación del framework

3.4.1. Complejidad tecnológica

¿La tecnología aplicada para la creación de aplicaciones sobre el framework es fácil de

comprender?

Resp.- Encontramos que JBoss Seam requiere desarrolladores que entiendan con claridad la

tecnología Java EE, además el desarrollador debe tener destrezas en JFS, EJB3 y JPA.

3.4.2. Facilidad de exponer el servicio

¿Cuáles son los pasos necesarios para exponer un servicio web sobre el framework?

Resp.- En Seam para exportar existen los métodos de session beans como operaciones de

web services, los desarrolladores deben crear una interfaz Java separada declarando los

métodos que está debería estar exportando con el añadido de las dos anotaciones:

@Remote, @WebService(name=”…”,serviceName=”…”). Seam crea automáticamente la

especificación WSDL apropiada. Las interfaces remotas y locales para la misma lógica de

negocio.

3.4.3. Facilidad de administración

¿Es la instalación y despliegue de la aplicación simple?

Page 16: Desarrollo Web 2 con Eclipse Java..pdf

16

Resp.- JBoss Seam requiere SDK (JDK+JRE), una instalación separada del servidor de

aplicación y algunas modificaciones al servidor de Seam para que este cargado y luego

estar listo para ser corrido.

3.4.4. Utilización de recursos

¿Son el espacio en disco y memoria requerimientos razonables?

Resp.- En el instalador estándar, Seam corre sobre JBoss AS, el cual provee soporte

completo EJB3, la instalación requiere 335.2 MB de espacio en disco y 85808 KB de RAM

en runtime.

3.4.5. Facilidad de implementación de la presentación

¿Los patrones de la capa de presentación son flexibles y fáciles de utilizar?

Resp.- Seam utiliza el patrón de interacción MVC para la capa de presentación, los

desarrolladores deben estar familiarizados con JSF y EJB para implementar los

componentes de la capa de presentación.

3.4.6. Facilidad de implementación de la lógica del negocio

¿Es fácil el desarrollo y modificación de la lógica de negocios?

Resp.- Seam requiere codificación manual para realizar las tareas relacionadas con los

servicios de la lógica de negocios.

3.4.7. Facilidad de la administración de la base de datos

¿Es fácil de habilitar y cambiar la configuración de la base de datos?

Resp.- JBoss Seam provee varios medios para conectar con cada diferente gestor de base

de datos. Cambiar de base de datos es un tema simple de modificar el archivo de

configuración en el punto del correcto datasource.

3.5. Evaluación como ERP-framework

3.5.1. Disponibilidad.

JBoss requiere reseteo frecuentemente, por ejemplo cuando queremos desplegar nuevas

versiones de un código.

3.5.2. Personalización. Los desarrolladores solo necesitan cambiar una especificación XML para conectar con el

punto final del servicio a diferentes componentes.

Page 17: Desarrollo Web 2 con Eclipse Java..pdf

17

3.5.3. Modificabilidad. Está disponible para desarrolladores y depende de las destrezas de los desarrolladores.

3.5.4. Integración. JBoss tiene especiales características jBPM y otros para servicios de lógica de negocios.

3.5.5. Flexibilidad. Contiene muchos gestores y herramientas de soporte para tareas como, desarrollo de

interfaces de usuarios, exposición de web services y setup de bases de datos, ocupa como

lenguaje scripting Java Server Pages.

3.6. Conclusión Esperamos que la complejidad Seam debiera eventualmente proveer beneficios directos al

tamaño del sistema y el crecimiento de la complejidad.

Page 18: Desarrollo Web 2 con Eclipse Java..pdf

18

En este apartado presentamos conceptos fundamentales de la tecnología aplicada a los

proyectos, contenidos en los programas: JBoss AS, JBoss Seam, RichFaces.

4.1. JBoss Application Server

JBoss Tools es una suite de plugins para Eclipse. En el diagrama muestra aquellos plugins

que comprende JBoos Tools y como ellos están relacionados con los otros.

Herramientas de

desarrollo

CAPITULO

4

Page 19: Desarrollo Web 2 con Eclipse Java..pdf

19

Es posible instalar plug-ins dentro de la suite JBoss Tools; como plug-ins dedicados o

permanentes. Sin embargo, las dependencias entre plug-ins Ud. deberán personalizarlas.

Estas dependencias las mostramos en el diagrama arriba. Los archivos para cada plug-in

dedicado están disponibles en la página de download de JBoss Tools.

4.2. La tecnología JBoss Seam

JBoss Seam es una aplicación web framework desarrollando por JBoss, una división de Red

Hat. El proyecto fue dirigido por Gavin King, quien también fue el iniciador clave del

framework mapeador de Objetos Relacionales Hibernate.

JBoss Seam combina los frameworks: Enterprise JavaBeans (EJB3) y JavaServer Faces

(JSF). Se puede fácilmente acceder a cualquier componente EJB back-end desde el front-

end direccionado por el nombre del componente Seam.

JBoss introduce el concepto de bijection, tomando de las dependencia de Spring injection

características donde los objetos pueden se in-jected o out-jected de/a variables asignadas

usando las anotaciones @In y @Out.

Seam también expande el concepto de contextos. Cada componente Seam existe en un

contexto. El contexto Seam por defecto es la conversación. Una conversación puede palmar

múltiples páginas y usualmente palmos de completos flujos de negocios, del inicio hasta el

final. El contexto de sesión captura todas las acciones de un usuario hasta los fuera de

conexión o cierre del browser – en cada uso múltiples del botón-back del browser.

Con JBoss Seam se puede generar automáticamente una aplicación Web CRUD (create-

read-update-delete) desde una base de datos existente usando la herramienta en línea de

comando seam-gem, el cual es proveído con el framework.

El JBoss Seam WYSIWYG de desarrollo facilita a través del uso de las herramientas de

JBoss, un conjunto de plug-ins diseñados por el Open Source entorno de desarrollo

integrado Eclipse. Seam integra fuera de su caja, con JBoss RichFaces y librerías AJAX

ICEsoft ICEFaces sin necesidad para escribir en código simple en Javascript.

Seam también viene con un assert enriquecidos para características como creador de

documentos PDF, emailing, creación de gráficos y creación de hojas de cálculos de

Microsoft Excel.

Page 20: Desarrollo Web 2 con Eclipse Java..pdf

20

4.3. Crear proyecto con Seam-Gen -> CRUD

Abrimos el proyecto de JBoss y nos vamos a la carpeta /seam-gen/ y arrastramos el

built.xml dentro de Ant, una vez hecho esto desplegamos y le damos a reset, luego a setup y

se nos abrirá una ventana donde vamos a introducir:

Introducir workspace

Introducir dirección del servidor JBoss

Introducir nombre del proyecto

Color de la paleta

EAR (para el uso EJB)

Nombre del paquete del proyexto

Nombre del paquete del UI

Nombre del paquete de los test

TipoBase de Datos (se recomienda hsql por su facilidad de uso)

Nombre del directorio de la base de datos

Librería de la base de datos

Conexión con la base de datos (defecto)

Ruta URL donde se conecte la Base de Datos

Nombre del root

Contraseña del root

Nombre de la Base de Datos

Pregunta si están las tablas creadas

Cada vez que arranque la BD cree que las tablas.

Implementación (dejar en blanco)

Luego le damos a new project y esto creará el proyecto con las características antes metida

en el workspace.

Para ver este proyecto en el Eclipse le damos a New project java y le damos a crear desde

código existente le ponemos el mismo nombre que tiene el proyecto elegido y ya lo

tenemos en el Eclipse.

Ahora para crear una entidad en ese proyecto creado le damos al built del seam-gen y

pinchamos en new Entity: nos pide el nombre de la clase

List -> en la página para lista los datos

Details -> en la página para editar los datos

Desde la url http:// localhost:8080/nombreProyectoCreado si le damos a

nombreEntidadList podemos añadir datos.

Page 21: Desarrollo Web 2 con Eclipse Java..pdf

21

Pasos

C:\Projects\jboss-seam>seam setup

Buildfile: C:\Projects\jboss-seam\seam-gen\build.xml

setup:

[echo] Welcome to seam-gen :-)

Acá va el directorio de tu proyecto Eclipse

[input] Enter your Java project workspace [C:/Projects]

El directorio raiz de tu instalacion de JBoss

[input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5.GA]

Nombre de tu proyecto

[input] Enter the project name [myproject]

helloworld

Esto no es tan importante, va el nombre del paquete de los session beans

[input] Enter the Java package name for your session beans [com.mydomain.helloworld]

org.jboss.helloworld

Esto tampoco es tan importante, acá ponés el paquete de los entity beans, pero si queres

dale enter nomas

[input] Enter the Java package name for your entity beans [org.jboss.helloworld]

Esto es menos importante, es para los casos de prueba, dale enter

[input] Enter the Java package name for your test cases [org.jboss.helloworld.test]

Esto es MUY importante. Poné el tipo de base de datos que uses

[input] What kind of database are you using? [hsql]

(hsql,mysql,oracle,postgres,mssql,db2,sybase,)

mysql

Esto tambien es importante. En teoria te va a setear automaticamente el Dialecto de tu

base de datos, pero mejor es que te fijes en la lista de dialectos (buscá la tabla "Dialects"

en esta pagina:

http://www.hibernate.org/hib_docs/v3/reference/en/html/session-configuration.html )y elijas el que corresponde

[input] Enter the Hibernate dialect for your database [org.hibernate.dialect.MySQLDialect]

IMPORTANTISIMO: poné la direccion del archivo con el jar del JDBC Driver

[input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb.jar]

../../mysql-connector.jar

IMPORTANTE: poné la clase de tu Driver JDBC

Page 22: Desarrollo Web 2 con Eclipse Java..pdf

22

[input] Enter JDBC driver class for your database [com.mysql.jdbc.Driver]

La URL de la base de datos. Cada base de datos tiene su propio tipo de URL. Si no la

sabés preguntame de nuevo

[input] Enter the JDBC URL for your database [jdbc:mysql:///test]

Tu usuario de la base de datos. Tiene que tener permisos de creacion

[input] Enter database username [sa]

gavin

El password de tu usuario de base de datos

[input] Enter database password []

¿Vas a trabajar con tablas que existen, o las vas a generar a partir de tus entidades?

[input] Are you working with tables that already exist in the database? [n] (y,n,)

y

[propertyfile] Creating new property file: C:\Projects\jboss-seam\seam-gen\build.properties

[echo] Installing JDBC driver jar to JBoss server

[echo] Type 'seam new-project' to create the new project

4.4. Seam new-project

Para usarlo desde Eclipse, te vas a File->Import->Existing Projects In to Workspace y en

"Select root directory" vas y buscas el directorio que te creo el seam generator, donde está

tu proyecto. Le das finish y está.

Page 23: Desarrollo Web 2 con Eclipse Java..pdf

23

En la primera parte encontrará las páginas en Internet donde bajar las últimas versiones de las

herramientas que utilizaremos a lo largo del proyecto, luego están la etapa de instalación inicial

de los servidores de Java EE, mas adelante tenemos la instalación del servidor de base de datos

MySql al que accederemos mediante el conector adecuado, la gestión de las bases de datos se

realizaran a través del gateway MySql Navicat, concluimos la etapa de instalación con la

actualización de las Librerías de RichFaces y AJAX.

Eclipse IDE for Java EE Developers, basado en 3.4.2 para windows en Internet lo

encontraras con el siguiente link para bajar Eclipse Plataform

http://www.eclipse.org/downloads/

Java EE 5 SDK for windows incluye JDK y JRE, JVM basado en 1.6.0 en Internet lo

encontraras en http://java.sun.com/javase/downloads/index.jsp

Jboss Application Server lo puedes encontrar en Internet en la siguiente dirección

http://www.jboss.org/jbossas/downloads/

Instalación de las

herramientas de

desarrollo

CAPITULO

5

Page 24: Desarrollo Web 2 con Eclipse Java..pdf

24

Framewok Jboss Seam 2.1.1 en Internet lo puedes encontrar en la siguiente dirección

http://www.seamframework.org/Download

5.1. Etapa de instalación inicial

Descomprimir, instalar y/o renombrar los archivos bajados de las anteriores URLs mismas que

contienen en el DVD, los archivos deberían quedar:

\tsi\Docs\img\img01.jpeg

Los instaladores de la base de datos MySql los encontraras en Internet en la siguiente dirección o

bien en el DVD adjunto en la documentación del proyecto:

http://dev.mysql.com/downloads/mysql/5.1.html.

Page 25: Desarrollo Web 2 con Eclipse Java..pdf

25

5.2. Etapa instalación MySql

Seguir los pasos del instalador MySql y establecer los parámetros del usuario Root, algunos un

listado de programas deberían quedar así:

\tsi\Docs\img\img02.jpeg

El conector adecuado para usar las base de datos lo puedes encontrar en Internet en la siguiente

dirección: http://dev.mysql.com/downloads/connector/ , para nuestro caso utilizamos Connector

5.1.7 copiarlo el archivo mysql-connector-java-5.1.7-bin.jar en

C:\java\jboss-4.2.2.GA\server\default\lib

Page 26: Desarrollo Web 2 con Eclipse Java..pdf

26

tsi\Docs\img\img03.jpeg

Instalador de gateway para administrar el servidor de base de datos MySql, navicat8_mysql_en

tsi\Docs\img\img04.jpeg

Page 27: Desarrollo Web 2 con Eclipse Java..pdf

27

Librerías que incorpora tecnología Java Server Pages JSP y AJAX en RichFaces 3.3.0 GA,

descomprimimos y reemplazamos las archivos: richfaces-ui.jar , richfaces-impl.jar , richfaces-

api.jar renombrando los archivos sin la terminación -3.3.0.GA y reemplazandolos

C:\java\jboss-seam-2.0.2.SP1\lib

\tsi\Docs\img\img05.jpeg

Fin.

Page 28: Desarrollo Web 2 con Eclipse Java..pdf

28

Para el diagrama de clases, iniciamos con la creación del esquema de la base de datos; es

decir, atributos, restricciones de los atributos de las tablas y las relaciones entre tablas como

presentamos a continuación:

Desarrollo y

producción del

software

CAPITULO

6

Page 29: Desarrollo Web 2 con Eclipse Java..pdf

29

\tsi\Docs\img\DDC.jpeg

En base al esquema que nos queda como del resultado de definir los objetos de la base de

datos, el archivo .sql :

Creamos las base de datos con el programa Navicat: test

Abrimos la base de datos test y la sección de Query.

Creamos nueva consulta, copiamos las siguientes instrucciones SQL:

DROP TABLE IF EXISTS `test`.`cliente`;

CREATE TABLE `test`.`cliente` (

`id` int(10) unsigned NOT NULL auto_increment,

`nombre` varchar(45) default NULL,

`tipo_cliente_id` int(10) unsigned default NULL,

`direccion` varchar(45) default NULL,

`telefono` varchar(45) default NULL,

`email` varchar(45) default NULL,

`web` varchar(45) default NULL,

`saldo_apertura` double default NULL,

`limite_credito` double default NULL,

Page 30: Desarrollo Web 2 con Eclipse Java..pdf

30

`name` varchar(20) default NULL,

`version` int(11) default NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS `test`.`compra`;

CREATE TABLE `test`.`compra` (

`id` int(10) unsigned NOT NULL auto_increment,

`Description` varchar(45) default NULL,

`producto_id` int(10) unsigned default NULL,

`cantidad` int(10) unsigned default NULL,

`precio_unitario` double default NULL,

`importe` double default NULL,

`moneda` varchar(45) default NULL,

`fecha_hora` timestamp NOT NULL default CURRENT_TIMESTAMP on update

CURRENT_TIMESTAMP,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS `test`.`kardex_cliente`;

CREATE TABLE `test`.`kardex_cliente` (

`id` int(10) unsigned NOT NULL auto_increment,

`cliente_id` int(10) unsigned default NULL,

`compra_id` int(10) unsigned default NULL,

`saldo` double default NULL,

`saldo_fecha` timestamp NOT NULL default CURRENT_TIMESTAMP on update

CURRENT_TIMESTAMP,

PRIMARY KEY (`id`),

KEY `FKFEB30A76AB82CA33` (`compra_id`),

KEY `FKFEB30A76177EED61` (`cliente_id`),

CONSTRAINT `FKFEB30A76177EED61` FOREIGN KEY (`cliente_id`) REFERENCES

`cliente` (`id`),

CONSTRAINT `FKFEB30A76AB82CA33` FOREIGN KEY (`compra_id`) REFERENCES

`compra` (`id`),

CONSTRAINT `FK_kardex_cliente_cliente` FOREIGN KEY (`cliente_id`) REFERENCES

`cliente` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,

CONSTRAINT `FK_kardex_cliente_compra` FOREIGN KEY (`compra_id`)

REFERENCES `compra` (`id`) ON DELETE CASCADE ON UPDATE CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS `test`.`producto`;

CREATE TABLE `test`.`producto` (

`id` int(10) unsigned NOT NULL,

`tipo_producto_id` int(10) unsigned default NULL,

`descripcion` varchar(45) default NULL,

`precio_unitario` double default NULL,

Page 31: Desarrollo Web 2 con Eclipse Java..pdf

31

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS `test`.`kardex_producto`;

CREATE TABLE `test`.`kardex_producto` (

`id` int(10) unsigned NOT NULL auto_increment,

`producto_id` int(10) unsigned default NULL,

`compra_id` int(10) unsigned default NULL,

`cantidad` int(10) unsigned default NULL,

`importe` double default NULL,

`fecha_hora` timestamp NOT NULL default CURRENT_TIMESTAMP on update

CURRENT_TIMESTAMP,

PRIMARY KEY (`id`),

KEY `FK65B4DC64AB82CA33` (`compra_id`),

KEY `FK65B4DC6417983CB3` (`producto_id`),

CONSTRAINT `FK65B4DC6417983CB3` FOREIGN KEY (`producto_id`)

REFERENCES `producto` (`id`),

CONSTRAINT `FK65B4DC64AB82CA33` FOREIGN KEY (`compra_id`) REFERENCES

`compra` (`id`),

CONSTRAINT `FK_Kardex_Producto_compra` FOREIGN KEY (`compra_id`)

REFERENCES `compra` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,

CONSTRAINT `FK_Kardex_Producto_producto` FOREIGN KEY (`producto_id`)

REFERENCES `producto` (`id`) ON DELETE CASCADE ON UPDATE CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Click en el boton Run de la ventana del query en Navicat.

Fin creación del esquema de base de datos: test

Abrir Eclipse desde el acceso directo puesto en el escritorio del sitio de trabajo.

Crear un workspace con el nombre de carpeta D:\web_dos

Page 32: Desarrollo Web 2 con Eclipse Java..pdf

32

Creada la carpeta donde del workspace, hacemos que sea por defecto

Luego muestra

Page 33: Desarrollo Web 2 con Eclipse Java..pdf

33

Abrir la perspectiva Web Development.

Crear un Dynamic Web Project.

Page 34: Desarrollo Web 2 con Eclipse Java..pdf

34

Buscamos el wizard adecuado

Damos nombre al nuevo proyecto y conectamos al Server Runtime Jboss AS

Asignamos el JRE y el directorio del JBoss AS

Page 35: Desarrollo Web 2 con Eclipse Java..pdf

35

Configuramos el JBoss AS con Seam 2

Verificamos para la configuración anterior, las versiones con las que trabajaremos

Page 36: Desarrollo Web 2 con Eclipse Java..pdf

36

Cambiamos la versión de Java

Características del modulo web, como esta.

Page 37: Desarrollo Web 2 con Eclipse Java..pdf

37

La configuración de JSF como esta

Habilitamos una conexión con Jboss Seam

Page 38: Desarrollo Web 2 con Eclipse Java..pdf

38

Elegimos el formato EAR como formato de despliegue o instalado

Creamos nuevo perfil de conexión JDBC

Page 39: Desarrollo Web 2 con Eclipse Java..pdf

39

Damos un nombre a la conexión y una descripción

Especificamos Driver de conexión y detalles

Page 40: Desarrollo Web 2 con Eclipse Java..pdf

40

Direccionamos el driver file y completamos detalles faltantes

Seteamos con la definición del driver

Page 41: Desarrollo Web 2 con Eclipse Java..pdf

41

Verificamos que el monitor que en el monitor de servicios de windows el MySql este

INICIADO

Completados los parámetros de la configuración Seam para el proyecto

Page 42: Desarrollo Web 2 con Eclipse Java..pdf

42

Finalizar la configuración de la habilitación del proyecto con Seam

Darle click en No para mantenemos en la perspectiva Web Development

Page 43: Desarrollo Web 2 con Eclipse Java..pdf

43

Las carpetas con archivos generados y recursos quedaría como a continuación

Page 44: Desarrollo Web 2 con Eclipse Java..pdf

44

Page 45: Desarrollo Web 2 con Eclipse Java..pdf

45

Iniciamos el mapeo de los objetos relacionales con la perspectiva eclipse Hibernate

En la paleta Hibernate, base de datos podemos ver las tablas de nuestra conexión a la base de

datos

Page 46: Desarrollo Web 2 con Eclipse Java..pdf

46

Creamos una nueva carpeta dentro del grupo -ejb con la finalidad de crear los archivos

necesarios para la generación de las clases Java mapeadas desde Hibernate

Damos nombre a la carpeta temporal para la creación de archivos a fin de generar las object

map class

Page 47: Desarrollo Web 2 con Eclipse Java..pdf

47

Creamos el archivo de configuración desde nuevo.

El archivo lo recuperamos dentro de la carpeta –ejb que creamos para tan fin

Page 48: Desarrollo Web 2 con Eclipse Java..pdf

48

Fijamos los parámetros del archivo XML de configuración

Archivo creado con los parámetros establecidos

Page 49: Desarrollo Web 2 con Eclipse Java..pdf

49

Creación como nuevo dentro de la carpeta, el archivo de ingeniería inversa de Hibernate

Carpeta y nombre para el archivo para ingeniera inversa

Page 50: Desarrollo Web 2 con Eclipse Java..pdf

50

Una vez creada la consola de configuración, configurar el filtro de tablas

Los dos archivos para el mapeo de tablas a sus clases java correspondientes según estándar.

Page 51: Desarrollo Web 2 con Eclipse Java..pdf

51

Abrimos el generador de código de Hibernate

En el administrador del generador de código Hibernate, creamos un nuevo y le asignamos la

consola creada.

Page 52: Desarrollo Web 2 con Eclipse Java..pdf

52

Creamos un nuevo folder dentro del grupo –ejb para la generación de las clases

Page 53: Desarrollo Web 2 con Eclipse Java..pdf

53

Seleccionamos el directorio de salidas de las clases que vamos a generar

Tique amos que la ingeniería inversa la haremos desde una conexión JDBC, damos el nombre

del paquete donde los pondrá

Page 54: Desarrollo Web 2 con Eclipse Java..pdf

54

Creamos un nuevo paquete dentro del grupo –ejb para las Entidades

Nombre al nuevo paquete

Page 55: Desarrollo Web 2 con Eclipse Java..pdf

55

Direccionamos el archivo de configuración generado

Reveng.xml

Page 56: Desarrollo Web 2 con Eclipse Java..pdf

56

Tikeamos los estándares con los que se ejecutara la exportación

Como resultado las clases fueron generadas en la capeta temporal

Page 57: Desarrollo Web 2 con Eclipse Java..pdf

57

Cambiamos de perspectiva a Seam de Eclipse a fin de generar los Session Beans, Forms

Seleccionamos las clases generadas en la carpeta temporal para copiarlas en el grupo –ejb

Page 58: Desarrollo Web 2 con Eclipse Java..pdf

58

Pegamos las clases seleccionadas para copiarlas en el paquete creado para las Entidades en –

ejb

Por cada clase copiada en el paquete de las entidades creamos un Seam Entity

Page 59: Desarrollo Web 2 con Eclipse Java..pdf

59

Le damos un nombre en Seam Entity class

Le damos una chequeada para ver un resumen de la configuración de la aplicación Seam

Page 60: Desarrollo Web 2 con Eclipse Java..pdf

60

Page 61: Desarrollo Web 2 con Eclipse Java..pdf

61

Una vista a los archivos de la aplicación generados por Seam

Copiamos desde la carpeta de temporales las clases mapeadas generadas en el paquete del

grupo –ejb

Page 62: Desarrollo Web 2 con Eclipse Java..pdf

62

Pegamos las clases correctamente mapeadas al paquete de trabajo de las entidades

Sobrescribimos todas las entidades

Page 63: Desarrollo Web 2 con Eclipse Java..pdf

63

A las clases le añadimos Id versión serial por ser serializables

Son los XHTML generados al generar Clases como New Entity Seam

Page 64: Desarrollo Web 2 con Eclipse Java..pdf

64

Vista de un formulario generado: código y componentes JSF y RichFaces

Además las clases __Home y __List basadas en las clases mapeadas

Page 65: Desarrollo Web 2 con Eclipse Java..pdf

65

En la carpeta WEB-INF se encuentran las especificaciones para la configuración de la Vista

Por ejemplo en web.xml podemos cambiar el tema del SKIN a ruby u otro

Page 66: Desarrollo Web 2 con Eclipse Java..pdf

66

En WEB-INF también podemos configurar el método de autenticacion del login-config

Ahora vamos a instalar o desplegar la aplicación sobre la que hemos estado trabajando,

exportando.

Page 67: Desarrollo Web 2 con Eclipse Java..pdf

67

Como archivo .EAR

Seleccionamos el EAR y el destino donde los desplegaremos (correrá)

Page 68: Desarrollo Web 2 con Eclipse Java..pdf

68

Direccionamos el punto de despliegue de las aplicaciones en el servidor JBoss AS.

Procesando la exportación de la aplicación

Page 69: Desarrollo Web 2 con Eclipse Java..pdf

69

Copiar el data source fuente de conexión (archivo) del workspace de trabajo al punto de

despliegue

Pegar en el punto de despliegue

Page 70: Desarrollo Web 2 con Eclipse Java..pdf

70

Como deben quedar estos dos archivos copiados solamente para su funcionamiento

Ahora vamos a correr el JBoss AS desde la consola de DOS

Page 71: Desarrollo Web 2 con Eclipse Java..pdf

71

JBoss Bootstrap Environment, Núcleo del sistema iniciado

Terminación de la subida del servidor JBoss AS: Started in mm:ss:ms

Page 72: Desarrollo Web 2 con Eclipse Java..pdf

72

Configuración del Java_Home como variable del sistema Windows XP SP2.

JAVA_HOME

Page 73: Desarrollo Web 2 con Eclipse Java..pdf

73

Ejecución de la Aplicación Web Dinámica, ingresamos la URL

Carga según las reglas de navegación home.seam

Page 74: Desarrollo Web 2 con Eclipse Java..pdf

74

Creamos algunos enlaces de prueba a los XHTML generados

Cliente, ClienteList, Producto y ProductoList

Page 75: Desarrollo Web 2 con Eclipse Java..pdf

75

Los cambios realizados luego volvemos a exportar sobrescribiendo.

El sondeo del servidor: instala, despliega, actualiza los cambios en el componente o proyecto.

Page 76: Desarrollo Web 2 con Eclipse Java..pdf

76

Volvemos a cargar la aplicación dándole la URL de la misma

Hacemos click en Cliente

Page 77: Desarrollo Web 2 con Eclipse Java..pdf

77

Hacemos click en Cliente Lista

Page 78: Desarrollo Web 2 con Eclipse Java..pdf

78

Desde el menú Ayuda seleccionar la opción Software Updates, luego click en opción Find

and Install buscar cpor nuevas características a instalar y allí añadir para actualizar el editor

xhtml de eclipse, editor UML y Generador de reportes REST el siguiente enlace.

http://download.jboss.org/jbosstools/updates/development

REST.- Generador de reportes.

UML- Herramienta para la realización de diagramas con el Lenguaje Modelado Uniforme

UML.

Actualización de

Eclipse IDE

CAPITULO

7