tel./fax: +34 91 675 33 06 [email protected] - www ... · nuevo ¿quieres saber cuánto ganas en...

7
Avenida de Castilla,1 - Edificio Best Point - Oficina 21B 28830 San Fernando de Henares (Madrid) tel./fax: +34 91 675 33 06 [email protected] - www.autentia.com Somos su empresa de Soporte a Desarrollo Informático. Ese apoyo que siempre quiso tener... 1. Desarrollo de componentes y proyectos a medida Tecnología Desarrollo Sistemas Gran Empresa Producción autentia Certificación o Pruebas Verificación previa RFP Concurso Consultora 1 Consultora 2 Consultora 3 Equipo propio desarrollo Piloto 3a 3b 1. Definición de frameworks corporativos. 2. Transferencia de conocimiento de nuevas arquitecturas. 3. Soporte al arranque de proyectos. 4. Auditoría preventiva periódica de calidad. 5. Revisión previa a la certificación de proyectos. 6. Extensión de capacidad de equipos de calidad. 7. Identificación de problemas en producción. 3. Arranque de proyectos basados en nuevas tecnologías ¿Qué ofrece Autentia Real Business Solutions S.L? Para más información visítenos en: www.autentia.com Compartimos nuestro conociemiento en: www.adictosaltrabajo.com Gestor portales (Liferay) Gestor de contenidos (Alfresco) Aplicaciones híbridas Tareas programadas (Quartz) Gestor documental (Alfresco) Inversión de control (Spring) BPM (jBPM o Bonita) Generación de informes (JasperReport) ESB (Open ESB) Control de autenticación y acceso (Spring Security) UDDI Web Services Rest Services Social SSO SSO (Cas) Spring MVC, JSF-PrimeFaces /RichFaces, HTML5, CSS3, JavaScript-jQuery JPA-Hibernate, MyBatis Motor de búsqueda empresarial (Solr) ETL (Talend) Dirección de Proyectos Informáticos. Metodologías ágiles Patrones de diseño TDD 2. Auditoría de código y recomendaciones de mejora 4. Cursos de formación (impartidos por desarrolladores en activo)

Upload: ngokiet

Post on 27-Sep-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Avenida de Castilla,1 - Edificio Best Point - Oficina 21B28830 San Fernando de Henares (Madrid)

tel./fax: +34 91 675 33 [email protected] - www.autentia.com

Somos su empresa de Soporte a Desarrollo Informático.Ese apoyo que siempre quiso tener...

1. Desarrollo de componentes y proyectos a medida

TecnologíaDesarrolloSistemas

Gran Empresa

Producción

autentia

Certificacióno Pruebas

Verificación previa

RFP Concurso

Consultora 1

Consultora 2

Consultora 3

Equipo propio desarrolloPiloto

3a

3b

1. Definición de frameworks corporativos.2. Transferencia de conocimiento de nuevas arquitecturas.3. Soporte al arranque de proyectos.4. Auditoría preventiva periódica de calidad.5. Revisión previa a la certificación de proyectos.6. Extensión de capacidad de equipos de calidad.7. Identificación de problemas en producción.

3. Arranque de proyectos basados en nuevas tecnologías

¿Qué ofrece Autentia Real Business Solutions S.L?

Para más información visítenos en: www.autentia.com

Compartimos nuestro conociemiento en: www.adictosaltrabajo.com

Gestor portales (Liferay)Gestor de contenidos (Alfresco)Aplicaciones híbridas

Tareas programadas (Quartz)Gestor documental (Alfresco)Inversión de control (Spring)

BPM (jBPM o Bonita)Generación de informes (JasperReport)ESB (Open ESB)

Control de autenticación y acceso (Spring Security)UDDIWeb ServicesRest ServicesSocial SSOSSO (Cas)

Spring MVC, JSF-PrimeFaces /RichFaces, HTML5, CSS3, JavaScript-jQuery

JPA-Hibernate, MyBatisMotor de búsqueda empresarial (Solr)ETL (Talend)

Dirección de Proyectos Informáticos.Metodologías ágilesPatrones de diseñoTDD

2. Auditoría de código y recomendaciones de mejora

4. Cursos de formación (impartidos por desarrolladores en activo)

Últimos tutoriales

2008-12-01

Weblets y como servir recursos que están en elCLASSPATH

2008-12-03

Edición de la Wikipedia ysubida de Imágenes

2008-12-03

ETL con Talend

2008-12-01

JavaMail: Envía e-mails desdetu proyecto Java

2008-11-26

El cálculo de la liquidación pordespido: el finiquito.

2008-11-24

Integración de Spring con elenvío de emails

2008-11-17

Introducción a JTrac

2008-11-17

Cómo crear carruseles condetalle con jcarrusel y jtip

2008-11-08

JPivot, como crear otro UI para especificar las dimensiones del cubo OLAP

2008-11-05

Cómo crear ventanas modales

Tutorial desarrollado por

Alejandro Pérez García

Alejandro es socio fundadorde Autentia y nuestroexperto en J2EE, Linux yoptimización de aplicacionesempresariales.

Ingeniero en Informática

Si te gusta lo que ves, puedescontratarle para impartir cursospresenciales en tu empresa opara ayudarte en proyectos(Madrid). Puedes encontrarmeen Autentia

Catálogo de servicios de Autentia

Descargar (6,2 MB)

Descargar en versión comic (17 MB)

AdictosAlTrabajo.com es el Web de difusión de conocimiento deAutentia.

Catálogo de cursos

NUEVO ¿Quieres saber cuánto ganas en relación almercado? pincha aquí...

Ver cursos que ofrece Autentia Descargar comics en PDF y alta resolución

[¡NUEVO!] 2008-12-01 2008-11-172008-09-01

2008-07-31

Estamos escribiendo un libro sobre la profesión informática y estas viñetas formarán parte de él. Puedes opinar en la seccion comic.

Descargar este documento en formato PDF: weblets.pdf

Fecha de creación del tutorial: 2008-12-01

Weblets y como servir recursos que están en el CLASSPATHCreación: 01-12-2008

índice de contenidos

1. Introducción2. Entorno3. Configuración de Maven4. Configuración de Weblets en el proyecto web5. Configurando de Weblets en el módulo6. Invocando los recursos en nuestras páginas7. Conclusiones8. Sobre el autor

1. Introducción

A menudo nos planteamos el realizar componentes web (llamaremos componente a una pequeña pieza visual que queremosreutilizar en varios sitios o proyectos, como una tabla con paginación incluida, un menú desplegable a "nuestra manera", un campode entrada con validaciones automáticas incorporadas, ...). Esto lo podemos llegar a realizar desde simples inclusiones de JSP, orealizando librerías de etiquetas, hasta la realización de componentes propios con JSF o Facelets.

Inicio Quienes somos Tutoriales Formación Colabora Comunidad Comic Charlas Más

Catálogo deservicios

Autentia (PDF6,2MB)

En formato comic...

Web

www.adictosaltrabajo.com

Buscar

Hosting patrocinado por

con modalbox

Últimas ofertas deempleo

2008-11-27

Comercial - Ventas - ALICANTE.

2008-10-30

Comercial - Ventas - BARCELONA.

2008-10-30

T. Información - Analista /Programador - BARCELONA.

2008-10-27

T. Información - Analista /Programador - CIUDAD REAL.

2008-10-03

Marketing - Experto en Marketing - MADRID.

El problema que nos encontramos a menudo en cualquier de estos casos es que junto al componente necesitamos algunos recursosadicionales, como imágenes, hojas de estilo (CSS), o ficheros JavaScript; y que para poder "servir" al cliente todos estos recursos,necesitamos situarlos en el directorio donde están el resto de nuestros HTML. Esto es un problema si queremos reutilizar estoscomponentes entre proyectos, ya que no podemos empaquetarlos en un JAR y redistribuirlos como cualquier otra librería, ya quetenemos que hacer "copy/paste" de todos esos recursos adicionales.

Weblets (https://weblets.dev.java.net/) es un proyecto que pretende solucionar este problema, y la verdad es que lo hacebastante bien, de manera que puede convertirse en un estándar.

Ya existen otras soluciones, como hacernos un Servlet para servir recursos que se encuentren dentro del CLASSPATH. Una soluciónde este estilo la propone Roger Keays en http://www.ilikespam.com/blog/packaging-your-facelets-in-jars (por cierto, en esteartículo es especialmente interesante el ResourceResolver de Facelets para buscar también las plantillas de Facelets en el

CLASSPATH).

También se supone que JSF 2 tendrá soporte para hacer este tipo de cosas.

Lo bueno que tiene Weblets sobre estas dos aproximaciones:

Weblets funciona usemos o no usemos JSF. Además JSF 2 todavía no ha salido ;)

Weblets ya está hecho, así que no nos tenemos que hacer y mantener nosotros el Servlet.

Weblets da soporte para servir recursos que estén dentro del JAR, o accesibles desde una URL o incluso en la propiaaplicación web, y todo esto es tema de configuración. Es decir Weblets proporciona una interfaz y varias implementaciones.La más interesante puede resultar la que busca los recursos en el CLASSPATH, pero podríamos hacernos incluso nuestraspropias implementaciones.

Weblets puede servir recursos de módulos diferentes. Esto se consigue dando nombres diferentes a cada módulo.

Weblets hace especial hincapié en que el navegador cachee los recursos servidos, de esta forma no se tendrán que servir ensucesivas peticiones. Además esto se puede controlar, de forma que en desarrollo siempre se devuelva el recurso, o inclusose puede especificar un timeout concreto para la cache.

Weblets se encuentra en el repositorio de Maven de java.net (http://download.java.net/maven/2/) de forma que es muycómodo integrarlo en nuestros proyectos como una dependencia.

2. Entorno

El tutorial está escrito usando el siguiente entorno:

Hardware: Portátil Asus G1 (Core 2 Duo a 2.1 GHz, 2048 MB RAM, 120 GB HD).

Nvidia GEFORCE GO 7700

Sistema Operativo: GNU / Linux, Debian (unstable), Kernel 2.6.26, KDE 3.5

Java Sun 1.6.0_10

Maven 2.0.9

Weblets 1.1

3. Configuración de Maven

Para poder usar Weblets, tendremos que añadir al pom.xml de nuestro proyecto:

Podemos ver como damos de alta el repositorio de java.net.

Atención !!! esta configuración sólo es necesaria en el proyecto web. Es decir supongamos que tenemos un proyecto webautentia-weblets-web y un proyecto jar autentia-weblets-module . Esta configuración sólo estará en autentia-weblets-webque es el que sirve los recursos, aunque los recursos que se están sirviendo estarán dentro del jar generado por el proyectoautentia-weblets-module .

view plain print ?

<repositories> 01. <repository> 02. <id>maven2-repository.dev.java.net </id> 03. <name>Java.net Repository for Maven </name> 04. <url>http://download.java.net/maven/2/ </url> 05. <layout>default </layout> 06. </repository> 07.</repositories> 08.<dependencies> 09. <dependency> 10. <groupId>net.java.dev.weblets </groupId> 11. <artifactId>weblets-api </artifactId> 12. <version>1.1 </version> 13. </dependency> 14. <dependency> 15. <groupId>net.java.dev.weblets </groupId> 16. <artifactId>weblets-impl </artifactId> 17. <version>1.1 </version> 18. </dependency> 19.</dependencies> 20.

Anuncios Google

4. Configuración de Weblets en el proyecto web

En el ejemplo estamos usando Weblets con JSF. Para este caso tendremos que añadir lo siguiente en el fichero web.xml :

Si os fijáis esta es simplemente la configuración habitual de JSF, y es posible que ya la tengáis en el proyecto, así que no tendréisque hacer nada más, ya que Weblets se integra con el ciclo de vida de JSF.

Cosas a tener en cuanta:

Lo importante aquí es el url-pattern , es muy importante que sea en base a un directorio. Es decir, un patrón del estilo

*.jsf no sería válido. Esto es una limitación de Weblets, así que habrá que aprender a vivir con ello ;) Lo que si podemos

hacer es tener más de un url-pattern : uno para Weblets y otro para nuestras "cositas" con el *.jsf ).

También tenemos que tener presente que si estamos usando, por ejemplo, ICEfaces, tendremos dado de alta el Servlet deICEfaces, y puede que no tengamos añadido el Servlet estándar de JSF. En este caso, si será necesario añadir laconfiguración que hemos puesto arriba. Es decir Weblets se "engancha" al Servlet estandar de JSF, pero no al de ICEfaces.

5. Configurando de Weblets en el módulo

El módulo es el proyecto que genera el JAR donde dentro están los recursos que se tienen que servir.

En el jar tendremos que tener el fichero META-INF/weblets-config.xml (podemos tener más de un fichero de configuración

siempre y cuando weblets-config sea parta del nombre del fichero). Este fichero tendrá el siguiente aspecto:

Examinemos cada uno de los elementos del fichero de configuración:

weblet-name (línea 4): es nombre del "modulo", cuando queramos acceder a recursos dentro de este JAR tendremos que

usar este identificador.

weblet-class (línea 5): clase que buscará el recuro solicitado. En este caso la clase PackageWeblet buscará el recurso en

el CLASSPATH.

weblet-version (línea 6): indica la versión de los recursos. Este valor tiene especial importancia a la hora de que el

navegador cachee los recursos servidos por Weblets. Si no existe el elemento, o si su valor contiene la cadena "SNAPSHOT", el recurso no se cacheará por el navegador. Esto está pensado para usar durante el desarrollo donde es posible que elrecurso cambie frecuentemente.Si no se cumple ninguna de estas condiciones (el valor es una cadena del estilo "1.0 "), el recurso será cacheado por el

navegador, de forma que sólo se servirá la primera vez, con el ahorro de ancho de banda que esto supone. Weblets volveráa servir el recurso si ve que este valor ha cambiado.

init-param (líneas de la 7 a la 10): esto son parámetros de la clase definida con weblet-class . En este caso estamos

indicando el nombre del paquete donde están los recursos que tiene que servir (otro ejemplo podría ser"com.autentia.resources.html "). Esto sirve como medida de seguridad ya que nos garantiza que sólo se servirán los

recursos que se encuentran dentro de ese paquete (así nunca se servirá un .class o cualquier otro recurso que no nosinterese).Evidentemente tendremos que haber colocado nuestros recursos (png, css, js, ...) dentro de este paquete.

weblet-mapping (líneas de la 12 a la 15): tenemos que indicar el id del weblet (el que se definió con el elemento

weblet-name ) y el patrón de URL que hará que se intente servir recursos con este módulo. Weblets se encargará de generar

estas URLs, como veremos un poco más adelante.

En un mismo fichero podemos definir más de un elemento weblet . También podemos indicar los MIME-TYPES, e incluso indicar quetipos de recursos son lo que se pueden servir (esto sería una medida de seguridad adicional). Para ver más sobre estasconfiguraciones acudir a la página de Weblets.

view plain print ?

<servlet> 01. <servlet-name>Faces Servlet </servlet-name> 02. <servlet-class>javax.faces.webapp.FacesServlet </servlet-class> 03. <load-on-startup>1</load-on-startup> 04.</servlet> 05.<servlet-mapping> 06. <servlet-name>Faces Servlet </servlet-name> 07. <url-pattern>/faces/* </url-pattern> 08.</servlet-mapping> 09.

view plain print ?

<?xml version ="1.0" encoding ="UTF-8" ?> 01.<weblets-config xmlns ="http://weblets.dev.java.net/config" > 02. <weblet> 03. <weblet-name>com.autentia.tutorial </weblet-name> 04. <weblet-class>net.java.dev.weblets.packaged.PackagedWeblet </weblet-class> 05. <weblet-version>1.0-SNAPSHOT</weblet-version> 06. <init-param> 07. <param-name>package </param-name> 08. <param-value>resources </param-value> 09. </init-param> 10. </weblet> 11. <weblet-mapping> 12. <weblet-name>com.autentia.tutorial </weblet-name> 13. <url-pattern>/tutorial/* </url-pattern> 14. </weblet-mapping> 15.</weblets-config> 16.

6. Invocando los recursos en nuestras páginas

Ya esta todo configurado, ahora sólo queda "usar" esos recursos que se encuentran dentro del JAR. Para ello en nuestras páginas(JSP, JSPX, ...) podemos poner (acordaros que estamos viendo un ejemplo para JSF + Facelets + ICEfaces, para ver másposibilidades acudir a la página de Weblets):

#{weblet.resource['nombre_del_weblet']['ruta_del_re curso']}

#{weblet.url['nombre_del_weblet']['ruta_del_recurso ']}

La diferencia entre resource y url es que el primero genera una URL relativa al contexto donde estamos, mientras que el segundo

genera una URL absoluta.

Veamos una pagina de ejemplo:

Se ve como en las líneas 11, 17 y 20 se usa weblet.resource , indicando que queremos sacar el recurso del módulo

"com.autentia.tutorial " (es el nombre que indicábamos en la línea 4 del ejemplo del punto 5) y a continuación el nombre del

recurso.

Esto nos generará URL del estilo:

/autentia-weblets-web/ faces/weblets/ tutorial$1.0-SNAPSHOT/css/application.css

/autentia-weblets-web/ faces/weblets/ tutorial$1.0-SNAPSHOT/img/logoAdictosAlTrabajo.png

/autentia-weblets-web/ faces/weblets/ tutorial$1.0-SNAPSHOT/img/poweredByAutentia_100x30x72dpi.png

En las URL generadas podemos ver como aparece "/faces/" de forma que lo procesará el Servlet estándar de JSF. También vemoscomo aparece "tutorial$1.0-SNAPSHOT" que es lo que habíamos configurado en el punto 5, y a continuación vemos la ruta alrecurso.

Obtendremos algo del estilo:

Donde tanto la css como las dos imágenes se están sacando del JAR del proyecto autentia-weblets-module .

7. Conclusiones

Es importante estar atentos a las nuevas librerías y estándares (sean de facto o de ley) ya que nos pueden ahorrar trabajo y facilitarla vida. En esta ocasión hemos visto como podemos llegar a crear componentes web con recursos adicionales. Empaquetar estoscomponentes en un JAR y distribuirlos como cualquier otra librería.

Aquí os dejo todo el proyecto de Maven para que podáis ver el código completo y podáis jugar con él.

view plain print ?

<?xml version ="1.0" encoding ="UTF-8" ?> 01.<html xmlns ="http://www.w3.org/1999/xhtml" xmlns:ui ="http://java.sun.com/jsf/facelets" 02. xmlns:h ="http://java.sun.com/jsf/html" xmlns:f ="http://java.sun.com/jsf/core" xmlns:c ="http://java.sun.com/jstl/core"03. xmlns:ice ="http://www.icesoft.com/icefaces/component" xmlns:weblet ="http://weblets.dev.java.net/tags_jsp2"04. 05.<ice:outputDeclaration doctypeRoot ="HTML" doctypePublic ="-//W3C//DTD XHTML 1.0 Transitional//EN"06. doctypeSystem ="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitiona l.dtd" /> 07.<head> 08. <meta http-equiv ="Content-type" content ="text/html; charset=utf-8" /> 09. <ice:outputStyle href ="/xmlhttp/css/rime/rime.css" /> 10. <ice:outputStyle href ="#{weblet.resource['com.autentia.tutorial']['/css/a pplication.css']}"11. <title>Tutorial Weblets </title> 12.</head> 13.<body> 14. <ice:panelGrid columns ="2" > 15. <ice:outputText value ="Adictos al Trabajo" /> 16. <ice:graphicImage value ="#{weblet.resource['com.autentia.tutorial']['/img/l ogoAdictosAlTrabajo.png']}"17. 18. <ice:outputText value ="Powered by Autentia" /> 19. <ice:graphicImage value ="#{weblet.resource['com.autentia.tutorial']['/img/p oweredByAutentia_100x30x72dpi.png']}"20. </ice:panelGrid> 21.</body> 22.</html> 23.

8. Sobre el autor

Alejandro Pérez García, Ingeniero en Informática (especialidad de Ingeniería del Software)

Socio fundador de Autentia (Formación, Consultoría, Desarrollo de sistemas transaccionales)

mailto:[email protected]

Autentia Real Business Solutions S.L. - "Soporte a Desarrollo"

http://www.autentia.com

Puedes opinar sobre este tutorial haciendo clic aquí.Puedes firmar en nuestro libro de visitas haciendo clic aquí.Puedes asociarte al grupo AdictosAlTrabajo en XING haciendo clic aquí.

Añadir a favoritos Technorati.

Esta obra está licenciada bajo licencia Creative Commons de Reconocimiento-No comercial-Sin obrasderivadas 2.5

Recuerda

Autentia te regala la mayoría del conocimiento aquí compartido (Ver todos los tutoriales). Somos expertos en: J2EE, Struts, JSF, C++, OOP, UML, UP, Patrones dediseño ... y muchas otras cosas.

¿Nos vas a tener en cuenta cuando necesites consultoría oformación en tu empresa?, ¿Vas a ser tan generoso con nosotroscomo lo tratamos de ser con vosotros?

Somos pocos, somos buenos, estamos motivados y nos gusta lo que hacemos ...

Autentia = Soporte a Desarrollo & Formación.

[email protected]

Servicio de notificaciones:

Si deseas que te enviemos un correo electrónico cuando introduzcamos nuevos tutoriales.

Formulario de subcripción a novedades:

E-mail Aceptar

Nota:

Los tutoriales mostrados en este Web tienen como objetivo la difusión del conocimiento. Los contenidos y comentarios de lostutoriales son responsabilidad de sus respectivos autores. En algún caso se puede hacer referencia a marcas o nombres cuyapropiedad y derechos es de sus respectivos dueños. Si algún afectado desea que incorporemos alguna reseña específica, no tienemás que solicitarlo. Si alguien encuentra algún problema con la información publicada en este Web, rogamos que informe aladministrador [email protected] para su resolución.

Tutoriales recomendados

Nombre Resumen Fecha Visitas pdf

Proyecto con JSF Java Server Faces Myfaces, Maven y Eclipse: Hibernate (segunda parte)

En este artículo se va a continuar con el desarrollo de laaplicación Myfaces JSF con Maven multimódulo que comenzamosen un tutorial anterior. Además también se tratará de laintegración de Hibernate con las aplicaciones.

2007-07-31 6313 pdf

Proyecto con JSF Java Server Faces Myfaces, Maven y Eclipse: aplicación multimódulo

En este artículo se va a abordar el desarrollo de una aplicaciónMyfaces JSF con Maven que sea multimódulo.

2007-07-11 5078 pdf

Creación e invocación deWebservices por SSL

En este tutorial se pretende enseñar a desplegar un webserviceusando SSL y a invocarlo correctamente

2006-11-29 11623 pdf

Metro: pila de webservices de Sun.

NE este tutorial Germán nos enseñara qué es y cómo usar Metro:pila de webservices de Sun en nuestras aplicaciones

2008-04-05 2582 pdf

WebServices con Axis y JBossEn este tutorial os mostramos como realizar servicios web utilizando Axis y el contenedor de aplicaciones web JBoss

2006-04-03 20017 pdf

Metro: pila de webservices de Sun. Integración con Maven 2

En este tutorial Germán nos enseñara a integrar la generación dewebservices con Metro y Maven2.

2008-04-05 1600 pdf

Integración de JSF 1.2, Faceletse ICEFaces en Tomcat 6

Integración de JSF 1.2, Facelets e ICEFaces en Tomcat 6 2007-12-10 5835 pdf

Generador automático deWebservices

Os mostramos como crear un servicio Web a partir de una clases, gracias a generadores automáticos de código y NetBeans

2003-10-16 38819 pdf

Proyecto con JSF Java Server Faces Myfaces, Maven y Eclipse: pruebas con Jetty y Tomcat

Este es el tercer tutorial de la "saga" de Maven, JSF y Eclipse, donde se va a realizar las pruebas de la aplicación sobre dosservidores web diferentes: el servidor Jetty, integrado en Maven, y el servidor Tomcat, que lo integraremos con Eclipse.

2007-09-10 6535 pdf

Arquetipos de maven: cómocrear, distribuir y generar proyectos con JSF e ICEfaces, JBoss y EJB3

Maven permite la creación de arquetipos de manera muy flexible.En este tutorial veremos cómo crear y distribuir uno que integrelas tecnologías JSF e IceFaces, JBoss y EJB3

2008-06-09 2442 pdf