Cuando se trabaja en una empresa de desarrollo de Software, puede que nos toque desarrollar sobre proyectos ya existentes agregando nuevas funcionalidades, o dando soporte a las que ya se tienen............................. pero y si queremos crear nuestro propio proyecto? uno sobre el que otras personas trabajen?........... por eso, con este taller partiremos de la nada para tener una aplicación web funcional.
En este tutorial vamos a crear un proyecto web usando el Framework Jboss Seam y su herramienta seam-gen, con ella podremos generar el código fuente de nuestra aplicación simplemente ingresando los parámetros que se nos solicita al ejecutarla.
En este tutorial vamos a crear un proyecto web usando el Framework Jboss Seam y su herramienta seam-gen, con ella podremos generar el código fuente de nuestra aplicación simplemente ingresando los parámetros que se nos solicita al ejecutarla.
Esta
utilidad nos ahorrara mucho tiempo ya que solo con los valores ingresados y una
base de datos definida, automáticamente se genera una aplicación web funcional,
con los paquetes, directorios, clases, librerías y entidades necesarias, en si
con la estructura completa para el correcto funcionamiento, de esta manera, la
aplicación generada será la base para continuar con el desarrollo de la misma
Para el
correcto desenvolvimiento del tutorial, se asume que se tienen conocimientos
previos sobre desarrollo de aplicaciones web y manejo de servidores de
aplicaciones, sin embargo se tratará de explicar el proceso de forma detallada.
Requisitos.
Jboss 4.2.3.GA
JDK 1.6
Apache Ant
BD MySql
IDE Eclipse
Configuración del Ambiente.
1. Inicialmente se asume que ya se tiene instalado el JDK 1.6 en la máquina y se tiene la respectiva variable de entorno JAVA_HOME apuntando a la ruta del mismo.
2. debemos
tener instalado MySql en nuestra
máquina, ingresando a la consola de MySql
o desde un Cliente MySql creamos la
base de datos con la que trabajará el seam-gen
para generar la estructura del proyecto, para este ejemplo crearemos una BD
sencilla con 3 tablas, la llamaremos pais
y tendrá las tablas país, departamento y ciudad.
3. Creamos
un usuario con permisos para la BD que se acaba de crear, ingresando lo
siguiente:
grant all
privileges on nombreBD.* to 'nombreUsuario'@'localhost' identified
by 'contraseña';
flush privileges;
Con esto le
decimos a MySql que le otorga todos los permisos al usuario creado para
trabajar con la BD, Para este caso sería:
4. Se
debe instalar apache Ant y tener configurada
la variable de entorno ANT_HOME,
para esto se debe descomprimir el apache Ant en algún directorio del equipo, se
recomienda hacerlo en la raíz del “C:” luego poner a apuntar la variable de
entorno a esa ruta y modificar el Path, el apache Ant se puede descargar de la
página principal.
5.
Se debe instalar el Framework Jboss Seam
2.1.2.GA en algún directorio del equipo en este caso también se
descomprimirá en la raíz del “C:”, se puede descargar desde la página oficial.
6.
También instalamos el servidor de aplicaciones, para este ejemplo trabajaremos
con el Jboss 4.2.3.GA y su
instalación es similar a las anteriores, basta con descomprimir el Jboss en la
raíz del “C:” y crear la variable de entorno JBOSS_HOME
Al
final tendremos lo siguiente:
Y en
las variables de entorno
Configuración del Proyecto
1. Ingresamos
al cmd de Windows, ejecutamos el seam-gen por consola, para esto nos ubicamos
en el directorio del jboss seam (el que descomprimimos en C:) y ejecutamos el
seam setup
2. ahora
seam nos preguntara por las propiedades requeridas para configurar el proyecto,
las cuales debemos ingresar una a una, un ejemplo de estas podría ser:
- Ubicación del proyecto: D:\nombreWorkspace\
- Ubicación del JBoss: C:\jboss-4.2.3.GA
- Dominio utilizado del JBoss: default
- Ubicación del Glassfish: C:\Glassfish\AppServer\AppServer
- Dominio del Glassfish: domain1
- Nombre del proyecto: paises
- ¿Usar ICEFaces en vez de RichFaces?: n
- Skin utilizado: ruby (define el tema usado por la aplicación)
- Empaquetamiendo del proyecto (ear/war): ear
- Nombre paquete baes: com.prueba.seam
- Nombre paquete beans de sesión: com.prueba.seam.action
- Nombre paquete beans de entidad: com.prueba.seam.entity
- Nombre paquete para los test: com.prueba.seam.test
- Base de datos : mysql
- Ruta driver de mysql: C:\jboss-4.2.3.GA\lib\mysql-connector-java-5.1.24-bin.jar
- Dialecto de Hibernate: org.hibernate.dialect.MySQLDialect
- Driver JDBC para MySQL: com.mysql.jdbc.Driver
- Datasource JDBC de MySQL: com.mysql.jdbc.jdbc2.optional.MysqlDataSource
- URL de conexión a la base de datos: jdbc:mysql://localhost:3306/paises
- Usuario BD : paises
- Password BD : paises
- Nombre de la base de datos: - (ya se definio en la URL de conexión)
- Usar todas las tablas de la base de datos?: y
- Borrar la base de datos cada vez que despliegue la aplicación?: n
Se
debe tener presente la información de la BD creada anteriormente, nombre,
usuario, contraseña y tener el conector de MySql mysql-connector-java-5.1.24-bin.jar
en C:\jboss-4.2.3.GA\lib, sin esto la
aplicación no podrá comunicarse con la base de datos, también es debe ingresar algunos
valores necesarios aunque no se utilicen (o exista), como la ruta del
Glassfish.
Cuando
se ingresen todos los parámetros requeridos, se nos informara al final de la
consola con un BUILD SUCCESSFUL que
todo ha salido correctamente, sino, se tendría que revisar los pasos anteriores
y verificar en que se ha fallado.
Hasta
aquí solo hemos creado el proyecto de forma virtual, aun no se ha generado el
código fuente ni la estructura de nuestra aplicación, podríamos pensar que la
base del proyecto se generó pero se encuentra como en un espacio de memoria
esperando ser concretada.
Generar el Proyecto.
1. Ahora
desde la consola de cmd ejecutamos la tarea Ant seam new-project que creara el proyecto con base a las
propiedades anteriormente configuradas.
Cuando
finaliza nos confirma nuevamente con un BUILD
SUCCESSFUL
Hasta
este punto ya tenemos creada la estructura del proyecto, para esto podemos
dirigirnos a la ruta configurada anteriormente donde dijimos que se almacenaría
el proyecto y veremos que (si todo salió bien) nuestro código fuente se
encuentra allí.
Pero
aún no hemos finalizado, hasta ahora tenemos la base, pero todavía nos falta
generar la funcionalidad de la aplicación, ahora vamos a crear las entidades y
la lógica de negocio para las operaciones CRUD, para esto creamos las entidades
del modelo con seam
generate-entities como se realizó en el paso anterior
Después
de esto podemos ver que se empiezan a generar las entidades y toda la lógica de
negocio.
Despliegue de la aplicación
Con lo generado ya podemos usar algún IDE de desarrollo para
desplegar el proyecto en el servidor, para esto usaremos Eclipse Galileo.
Primero importamos el proyecto al Eclipse.
De esta forma podremos ver la estructura del proyecto y las entidades creadas.
De esta forma podremos ver la estructura del proyecto y las entidades creadas.
Ahora buscamos el archivo build.xml, lo llevamos a la
vista ant y ejecutamos la tarea deploy para desplegar la aplicación, esta tarea
tendrá la función de empaquetar el proyecto al .ear y subirlo al servidor, para
que de esta forma podamos acceder al aplicativo por medio de un navegador.
Posteriormente al ejecutarla, nos indica que todo está
bien (en caso de error verificar la traza, en ocasiones se presenta error de
ear corrupto, pues queda mal generado, se debe eliminar el ear en el deploy del
servidor y desplegar nuevamente).
Si
verificamos en la ruta C:\jboss-4.2.3.GA\server\default\deploy de nuestro
servidor, podremos encontrar el archivo paises.ear el cual es el proyecto
empaquetado, además encontramos paises-ds, el cual es el datasource con la
conexión a la base de datos.
Navegando por la Aplicación.
Con los pasos anteriores, ahora solo nos falta ejecutar el archivo run.bat en la carpeta bin del jboss (C:\jboss-4.2.3.GA\bin\run.bat) para desplegar el servidor, acto seguido podemos ingresar a la ruta: http://localhost:8080/paises probar la aplicación y Listo!!!!!
Inicialmente
es necesario loguearnos en la aplicación para ingresar con todos los permisos
sobre la misma, por defecto podemos usar el user admin y pass root
Podemos
ver que aparte de la seguridad también nos ha creado la barra de menú con las
opciones para trabajar con las entidades.
Y
finalmente poder realizar las operaciones CRUD sobre la aplicación.
De
ahora en adelante tenemos una aplicación base sobre la cual trabajar, podremos
editar el código fuente, agregar nuevas funcionalidades, cambiar el idioma
entre otras.
Este proceso tambien puede ser realizado en un IDE de desarrollo, por ejemplo desde Eclipse podemos obtener los mismos resultados, sin embargo quise mostrarlo usando el seam-gen por consola como una alternativa para los amantes de las lineas de comandos.
Este taller lo podremos referenciar en entradas futuras donde trabajaremos con repositorios de codigo y procesos de integración continua, o porque no, crear la aplicación jboss seam desde Eclipse....
También te podría Interesar.
¿Hay algo que quieras anexar o comentar sobre esta entrada? no dudes en hacerlo....
Este proceso tambien puede ser realizado en un IDE de desarrollo, por ejemplo desde Eclipse podemos obtener los mismos resultados, sin embargo quise mostrarlo usando el seam-gen por consola como una alternativa para los amantes de las lineas de comandos.
Este taller lo podremos referenciar en entradas futuras donde trabajaremos con repositorios de codigo y procesos de integración continua, o porque no, crear la aplicación jboss seam desde Eclipse....
También te podría Interesar.
- Tutorial Proyecto Web Con Eclipse
- Instalando el Plugin JBoss Tools En Eclipse
- Despliegue de Aplicación Web Con Ant
- Instalación del servidor de aplicaciones JBoss
- Configuración Ambiente de Desarrollo... Descarga de Eclipse
Hola ...
ResponderEliminaral ejecutar seam generate-entities me marca un error
BUILD FAILED
C:\Desarrollo\jboss-seam-2.2.0.GA\seam-gen\build.xml:1564: org.hibernate.exception.JDBCConnectionException: Getting database metada
Te agradeceria mucho si puedieras ayudarme
Hola, no estoy muy seguro del porque del error, ahí nos indica que hay un problema al intentar conectarse pues al parecer no identifica la BD, no se si ya lo hiciste pero seria bueno eliminar todas las referencias y empezar nuevamente, talvez sea un problema al ingresar los parámetros solicitados.
EliminarAl hacerlo verifica el ingreso de los campos para:
-Ruta driver de MySQL
-Datasource JDBC de MySQL (este puede ser igual al ejemplo)
-URL de conexión a la base de datos (y los campos de user y pass de la BD)
también asegúrate de no poner nada en el campo
"Nombre de la base de datos" ya que lo definimos en la URL.
Teóricamente debería funcionar, también te recomiendo (no se si lo tengas así o no) establecer la ruta del JBoss Seam en la raíz del C:/ muchas veces se presentan errores en otros directorios....
Logre crear todo sin errores, ahora en el momento que levanto el jboss y trato de ingresar a la aplicacion, me dice que no encuentra el recurso:
ResponderEliminarEstado HTTP 404 - /sapi
type Informe de estado
mensaje /sapi
descripción El recurso requerido (/sapi) no está disponible.
JBoss Web/2.1.3.GA
(mi recurso se llama sapi)
alguna idea de como hacer que me de un mensaje mas descriptivo del error?
Cual es el Error en consola?
ResponderEliminarbuen tutorial.... tuve un error en el que mis tablas de la base de datos eran con foreign key autogeneradas, pero ya cambie esto en la base de datos sin embargo algunas tablas si deben tener fk autogeneradas, como puedo hacer para modificar los inserts en algunas tablas??... ademas seria excelente y de gran ayuda para todos si pudieran ayudar explicando un poco el codigo generado por el jboss seam... gracias
ResponderEliminarModifica el entity de esa tabla con el anotation para generar el id automatico y vuelve a generar los crudes
EliminarHola que pena la demora, no me entre de este comentario, tal como te dice Frerly podrias intentar modificando la entidad y luego desplegando la aplicación para que mapee los datos.
Eliminarsirve igual para seam 2.3??? por q se brinca y no pregunta ¿Usar ICEFaces en vez de RichFaces?
ResponderEliminarHola, teoricamente deberia funcionar, te sale algun mensaje en consola?
Eliminardesearia conocer mas acerca de jboos seam es muy interesante me puedes dar algunas fuentes....muy buen post...!!!!
ResponderEliminarHola, pues te cuento que mis fuentes han sido el internet y muchas preguntas jeje sin embargo hay un muy buen libro se llama Seam in Action (Un Amigo lo tiene impreso, no lo he podido bajar) y lo poco que pude ver fue muy llamativo
EliminarCristian excelente post, amigo tu podrias hacerlo en ubuntu como se configura el JBoss Seam, seria genial que quedara en ubuntu funcionando, lo he intentando pero no encuentro el archivo de configuracion, gracias de ante mano, yo tambien estoy terminando la tecnologia en analisis y desarrollo de sistemas de informacion en el sena sede cartago, exitos. podemos retroalimentarnos
ResponderEliminarhola,
ResponderEliminaral ejecutar seam generate-entities me marca un error. Estoy intentando con oracle 11g.
generate-model:
[echo] Reverse engineering database using JDBC driver C:\Users\fabian baicu
e\Downloads\software\Entorno desarrollo jboss_same\ojdbc6.jar
[echo] project=D:/proyectos/tutoriales/biblioteca
[echo] model=com.ejemplo.biblioteca.model
[hibernate] Executing Hibernate Tool with a JDBC Configuration (for reverse engi
neering)
[hibernate] 1. task: hbm2java (Generates a set of .java files)
[hibernate] log4j:WARN No appenders could be found for logger (org.hibernate.cfg
.Environment).
[hibernate] log4j:WARN Please initialize the log4j system properly.
[hibernate] An exception occurred while running exporter #2:hbm2java (Generates
a set of .java files)
[hibernate] To get the full stack trace run ant with -verbose
[hibernate] org.hibernate.exception.GenericJDBCException: Getting database metad
ata
[hibernate] java.sql.SQLException: Listener refused the connection with the foll
owing error:
[hibernate] ORA-12505, TNS:listener does not currently know of SID given in conn
ect descriptor
[hibernate]
[hibernate] oracle.net.ns.NetException: Listener refused the connection with the
following error:
[hibernate] ORA-12505, TNS:listener does not currently know of SID given in conn
ect descriptor
[hibernate]
BUILD FAILED
C:\Framework jboss-seam-2.2.0.GA\seam-gen\build.xml:1564: org.hibernate.exceptio
n.GenericJDBCException: Getting database metadata
Gracias.
Amimgo necesito ayuda urgenteeeeeeeeeee !!, mi problema es el siguiente, hice una aplicación usando los autogenrados que hace Seam Generated-Entities y ahora necesito entender los metodos que tienen las clases Home por defecto, pues quiero hacer un eliminar y no entiendo que hacen las instancias, para eliminar de la base de datos necesito eliminar las dependencias primero para luego eliminar el objeto, no se como hacerlo, despues que elimino las dependencias no se usar los metodos en el Home para eliminar esa instancias, no se si me entienden... alguien que me ayude por favor !!!
EliminarHola exelente tuto, estoy intentando ejecutar e setup pero me dice que no se ha cargado la clase principal org.apache.tools.ant.launch.Launcher
ResponderEliminar