jueves, 11 de marzo de 2010

Proyecto WAR con Seam 2.2 en JBoss AS 5.1

Quiero compartir la solución a un problemita bajo una configuración particular, resultando en que las entidades mapeadas del WAR no eran encontradas por Hibernate.

Estoy armando un proyecto de prueba usando SEAM 2.2 y JBoss AS 5.1, para probar algunas novedades y cambios de las últimas versiones por un lado, y por otro, para experimentar con ciertos características.

El entorno de desarrollo es Eclipse 3.5 con JBoss Tools 3. Aquí no utilicé seam-gen, y creé directamente el proyecto desde el IDE. Usé una base de datos MySQL 5.1 y todo el conjunto corre sobre Ubuntu Karmic Koala (9.10).

El problema y la solución es la indicada en JBSEAM-3821, aunque el problema estaría solucionado usando el seam-gen desde SEAM 2.1.2.CR1, parece el mismo también sucede al crear proyectos con JBoss Tools 3.

The comments in the components.xml and persistence.xml files of the JPA Example generated for JBoss 5 show the correct way to handle this. Although it would be nice if SeamGen handled this correctly.

En el último comentario del reporte del bug, está la solución (o su workaround). Los datos claves son:

  • en el components.xml, agregar en la etiqueta <persistence:entity-manager-factory/> el atributo installed="false", y en la etiqueta <persistence:managed-persistence-context/> agregar el atributo persistence-unit-jndi-name="java:/bookingEntityManagerFactory".
  • en el persistence.xml, la propiedad <property name="jboss.entity.manager.factory.jndi.name" value="java:/bookingEntityManagerFactory"/>
Salvando este detalle, ya podemos trabajar normalmente. De todas formas, recomiendo usar el seam-gen, que es muy interesante y útil, pero en caso de no usarlo, ya saben :)