<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux, Java y programación &#187; j2ee</title>
	<atom:link href="http://casidiablo.net/tag/j2ee/feed/" rel="self" type="application/rss+xml" />
	<link>http://casidiablo.net</link>
	<description>Blog de Java, Programación y Linux</description>
	<lastBuildDate>Mon, 08 Mar 2010 03:41:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>JBoss Seam Framework + Laboratorio de iniciación</title>
		<link>http://casidiablo.net/jboss-seam-framework-introduccion/</link>
		<comments>http://casidiablo.net/jboss-seam-framework-introduccion/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 07:14:03 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[artículos]]></category>
		<category><![CDATA[ejercicios en java]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[bpm]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[ejb3]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[j2ee]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[jsf]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[seam]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3422</guid>
		<description><![CDATA[

Seam es un proyecto desarrollado por JBoss, cuyo lider es Gavin King. Es un completo framework para la creación de aplicaciones web 2.0 que unifica varias tecnologías como AJAX, Enterprise Java Beans (EJB3), Java Server Faces (JSF), Java Portlets and Business Process Management (BPM), Hibernate, y mucho más.
De la Wikipedia:
Seam introduce el concepto de contextos. [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%3A%2F%2Fcasidiablo.net%2Fjboss-seam-framework-introduccion%2F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22JBoss%20Seam%20Framework%20%2B%20Laboratorio%20de%20iniciaci%C3%B3n%09%22%20%7D);"></div>
<p style="text-align: justify;"><a href="http://www.seamframework.org/">Seam</a> es un proyecto desarrollado por JBoss, cuyo lider es Gavin King. Es un completo framework para la creación de aplicaciones web 2.0 que unifica varias tecnologías como AJAX, Enterprise Java Beans (EJB3), Java Server Faces (JSF), Java Portlets and Business Process Management (BPM), Hibernate, y mucho más.</p>
<p style="text-align: justify;">De la Wikipedia:</p>
<p style="text-align: justify; padding-left: 30px;"><em>Seam introduce el concepto de contextos. Cada componente de Seam existe dentro de un contexto. El contexto conversacional por ejemplo captura todas las acciones del usuario hasta que éste sale del sistema o cierra el navegador &#8211; inclusive puede llevar un control de múltiples pestañas y mantiene un comportamiento consistente cuando se usa el botón de regresar de el navegador.</em></p>
<p style="text-align: justify; padding-left: 30px;"><em>Tú puedes automáticamente generar una aplicación web de altas, bajas, cambio y modificaciones a partir de una base de datos existente utilizando una herramienta de linea de comandos llamada seam-gen incluida con el framework.</em></p>
<p style="text-align: justify; padding-left: 30px;"><em>El desarrollo WYSIWYG es facilitado a través del uso de las JBoss Tools, que es un conjunto de plug-ins diseñados para el entorno integrado de desarrollo Eclipse. Seam puede ser integrado con las bibliotecas de componentes JSF JBoss RichFaces o con ICEsoft ICEFaces. Ambas bibliotecas poseen soporte para AJAX.</em></p>
<p style="text-align: justify;">Actualmente soporta varios contenedores de aplicaciones como JBoss 4 o 5, IBM Websphere, BEA WebLogic, Oracle OC4J y por supuesto Apache Tomcat.</p>
<p style="text-align: justify;">Puedes encontrar ejemplos de proyectos creados con seam y listos para ejecutar dentro del directorio examples de la aplicación.</p>
<p style="text-align: justify;"><strong>Referencias y documentación:</strong></p>
<ul>
<li><a href="http://www.seamframework.org/Home">Página oficial de Seam Framework</a></li>
<li><a href="http://www.jboss.com/products/seam/">Página del producto JBoss Seam</a></li>
<li><a href="http://docs.jboss.com/seam/latest/reference/en-US/html/index.html">Documentación Online mantenida por la comunidad</a></li>
<li><a href="http://docs.jboss.com/seam/">Documentación de JBoss Seam</a></li>
<li><a href="http://www.infoq.com/articles/jboss-seam">Introduction to JBoss Seam [artículo en InfoQ]</a></li>
</ul>
<p style="text-align: justify;">
<h3>Laboratorio de JBoss Seam Framework</h3>
</p>
<p style="text-align: justify;">Con el siguiente laboratorio se pretende dar un punto de partida a la creación de aplicaciones usando Seam. El laboratorio está enfocado al desarrollo sobre Eclipse, que es el IDE que recomiendo para trabajar con Seam.</p>
<p style="text-align: justify;">Este laboratorio está enfocado al uso de Seam para JBoss, aunque con pocas o sin modificaciones puede funcionar en Apache Tomcat. Recordemos además que Seam también soporta los contenedores IBM Websphere, BEA WebLogic y Oracle OC4J.</p>
<p style="text-align: justify;">Nota: todas las pruebas se realizaron sobre Linux (<a href="http://casidiablo.net/category/gentoo/">Gentoo</a> amd64) y <a href="http://opensolaris.org">OpenSolaris</a> 9.6. Sin embargo, hacerlo en Windows con los mismos pasos no debería presentar problemas; solo se debe tener cuidado con las rutas donde se guarden los archivos usados.</p>
<p style="text-align: justify;">
<h3>Prerequisitos</h3>
</p>
<ul>
<li><span style="background-color: #ffffff;"><a href="http://eclipse.org">Eclipse 3.4 o 3.5</a></span></li>
<li><span style="background-color: #ffffff;"><a href="http://seamframework.org/Download">La última versión de JBoss Seam</a> (la más reciente al momento de escribir este documento es la 2.2.0).</span></li>
<li><span style="background-color: #ffffff;"><a href="http://labs.jboss.com/jbossas/downloads/">La última versión de Jboss Server</a> (la más reciente al momento de escribir este documento es la 5.1.0).</span></li>
<li><span style="background-color: #ffffff;">Un gestor de bases de datos. En mi caso he usado MySQL, aunque hay soporte para muchos otros gestores. No olvides además descargar el conector JDBC, en mi caso el mysql-connector-java-bin.jar.</span></li>
</ul>
<p><span id="more-3422"></span></p>
<p style="text-align: justify;">
<h3>Instalación</h3>
</p>
<p style="text-align: justify;">Para instalar Seam y JBoss basta con descomprimir los paquetes que descarguemos de Internet. Yo recomiendo hacerlo en la carpeta /opt en sistemas UNIX/Linux, o directamente en C:/ en sistemas Windows.</p>
<p style="text-align: justify;">
<h3>Creación de un proyecto base para Eclipse</h3>
</p>
<p style="text-align: justify;">SeamFramework nos proporciona una herramienta de línea de comandos para la generación de proyectos base. Vamos al directorio donde lo instalamos y ejecutamos:</p>
<div class="consola">./seam setup</div>
<p style="text-align: justify;">Ahora debemos responder a cada una de las preguntas que nos hace; muchas de ellas las debemos dejar por defecto, así que nos concentraremos solo en aquellas en donde tengamos que cambiar. Resumiendo:</p>
<ul>
<li>El directorio donde se creará el proyecto:
<div class="consola">[input] Enter the directory where you want the project to be created (should not contain spaces) [/home/funtoo/projects] [/home/funtoo/projects]<br />
/home/funtoo/Poli/Componentes/seam-framework/workspace</div>
</li>
<li>El directorio donde se encuentra el JBoss AS:
<div class="consola">[input] Enter your JBoss AS home directory [C:/Program Files/jboss-5.1.0.GA] [C:/Program Files/jboss-5.1.0.GA]<br />
/opt/jboss-5.1.0.GA/</div>
</li>
<li>El nombre del proyecto:
<div class="consola">[input] Enter the project name [myproject] [myproject]<br />
holaseam</div>
</li>
<li>Vamos a desarrollar nuestra aplicación como EAR:
<div class="consola">[input] Is this project deployed as an EAR (with EJB components) or a WAR (with no EJB support)? [war] (ear, [war])<br />
ear</div>
</li>
<li>Definimos el nombre del paquete en base de la aplicación:
<div class="consola">[input] Enter the base package name for your Java classes [com.mydomain.holaseam] [com.mydomain.holaseam]<br />
org.ejemplo.seam</div>
</li>
<li>Los que hacen referencia a los Session Beans o Test Cases los podemos dejar como nos lo pongan. El gestor de base de datos; en este caso usé mysql aunque debería ser practicamente transparente:
<div class="consola">[input] What kind of database are you using? [hsql] ([hsql], mysql, derby, oracle, postgres, mssql, db2, sybase, enterprisedb, h2)<br />
mysql</div>
</li>
<li>Ingresamos la ruta en donde se encuentra el driver JDBC:
<div class="consola">[input] Enter the filesystem path to the JDBC driver jar [] []<br />
/opt/conectores/mysql-connector-java-5.0.8-bin.jar</div>
</li>
<li>Ahora debemos definir la URL de conexión a la base de datos. En este caso, he creado una base de datos llamada ejemplo, y por lo tanto la URL quedaría así:
<div class="consola">[input] Enter the JDBC URL for your database [jdbc:mysql:///test] [jdbc:mysql:///test]<br />
jdbc:mysql://localhost:3306/ejemplo</div>
</li>
<li>Con esta opción se ejecutará un script llamado import.sql cada vez que hagamos un deploy del proyecto. Dicho archivo deberá tener los scripts necesarios para crear tablas y registros. Puesto que en este laboratorio poco vamos a usar MySQL, puedes poner lo que quieras; pero es importante tener en cuenta esta opción a la hora de desarrollar un proyecto.
<div class="consola">[input] Do you want to recreate the database tables and execute import.sql each time you deploy? [n] (y, [n])<br />
y</div>
</li>
</ul>
<p style="text-align: justify;">Ya que hemos configurado lo que será el proyecto, es hora de crearlo. Ejecutamos el comando:</p>
<div class="consola">./seam create-project</div>
<p style="text-align: justify;">Esto creará un proyecto base que puedes abrir con Eclipse, y eso es justo lo que haremos a continuación.</p>
<p style="text-align: justify;">Abrimos eclipse y nos aseguramos que el workspace sea el mismo directorio en el que creamos el proyecto desde Seam. Vamos a la creación de un nuevo proyecto Java:</p>
<p style="text-align: center;"><img title="seam-screenshot" alt="seam-screenshot" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/11/screenshot_005.png" width="540" height="402" /></p>
<p style="text-align: justify;">Le damos el mismo nombre que a nuestra aplicación Seam (en este caso holaseam):</p>
<p style="text-align: center;"><img title="seam-screenshot" alt="seam-screenshot" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/11/screenshot_006.png" width="524" height="736" /></p>
<p>Y puesto que ya existe un proyecto creado en el workspace muchas de las opciones ya aparecen asignadas. Hacemos clic en Next y vemos que ya hay una estructura de directorios creada con la base del proyecto Seam.</p>
<p style="text-align: center;"><img title="seam-screenshot" alt="seam-screenshot" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/11/screenshot_007.png" width="639" height="714" /></p>
<p style="text-align: justify;">Hacemos clic en Finish, y ya podemos comenzar a editar y modificar el proyecto.</p>
<p style="text-align: center;"><img title="seam-screenshot" alt="seam-screenshot" title="screenshot_008" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/11/screenshot_008.png" width="573" height="364" /></p>
<p style="text-align: justify;">
<h3>Despliegue del proyecto</h3>
</p>
<p style="text-align: justify;">Primero debemos iniciar el servicio de JBoss. Para ello ejecutamos el archivo run.sh (run.bat en Windows) del directorio bin de Jboss. Este dejará el servicio web corriendo por defecto en el puerto 8080.</p>
<p style="text-align: justify;">Para hacer el despliegue sobre JBoss, usamos un archivo Ant que se generó junto con el proyecto. Dicho archivo nos permite ejecutar tests, hacer (re)despliegues, generar el JavaDoc, entre otras. Así que habrímos el archivo build.xml y nos aseguramos que la vista Outline esté abierta:</p>
<p style="text-align: center; "><a href="http://casidiablo.net/wordpress/wp-content/uploads/2009/11/screenshot_009.png"><img title="seam-screenshot" alt="seam-screenshot"  src="http://casidiablo.net/wordpress/wp-content/uploads/2009/11/screenshot_009.png" width="600" /></a></p>
<p>Dentro de la vista Outline podemos ver los componentes del archivo build.xml y podemos ejecutarlos con Ant. En este caso, buscamos el componente deploy, hacemos clic derecho, Run As, y Ant Build.</p>
<p style="text-align: center; "><a href="http://casidiablo.net/wordpress/wp-content/uploads/2009/11/screenshot_010.png"><img title="seam-screenshot" alt="seam-screenshot"  src="http://casidiablo.net/wordpress/wp-content/uploads/2009/11/screenshot_010.png" width="600" /></a></p>
<p style="text-align: justify;">Algunas veces se generan errores al hacer el despliegue:</p>
<p style="text-align: center;"><a href="http://casidiablo.net/wordpress/wp-content/uploads/2009/11/screenshot_011.png"><img title="seam-screenshot" alt="seam-screenshot"  title="screenshot_011" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/11/screenshot_011.png" width="478" height="232" /></a></p>
<p style="text-align: justify;">Si es tu caso, deberás eliminar los archivos y directorios que tengan el nombre del proyecto del directorio deploy en JBoss. En mi caso los elimino con este comando:</p>
<div class="consola">rm -rf /opt/jboss-5.1.0.GA/server/default/deploy/holaseam*</div>
<p style="text-align: justify;">Si todo sale bien, cuando hagamos de nuevo deploy veremos algo como esto:</p>
<p style="text-align: center;"><img title="seam-screenshot" alt="seam-screenshot" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/11/screenshot_012.png" width="600" /></p>
<p style="text-align: justify;">Es hora de probar la aplicación. Abrimos el navegador en la dirección: http://localhost:8080/holaseam/</p>
<p style="text-align: center;"><a href="http://casidiablo.net/wordpress/wp-content/uploads/2009/11/screenshot_013.png"><img title="seam-screenshot" alt="seam-screenshot" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/11/screenshot_013.png" width="712" height="618" /></a></p>
<p style="text-align: center;"><a href="http://casidiablo.net/wordpress/wp-content/uploads/2009/11/screenshot_014.png"><img title="seam-screenshot" alt="seam-screenshot" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/11/screenshot_014.png" width="712" height="618" /></a></p>
<p style="text-align: center;"><a href="http://casidiablo.net/wordpress/wp-content/uploads/2009/11/screenshot_015.png"><img title="seam-screenshot" alt="seam-screenshot"  src="http://casidiablo.net/wordpress/wp-content/uploads/2009/11/screenshot_015.png" width="712" height="618" /></a></p>
<p style="text-align: justify;">
<h3>Descargar versión en PDF</h3>
</p>
<p><a href="http://casidiablo.net/descargar/Laboratorio+JBoss+Seam" class="tooltip download" title="Descargar versión en PDF de este artículo">Descargar</a></p>


	<div class="etiquetas">Etiquetas: <a href="http://casidiablo.net/tag/ajax/" rel="tag nofollow">AJAX</a>, <a href="http://casidiablo.net/tag/bpm/" rel="tag nofollow">bpm</a>, <a href="http://casidiablo.net/tag/eclipse/" rel="tag nofollow">eclipse</a>, <a href="http://casidiablo.net/tag/ejb3/" rel="tag nofollow">ejb3</a>, <a href="http://casidiablo.net/tag/how-to/" rel="tag nofollow">how-to</a>, <a href="http://casidiablo.net/tag/j2ee/" rel="tag nofollow">j2ee</a>, <a href="http://casidiablo.net/tag/java/" rel="tag nofollow">java</a>, <a href="http://casidiablo.net/tag/jboss/" rel="tag nofollow">jboss</a>, <a href="http://casidiablo.net/tag/jsf/" rel="tag nofollow">jsf</a>, <a href="http://casidiablo.net/tag/manual/" rel="tag nofollow">manual</a>, <a href="http://casidiablo.net/tag/programacion/" rel="tag nofollow">programación</a>, <a href="http://casidiablo.net/tag/seam/" rel="tag nofollow">seam</a>, <a href="http://casidiablo.net/tag/tutorial/" rel="tag nofollow">tutorial</a><br /></div>
]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/jboss-seam-framework-introduccion/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
