En el post anterior hemos añadido las dependencias que necesitamos para nuestra aplicación .Ahora simplemente vamos a construirla, para ello necesitaremos un ManagedBean que escriba mensajes a log y el fichero log4j.properties que se encarga de configurar nuestro sistema de Log. En este caso la configuración del log será muy sencilla apoyándonos en la consola. Vamos a ver donde ubicar estos dos ficheros.
El fichero de log4j.properties le hemos ubicado en la carpeta de recursos y tiene el siguiente contenido:
log4j.rootLogger=INFO, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern= %m%n
El fichero de código fuente le hemos ubicado en la carpeta src/java/main y tiene el siguiente contenido:
package com.arquitecturajava.proyecto.beans; import javax.faces.bean.ManagedBean; import org.apache.log4j.Logger; @ManagedBean(name="logManagedBean") public class LogManagedBean { public String mensaje(){ Logger milogger= Logger.getLogger(this.getClass().getPackage().getName()); milogger.info("hola desde jsf al log"); return "log"; } }
Una vez tenemos estos dos ficheros vamos a ver donde hemos ubicado los otros dos ficheros que necesitamos web.xml y Log.xhtml .
Podemos ver que dentro de la carpeta de webapp hemos alojado el fichero Log.xhtml para después crear la carpeta WEB-INF y alojar dentro de ella el fichero web.xml .El contenido de estos ficheros es el siguiente:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"> <h:head> <title>Bienvenido</title> </h:head> <h:body> <h:form> <h:commandButton value="Aceptar" action="#{logManagedBean.mensaje}" /> </h:form> </h:body> </html>
web.xml:
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="3.0"> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> </web-app>
Realizadas todas estas operaciones podemos usar mvn package y empaquetar la aplicación para desplegarla en un Tomcat.Al desplegarla en Tomcat solicitaremos la página Log.xhtml
Hecho esto pulsaremos sobre el botón y nos realizará log por consola :
Tenemos correctamente desplegada una aplicación web con estructura y dependencias de Maven en un Tomcat . Sin embargo nos queda un tema puntual . El plugin que tenemos instalado m2e no soporta una integración con el Tomcat interno del Eclipse .En el siguiente post cubriremos este problema.
Faces Servlet *.xhtml
porque me arroja error cuando lo descompromimo en .war con tomcat? ayudaaa
Pues en principio te has asegurado que dispones de la libreria de JSF en el tomcat . Tomcat no viene con ella
Me he dado cuenta que el proyecto no me deja seleccionar un targeted runtime… que puede ser… segui el tutorial paso a paso. 🙁
Has añadido correctamente los servidores? 🙂
He reinstalado los servidores y ahora el proyecto corre sin dar error… pero me muestra un html vacio (sin el boton aceptar)
agrege una etiqueta Hola solo por verificar y esta si la muestra…. he leido en varios foros que falta un archivo faces-config.xml, puede ser?
Desde ya muchas gracias, sigo probando…
Hola Cecilio En principio muchas gracias por estos posts, son muy pero que muy utiles para los principiantes como yo… 1- cuando dices “mvn package y empaquetar la aplicación para desplegarla en un Tomcat.Al desplegarla en Tomcat solicitaremos la página Log.xhtml” desde eclipse he ido a “Run as” -> “Run Configurations…” -> Maven Build -> New en Main he colocado como “base directory” ${workspace_loc/miaplicacion} y en goals package y run… me aparecen varias cosas por consola y al final “BUILD SUCCESS” pero cuando presiono el boton Run on server… no pasa nada, hay algo que estoy haciendo mal? Hecho esto… Read more »
Has instalado un servidor en el eclipse?? .En la Pestaña de Server /add new Server
(He dedicado alrededeor de 2 horas del día de hoy)
Animo maven se tarda en cogerle el tranquillo
Saludos.
He dedicado el día de hoy a leer tus artículos relacionados con maven y pues… he obtenido de ellos una buena idea de las ventajas de usar maven. Sobre todo en el manejo de las dependencias actualizadas.
Me parece excelente que hayás hecho un ejemplo, el que trataré de reproducir, pues no hay mejor forma de aprender que “learn by doing”.
gracias 🙂
Hola Cecilio, tanto tiempo, estoy retomando el tema de maven y tengo algunas dudas, primero, quiero realizar mi propio arquetipo para mis proyectos (estructuras de las carpetas y agregar otras), por ende, he buscado en internet y no he encontrado suficiente información, tu me puedes ayudar. Otra cosa, tienes un ejemplo en Eclipse de un proyecto básico realizado con maven.
Desde ya muchas gracias.
Saludos
Buenas patricio. No tengo nada así a mano igual te puede valer este :http://amap.cantabria.es/amap/bin/view/AMAP/Arquetipo que es un arquetipo del gobierno de cantabria sobre maven y estará en castellano.
Hola Cecilio, espero que estes bien, una consulta, que pasa con las librerias internas que no quiero bajar de un repositorio Maven, en ese caso, como configuro mi pom.xml
Desde ya gracias
No las incluyas en las dependencias y no te las bajara .Solo baja las que estan puestas en la lista de dependencias
Gracias por la aportación de maven, está clarificandome muchos asuntos.
Aprovecho para preguntar.
Tengo instaladas un par de versiones de Eclipse y una de Netbeans, todas con el plugin de maven2.
Sin embargo, acabo de descargar código para estudiar RichFaces, me pide que tenga instalada la versión de maven3 para conseguir que funcione.
Si instalo el plugin de maven3, ¿voy a poder seguir usando las aplicaciones que tengo desarrolladas con maven2?, ¿me va a obligar a adaptar todo el código antiguo que tengo?
Gracias
En principio deberian funcionarte sin problemas con maven3