Aplicación Spring Roo sobre JBoss AS 7.1.1

En un artículo anterior “Aplicación Spring Roo sobre JBoss AS 6.1”, comentaba la problematica en cuanto a que las aplicaciones web construidas con Spring Roo se desplegan sin problemas sobre un contenedor Tomcat, pero si queremos utilizar JBoss tenemos que realizar varios cambios.

En este caso utilizo: Spring Roo 1.2.1.RELEASE, JBoss AS 7.1.1 Final y Oracle 11g R2; voy a detallar las configuraciones que he realizado para desplegar con éxito la siguiente aplicación de ejemplo.

project --topLevelPackage com.lintips.inventario --projectName inventario --packaging war
jpa setup --provider HIBERNATE --database HYPERSONIC_PERSISTENT
entity jpa --class ~.domain.Producto --testAutomatically
field number --fieldName idProducto --type int --notNull
field string --fieldName nombre --notNull
field string --fieldName descripcion
field number --fieldName precio --type double
web mvc setup
web mvc all --package ~.web
perform tests

1) Configurar persistencia

1.1) Registrar la unidad de persistencia del servidor Jboss en web.xml.
Para utilizar una “server-deployed persistence unit” desde Spring, necesitamos registrarla en JNDI via web.xml de esta forma:

persistence/inventario-emf
persistenceUnit

1.2) entityManagerFactory de tipo JNDI lookup en applicationContext.xml
Tenemos que cambiar el entityManagerFactory de tipo LocalContainerEntityManagerFactoryBean por un JNDI lookup en el fichero applicationContext.xml.
Por lo tanto, sustituimos la definición que hace uso del datasource local


por esta que lo recupera por jndi-lookup:

1.3) Añadir el non-jta-data-source en persistence.xml.

org.hibernate.ejb.HibernatePersistence
java:jboss/datasources/ExampleDS

En este ejemplo utilizo el datasource HSQL que viene por defecto en JBoss 7. Para definir un datasource propio consulta el siguiente artículo.

En JBoss 7, los nombres JNDI de los datasources tienen que cumplir con la forma “java:jboss/datasources/ExampleDS”. En versiones anteriores era comun utilizar el formato “java:DefaultDS”.

2) Configurar dependencias maven
Es necesario configurar varias dependencias con el scope “provided”, en el pom.xml, para que no se incluyan en el war de la aplicación. Ya que dichas dependencias son proporcionadas por el propio JBoss, si las duplicamos podemos encontranos con conflictos en el classpath.

log4j
slf4j-api
jcl-over-slf4j
slf4j-log4j12
hibernate-core
hibernate-entitymanager
hibernate-jpa-2.0-api
hibernate-validator
validation-api
jta
jstl-api
jstl-impl

Con todo lo anterior ya podemos generar el .war de la aplicación y probar a desplegar sobre JBoss.

mvn clean package

Documentación

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s