Transparencias Laboratorio ADOO

Transcripción

Transparencias Laboratorio ADOO
Análisis y Diseño Orientado a Objetos
Laboratorio de Prácticas – L0.1
Índice
„
„
„
„
„
„
„
Objetivos
Estructura del Laboratorio
Entorno de Desarrollo
Instalación del SW Local
Variables de Entorno
Gestión de Proyectos:
Apache Maven 2
Ejemplos del Laboratorio
„
„
„
Estructura Maven 2
Plugins
Compilación
„
IDE Eclipse (Entorno de
Desarrollo Integrado)
„
„
„
„
Servidores Web
„
„
Integración Maven 2
Ejecución/Depuración de
aplicaciones
Plugin Maven 2
Jetty / Tomcat
Recomendaciones Finales
2
Objetivos
„
„
„
Familiarizarse con el entorno y herramientas de
desarrollo de aplicaciones empresariales
Ejecutar los ejemplos según se vaya avanzando en
clase de teoría
Realización de la Práctica de la asignatura
„
„
„
Enfoque basado en iteraciones, de manera que cada
iteración incorpora más funcionalidad sobre la anterior,
hasta que en la última iteración se termina con un software
que implementa toda la funcionalidad.
En cada iteración se hace análisis, diseño, implementación y
pruebas.
Grupos: 1 ó 2 personas.
3
Estructura del Laboratorio
„
Red de 30 máquinas (ceo__)
„
„
Sistema Operativo
„
„
2GB RAM
Linux, Ubuntu 8.04
Cuentas de usuario
„
home_sic, con cuota de 500MB
4
Entorno de Desarrollo (1)
„
Navegador Firefox 3
„
Configuración del proxy para acceso a Internet: (Preferences >
General > Connection Settings)
„
„
„
Permitir acceso a localhost y a Internet:
„
„
No proxy for: localhost, 127.0.0.1
Herramientas de modelado de aplicaciones
„
MagicDraw for UML 11.0 - Professional Java Edition
„
„
proxy 3128
Marcar “Use this proxy server for all protocols”
/opt/MagicDraw_UML/bin/mduml
IDE de desarrollo
„
Eclipse 3.3 Europa Web Tools Platform 2.0
„
„
„
Con plugins para: Maven 2 / Tomcat
/opt/ISyADOO-0809/eclipse
Eclipse 3.4.1 Ganymede
„
„
Con plugins para: Maven 2
/opt/ISyADOO-0809/eclipse-3.4.1
5
Entorno de Desarrollo (2)
„
Software en /opt/ISyADOO-0809
„
„
„
„
„
jdk1.6.0_10
maven-2.0.7
eclipse (eclipse-3.3-wtp-2.0-gtk +plugin para Tomcat,
Maven)
eclipse-3.4.1 (+plugin para Maven)
/opt/ISyADOO-0809/SoftwareLocal/
„
„
apache-tomcat-6.0.14.tar.gz
maven/settings.xml
6
Instalación del Software Local y Ejemplos (1)
„
Apache Tomcat Local
cd $HOME
mkdir –p $HOME/Software
cd $HOME/Software
tar zxvf /opt/ISyADOO-0809/SoftwareLocal/apache-tomcat-6.0.14.tar.gz
„
NOTA:
„
(usuario tomcat con password tomcat y
con rol manager para poder utilizar la aplicación manager)
tomcat-users.xml
7
Instalación del Software Local y Ejemplos (2)
„
Descarga y desempaquetado de los ejemplos
http://www.fic.udc.es/files/asignaturas/39ADOO/wsjavaexamples-2.0.0-src.tar.gz
tar zxf ws-javaexamples-2.0.0-src.tar.gz
„
Descarga y desempaquetado de la mashup
http://www.fic.udc.es/files/asignaturas/39ADOO/mashup1.2.0-src.tar.gz
tar zxf mashup-1.2.0-src.tar.gz
8
Estableciendo Variables de Entorno (1)
# Programming Tools -----------------------------# J2SE.
JAVA_HOME=/opt/ISyADOO-0809/jdk1.6.0_10
export JAVA_HOME
# For convenience.
PATH=$JAVA_HOME/bin:$PATH
# Maven.
MAVEN_HOME=/opt/ISyADOO-0809/maven-2.0.7
export MAVEN_HOME
PATH=$PATH:$MAVEN_HOME/bin
# Tomcat.
CATALINA_HOME=$HOME/Software/apache-tomcat-6.0.14
export CATALINA_HOME
# Eclipse.
PATH=/opt/ISyADOO-0809/eclipse-3.4.1:$PATH
9
Estableciendo Variables de Entorno (2)
# Librerías GWT linux
GWT_HOME=/opt/ISyADOO-0809/gwt-linux-1.4.62
export GWT_HOME
„
Descarga y desempaquetado de GWT en local
http://google-web-toolkit.googlecode.com/files/gwtlinux-1.4.62.tar.gz
cd $HOME/Software
tar zxvf gwt-linux-1.4.62.tar.gz
GWT_HOME=$HOME/Software/gwt-linux-1.4.62
export GWT_HOME
„
Para hacer efectivas las variables de entorno
„
Ejecutar “. ~/.bashrc”
„
Cerrar la sesión y volver a entrar en el sistema (RECOMENDADO)
10
Gestión de Proyectos - Apache Maven 2 (1)
„
Herramienta de Gestión de proyectos Software
„
Open Source
„
„
„
„
Proyecto Apache (http://maven.apache.org)
Utilizada en otros desarrollos
Desarrollada en Java.
Otras herramientas existentes
„
Shell-based (gnumake, nmake, …)
„
„
„
Ant – enfoque basado en tareas
„
„
„
Crear el script build con las tareas a ejecutar
Ejecutar los targets
Maven1 – enfoque declarativo (más alto nivel que Ant)
„
„
„
Ejecutan comandos específicos del sistema operativo Æ (no reutilizables en
diferentes plataformas).
Formatos 'estrictos' (ej. tabuladores en Makefiles)
Describir el proyecto y configurar plugins
Ejecutar plugins existentes (goals)
Maven2 – convenciones de nombrado
„
„
„
Convenciones de nombrado
Sistema de plugins
Sistema de dependencia entre paquetes similar al del “mundo linux” de un
repositorio
11
Apache Maven 2 (2)
„
Núcleo de Maven - POM – Project Object Model
„
„
„
Contiene una descripción detallada del proyecto, incluyendo
información de versiones, gestión de configuración,
dependencias, recursos de la aplicación y de pruebas,
miembros del equipo, ...
Fichero XML situado en el directorio raíz del proyecto Æ
pom.xml
Documentación Maven 2
„
Maven en 5 minutos
„
„
http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
Maven en 30 minutos
„
http://maven.apache.org/guides/getting-started/index.html
12
Apache Maven 2 (3)
„
Estandarización de prácticas de gestión de proyectos
„
„
No se pierde tiempo reinventando estructuras de directorios,
convenciones ni personalizando scripts build.xml de ant para
cada proyecto.
Maven permite redefinir la estructura de directorios estándar
pero es conveniente respetarla por las siguientes razones:
„
„
„
El fichero pom.xml será más pequeño y sencillo.
Hace que el proyecto sea más fácil de entender y facilita el
mantenimiento futuro por otros.
Facilita la integración de plugins (asumen también la estructura
por defecto)
13
Apache Maven 2 – pom.xml (4)
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>es.udc.ws</groupId>
<artifactId>ws-javaexamples</artifactId>
<version>2.0.0</version>
</parent>
<groupId>es.udc.ws</groupId>
<artifactId>ws-util</artifactId>
<packaging>jar</packaging>
<version>2.0.0</version>
<name>WS-JavaExamples Util Subsystem</name>
<dependencies>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
</dependency>
</dependencies>
</project>
14
Apache Maven 2 – Ciclo de Vida (5)
„
Fases de construcción de un proyecto: “compile”, “test”,
“deploy”, …
„
„
En Ant se crean “targets” con esos nombres que implementen esa
semántica
En Maven 1 se invocan plugins (goals) existentes
„
„
Un lenguaje de Scripting basado en XML, Jelly, permite definir nuevos
goals o modificar el comportamiento de los existentes.
En Maven 2 se estandariza el conjunto de fases del ciclo de vida
del proyecto, y al ejecutar una de ellas se ejecutarán los plugins
correspondientes
„
Es posible implementar nuevos plugins a asociar a las diferentes fases,
como clases Java.
Para compilar: mvn compile
15
Apache Maven 2 – Dependencias (6)
„
En el fichero pom.xml se definen los recursos de los que
depende un proyecto
„
Maven automáticamente descarga los recursos de repositorios
remotos en repositorios locales
„
Local a la máquina (estructura de directorios en base al groupid y
artifactid del recurso)
„
„
„
Gestión de Dependencias Transitivas
„
„
„
Maven 1 Æ $HOME/.maven/repository
Maven 2 Æ $HOME/.m2/repository
Maven 1 obliga a que cada proyecto defina todos los jars
necesarios, directa o indirectamente por la aplicación.
Con Maven 2 sólo es necesario especificar los jars que la aplicación
necesita de forma directa; Maven 2 gestiona las dependencias de
las librerías utilizadas, para incluirlas de forma automática.
Ámbitos de Dependencias – en función de las fases (Maven 2)
„
„
„
„
compile Æ necesaria en todas las fases (valor por defecto)
provided Æ necesaria para compilar pero no para instalar (e.g.
servlet API).
runtime Æ necesaria sólo para ejecutar (e.g. JDBC drivers).
test Æ necesaria sólo para pruebas (e.g. JUnit API).
16
Apache Maven 2 – Configuración Proxy (7)
„
Dos opciones
„
Creando un fichero settings.xml en el directorio $HOME/.m2
(repositorio local) con la siguiente información (copiar fichero
/opt/ISyADOO-0809/SoftwareLocal/maven/settings.xml)
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<proxies>
<proxy>
<active/>
<protocol>http</protocol>
<port>3128</port>
<host>proxy</host>
<id/>
</proxy>
</proxies>
</settings>
„
Ejecutar Maven indicando la configuración de proxy en cada
comando como parámetros
mvn -Dhttp.proxyHost=proxy -Dhttp.proxyPort=3128
17
Ejemplos - Estructura Maven 2 (1)
*.java
pom.xml
*.properties
18
Ejemplos - Estructura Maven 2 (2)
19
Apache Maven 2 – pom.xml (3)
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/..."
xsi:schemaLocation="http://maven.apache.org/...">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>es.udc.ws</groupId>
<artifactId>ws-javaexamples</artifactId>
<version>2.0.0</version>
</parent>
<groupId>es.udc.ws</groupId>
<artifactId>ws-jaxwstutorial</artifactId>
<packaging>pom</packaging>
<version>2.0.0</version>
<name>
WS-JavaExamples JAXWSTutorial Subsystem
</name>
<modules>
<module>service</module>
<module>client</module>
</modules>
</project>
20
Ejemplos - Plugins de Maven – Assembly (4)
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>src/main/assembly/src.xml</descriptor>
</descriptors>
</configuration>
</plugin>
<assembly>
<id>src</id>
<formats>
<format>zip</format>
<format>tar.gz</format>
</formats>
<fileSets>
<fileSet>
<includes>
<include>**/*</include>
</includes>
<excludes>
<exclude>**/.project</exclude>
<exclude>**/.classpath</exclude>
<exclude>**/target/**</exclude>
<exclude>**/wsdl/**</exclude>
</excludes>
</fileSet>
<fileSet>
<includes>
<include>**/wsdl/*Impl.java</include>
</includes>
</fileSet>
</fileSets>
</assembly>
21
Ejemplos - Plugins de Maven – Jetty (5)
„
http://docs.codehaus.org/display/JETTY/Jetty+Documentation
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<configuration>
<scanIntervalSeconds>5</scanIntervalSeconds>
<!-- Log to the console. -->
<requestLog implementation="org.mortbay.jetty.NCSARequestLog">
<!-- This doesn't do anything for Jetty, but is a
workaround for a Maven bug that prevents the
requestLog from being set. -->
<append>true</append>
</requestLog>
</configuration>
</plugin>
22
Ejemplos - Compilación “ws-javaexamples” (6)
„
Descomprimir
ws-javaexamples-2.0.0-src.tar.gz
tar xzvf ws-javaexamples-2.0.0-src.tar.gz
„
„
Adaptar el fichero de configuración
ws-javaexamples2.0.0/movies/service/src/main/resources/ConfigurationParame
ters.properties
Construir los ejemplos
mv ws-javaexamples-2.0.0 ws-javaexamples
cd ws-javaexamples
mvn install
23
Ejemplos - Compilación “mashup” (7)
„
Descomprimir
mashup-1.2.0-src.tar.gz
tar xzvf mashup-1.2.0-src.tar.gz
„
Adaptar el fichero de configuración
mashup1.2.0/ui/src/main/resources/ConfigurationParameters.propert
con la implementación del servicio de
CRM Virtual
Construir la mashup
ies
„
mv mashup-1.2.0 mashup
cd mashup
mvn install
24
Ejemplos - Ejecución “JAXWSTutorial” (8)
„
Ejecutar Aplicación Web usando Jetty
cd jaxwstutorial/service
mvn jetty:run
„
Ejecución del cliente
cd jaxwstutorial/client
mvn exec:exec
„
Modificar parámetros de ejecución en el fichero
pom.xml
<arguments>
<argument>-classpath</argument>
<classpath/>
<argument>es.udc.ws.jaxwstutorial.client.</argument>
<argument>http://localhost:9090/ws-jaxwstutorialservice/services/StockQuotesService</argument>
<argument>IBM</argument>
<argument>SUN</argument>
</arguments>
25
Ejemplos - Ejecución “movies” (9)
„
Ejecutar Aplicación Web usando Jetty
cd movies/service
mvn jetty:run
„
Seleccionar el tipo de servicio (REST o JAXWS) en
../client/src/main/resources/ConfigurationParameters.proper
ties
26
Ejemplos - Ejecución “movies” (10)
„
Añadir películas al repositorio
cd movies/client
mvn exec:exec -DAdminClient
„
Modificar parámetros de ejecución en el fichero
pom.xml
<arguments>
<argument>-classpath</argument>
<classpath/>
<argument>es.udc.ws.movies.client.AdminClient</argument>
<argument>-a</argument>
<argument>src/main/sampledocs/Movie1.xml</argument>
<argument>src/main/sampledocs/Movie2.xml</argument>
<argument>src/main/sampledocs/Movie3.xml</argument>
<argument>src/main/sampledocs/Movie4.xml</argument>
</arguments>
27
Ejemplos - Ejecución “movies” (11)
„
Actualizar películas
„
Especificar identificador correcto en el fichero XML
mvn exec:exec -DAdminClient
„
Modificar parámetros de ejecución en el fichero
pom.xml
<arguments>
<argument>-classpath</argument>
<classpath/>
<argument>es.udc.ws.movies.client.AdminClient</argument>
<argument>-u</argument>
<argument>src/main/sampledocs/Movie1.xml</argument>
</arguments>
28
Ejemplos - Ejecución “movies” (12)
„
Borrar películas del repositorio (3 es el identificador
que se le asignará a una de las películas con fecha de
estreno "19 10 2001")
mvn exec:exec -DAdminClient
„
Modificar parámetros de ejecución en el fichero
pom.xml
<arguments>
<argument>-classpath</argument>
<classpath/>
<argument>es.udc.ws.movies.client.AdminClient</argument>
<argument>-r</argument>
<argument>3</argument>
</arguments>
29
Ejemplos - Ejecución “movies” (13)
„
Buscar películas en el repositorio
mvn exec:exec -DSearchClient
„
Modificar parámetros de ejecución en el fichero
pom.xml
<arguments>
<argument>-classpath</argument>
<classpath/>
<argument>es.udc.ws.movies.client.SearchClient</argument>
<argument>7</argument>
<argument>9</argument>
<argument>2001</argument>
</arguments>
30
Ejemplos - Ejecución “mashup” (14)
„
Ejecutar aplicación Web usando Jetty. Usar goal
jetty:run-exploded para que ejecute la distribución
generada en mashup/ui/target/mashup y no la
distribución fuente.
cd mashup/ui
mvn jetty:run-exploded
„
Acceder a http://localhost:8080/mashup-ui
31
Eclipse IDE (http://www.eclipse.org) (1)
Compile
Run
Debug
Plugins
- Maven
- Subclipse
- Tomcat
-…
n
o
i
it s
d
E or
t edit
c
e
j L, ...
o
r
P
SQ
,
L
s
l
o PX, XM
o
b T P, JS rer
WeTML, aJSse explo
- H tab
a
-d .
- ..
32
Eclipse - Crear Proyectos (2)
„
Creación de la configuración de proyectos para eclipse (en
función de la información del pom.xml)
„
„
„
Configuración de Eclipse para importar cada subsistema de los
ejemplos como un proyecto
Arrancar eclipse
„
„
mvn eclipse:eclipse
eclipse&
Crear un nuevo proyecto Java
„
File > New > Project >> Java / Java Project
„
„
Wizard New Java Project
Especificar nombre del proyecto (Project name): ws-util
„
„
„
„
Ponerle el mismo nombre que tiene en maven (tag <artifactId>) para que
se resuelvan bien las dependencias entre proyectos.
Seleccionar "Create project from existing source"
Especificar directorio HOME del proyecto (Browse to ws-javaexamples1.1.0/util directory)
Click sobre "Finish".
33
Eclipse - Configurar Proyectos (3)
34
Eclipse & Maven2 (4)
„
Para cargar un proyecto eclipse generado a partir de
“mvn eclipse:eclipse” es necesario definir la
variable de entorno M2_REPO para que apunte al
directorio en el que se encuentre el repositorio de
MAVEN 2
„
Windows:
„
„
Linux:
„
„
$HOME/.m2/repository en sistemas Linux.
Para añadir la variable de entorno M2_REPO a Eclipse
„
„
C:/Documents and Settings/<userName>/.m2/repository
Window > Preferences > Java > Build Path > ClassPath
variables.
Necesario añadir $JAVA_HOME/lib/tools.jar al JDK de
eclipse.
„
Window > Preferences > Java > Installed JREs > Edit
35
Eclipse & Maven2 (5)
„
Se pueden importar automáticamente todos los
subproyectos desde eclipse:
„
„
„
File > Import > General > Maven Projects
Seleccionar el directorio “ws-javaexamples”
Chequear los subproyectos de tipo “jar” o “war”
„
„
„
„
„
„
util/pom.xml
jaxwstutorial/client/pom.xml
jaxwstutorial/client/pom.xml
movies/common/pom.xml
movies/service/pom.xml
movies/client/pom.xml
36
Eclipse & Maven2 (6)
37
Eclipse - Depuración de Aplicaciones en Java (7)
„
„
„
„
La opción -g del compilador provoca que se añada
código (bytes codes) para poder seguir la traza de la
ejecución de un programa
La aplicación resultante genera eventos que pueden
ser procesados por una aplicación externa (ej. un
IDE)
Java dispone de una API estándar que permite
interceptar estos eventos y acceder al entorno de
ejecución de una aplicación compilada con la opción
-g.
Ej. Un IDE puede registrarse en la aplicación para
recibir los eventos correspondientes a los puntos de
ruptura que establezca el desarrollador, y
posteriormente permitirle al usuario visualizar el
entorno de ejecución.
38
Eclipse - Ejecución y Depuración de clases (8)
„
Ejecución de una clase
„
„
„
„
Run > Run As > Java Application > Seleccionar la clase a
ejecutar y los argumentos.
La salida se muestra en la consola de eclipse.
Se puede seleccionar una clase en la jerarquía de clases y
con el botón derecho seleccionar Run para que ejecute la
clase concreta.
Depuración
„
„
Eclipse posee una perspectiva para depuración de
aplicaciones. Permite seguir la traza de ejecución de una
aplicación, establecer puntos de interrupción y visualizar el
estado de las variables en un instante determinado.
Run > Debug As > Java Application
39
Eclipse: Plugin Maven 2 (9)
„
Creación de una nueva configuración “maven” para eclipse.
„
„
„
„
„
Run > External Tools > Open External Tools Dialog .. > Maven
Build
botón derecho + "New"
Especificar el nombre de la nueva configuración de maven.
Main: Especificar el directorio donde se encuentra el pom.xml a
utilizar
Goals: Indicar los goals a ejecutar en esta configuración.
„
„
Ejecución de una configuración “maven” para eclipse:
„
„
Run > External Tools > Nombre de Tarea a Ejecutar.
Organización de configuraciones preferidas
„
„
“Select” para elegir una de las fases del ciclo de vida.
Run > External Tools > Organize Favourites
Botón derecho sobre un pom.xml > Run As > Maven build …
40
Jetty & Maven 2
„
„
Jetty: Servidor HTTP y contenedor de servlets open source
escrito 100% en Java.
Maven 2 + plugin Jetty
„
„
Desarrollo ágil: Permite ejecutar una aplicación Web sin
empaquetarla en un fichero WAR (entiende los directorios "src" y
"target" de la distribución fuente).
El plugin puede configurarse para que detecte cambios en los
ficheros que serían empaquetados en el fichero WAR (e.g. ficheros
.class, JSPs, ficheros de configuración, etc.).
„
„
Ejecución:
„
„
„
„
cd <module>
mvn jetty:run
Cargar en el navegador http://localhost:8080/<module>
Ejemplo:
„
„
„
„
En el "pom.xml" raíz está configurado para que se compruebe cada 5
segundos.
cd jaxwstutorial/service
mvn jetty:run
http://localhost:8080/ws-jaxwstutorial-service
Para parar Jetty: CTRL-C.
41
Jetty & Maven 2 & Eclipse
„
Al modificar los fuentes desde Eclipse, éste los
recompila automáticamente y por tanto los cambios
se ven reflejados automáticamente en la aplicación
Web arrancada a través del plugin de Jetty para
Maven 2.
„
„
Si se utilizase otro IDE que no compilase automáticamente
los fuentes, habría que ejecutar “mvn compile” en el módulo
correspondiente después de realizar las modificaciones.
Depuración Web
„
Arrancando Jetty a través del plugin de Maven 2 de Eclipse.
42
Apache Tomcat
„
Arranque:
„
„
Finalización:
„
„
Copiar el fichero WAR al directorio webapps
LOGS
„
„
„
$CATALINA_HOME/bin/shutdown.sh
Instalación de Aplicaciones
„
„
$CATALINA_HOME/bin/startup.sh Æ http://localhost:8080
logs/localhost.<FECHA>.log
logs/catalina.out
DEPURACIÓN
„
mvn package + re-instalar + reiniciar
„
„
shutdown.sh + startup.sh ó
http://localhost:8080/manager/html
„
user: tomcat password: tomcat
43
Apache Tomcat + Eclipse
„
Plugin de Tomcat para eclipse.
„
„
Permite la depuración de aplicaciones Web desde eclipse
Window > Preferences > Tomcat
„
„
„
„
Tomcat version: Tomcat 6.x
Tomcat_Home: Establecer ruta a tomcat
$HOME/Software/apache-tomcat-local-6.0.14
Source Path: Chequear los proyectos que interese depurar para
que muestre la línea de ejecución actual en modo depuración
línea a línea.
Iconos de arranque/parada de Tomcat y consola del
servidor.
44
Apache Tomcat + Eclipse (2)
45
Apache Tomcat + Eclipse (3)
„
También se puede crear un servidor usando WTP
„
„
„
Window > Preferences > Server > Installed Runtimes > Add
> Apache Tomcat v6.x
Run As > Run On Server
Necesario crear el proyecto con
„
“mvn eclipse:eclipse -Dwtpversion=1.5”
46
Recomendaciones Finales
„
Directorios de logs de Tomcat
„
„
Borrado periódico
La práctica debe poder ser compilada y empaquetada
con ‘maven 2’, y ejecutada desde Tomcat, aunque se
utilicen Eclipse y Jetty como entorno de desarrollo.
47

Documentos relacionados