Posts Tagged ‘JBoss Seam’

Proyecto SEAM+ADF en Eclipse

Domingo, Febrero 1st, 2009

En este documento vamos a mostrar como crear un nuevo proyecto en eclipse que haga uso de las tecnologías Hibernate, Seam, JSF y ADF. Las versiones de software utilizadas para este ejemplo son:  

  • adf-faces-10_1_3_0_4.zip
  • JBoss Seam 1.1 1.1.1 GA

El Framework Jboss Seam lo podemos descargar directamente de la página oficial:
http://www.jboss.com/products/seam

(más…)

Captcha en Seam y ADF

Domingo, Febrero 1st, 2009

Muchas veces, queremos que el usuario que se vaya a registrar en nuestra página, meta un código de validación, con el cual, protejamos nuestro sitio, de posibles ataques al mismo.

Una solución bastante efectiva es hacer uso de las librerías Captcha con la cual generabamos una imagen con un código que obligaba al usuario a introducirlo. En la nueva versión de JBoss Seam (1.1.6) esta librería viene integrada en el propio framework, permitiéndonos de una manera bastante sencilla integrarlo en nuestros proyectos.

(más…)

Proyecto web Seam

Domingo, Febrero 1st, 2009

Este tutorial cubre los primeros pasos necesarios para configurar la base de Seam en su versión 1.2.0.PATCH1 y para un proyecto Web Dinámico de Eclipse, el resto de librerías son adicciones para mayor funcionalidad. En primer lugar tras descargar el paquete de JBoss y descomprimirlo copiaremos los jars siguientes a nuestro WEB-INF/lib:

  • JBoss Seam Framework
    • jboss-seam.jar
  • Utilidades Apache
    • commons-lang-2.1.jar
    • commons-beanutils-1.7.0.jar
    • commons-codec-1.3.jar
    • commons-collections-3.1.jar
    • commons-digester-1.6.jar
    • commons-el-1.0.jar
  • MyFaces y JSTL Vista
    • myfaces-impl-1.1.4.jar
    • myfaces-api-1.1.4.jar
    • jstl-1.1.0.jar
  • BPM Eficiencia y Velocidad en Procesos de Negocio
    • jbpm-3.1.4.jar
  • Persistencia de Datos
    • hibernate-all.jar
  • Librerías de Terceros
    • thirdparty-all.jar

Otras librerias que no se deben usar si no se hace uso de EJB3 ralentiza la aplicación.

  • Implementaciones EJB
    • jboss-ejb3-all.jar

Una vez copiados todos los jars necesarios creamos un fichero seam.properties bajo nuestro src. Ya que si este fichero aunque vacío si no se crea durante la ejecución de nuestro proyecto Seam no cargara nuestros beans.

Llegados a este punto, pasamos a preparar los ficheros de configuración que irán bajo WebContent/WEB-INF, en primer lugar crearemos nuestro fichero faces-config.xml. Este fichero es el encargado de configurar quien gestiona el ciclo de vida de los componentes JSF (si tienes alguna duda al respecto visita alguno de los demas tutoriales de trinidadytobago.org) y la asociación de nombres a nuestras templates jsp.

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE faces-config 

    PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"

    "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">

<faces-config>

	<lifecycle>

		<phase-listener>

			org.jboss.seam.jsf.SeamPhaseListener

		</phase-listener>

	</lifecycle>

</faces-config>

Como se observa lo único necesario para configurar minimamente es el listener encargado del ciclo de vida JSF. Así que en nuestro caso JSF delega el control del ciclo de vida de sus componentes sobre el listener de fases de Seam.

Ya configurado nuestro faces-config.xml creamos un fichero componentes.xml, ¡vacio!. Con esta estrutura:

<?xml version="1.0" encoding="UTF-8"?>

<components xmlns="http://jboss.com/products/seam/components"

	xmlns:core="http://jboss.com/products/seam/core"

	xmlns:drools="http://jboss.com/products/seam/drools"

	xmlns:security="http://jboss.com/products/seam/security"

	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

	xsi:schemaLocation="http://jboss.com/products/seam/core http://jboss.com/products/seam/core-1.1.xsd 

                 http://jboss.com/products/seam/drools http://jboss.com/products/seam/drools-1.1.xsd

                 http://jboss.com/products/seam/security http://jboss.com/products/seam/security-1.1.xsd

                 http://jboss.com/products/seam/components http://jboss.com/products/seam/components-1.1.xsd">

</components>

Este fichero es el encargado de controlar y gestionar la logica y componentes EJB que agregaremos a Seam. Recordemos que aunque este tutorial de configuración solo se enfoca a montar Seam como proyecto Web, el fin de Seam aunque no se haga uso de ellos es trabajar con EJB’s.

Solo nos queda crear nuestro fichero web.xml que contrendra las siguientes lineas:

<?xml version="1.0" encoding="UTF-8"?>

<web-app id="WebApp_ID" version="2.4"

	xmlns="http://java.sun.com/xml/ns/j2ee"

	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

	<display-name>tt</display-name>

	<!-- 1 -->

	<listener>

		<listener-class>

			org.jboss.seam.servlet.SeamListener

		</listener-class>

	</listener>

	<!-- 2 -->

	<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>*.seam</url-pattern>

	</servlet-mapping>

	<!-- 3 -->

	<welcome-file-list>

		<welcome-file>index.html</welcome-file>

	</welcome-file-list>

</web-app>

Viendo esta configuración vamos a comentar paso a paso que es realmente lo que estamos viendo en el:

  1. org.jboss.seam.servlet.SeamListener: Este es el listener general de Seam y es totalmente obligatorio, ya que es el encargado de gestionar todas las peticiones.
  2. Faces Servlet: Este es el servlet para las componentes JSF. El filtro de este tambien apunta a *.seam esto implica que todas las peticiones serán reenviadas a un bean con la extensión *.seam y como ya vimos en nuestro faces-config.xml estos beans serán los que nosotros creemos para Seam.
  3. Finalmente los ficheros de bienvenida.

Con esto ya tendríamos configurado totalmente nuestro proyecto base. Solo nos queda arrancar Jboss con un despliegue de nuestro proyecto y ver que realmente no nos devuelve ninguna excepción.