JBoss 6 y Spring “IllegalArgumentException: Multiple matching files not allowed”

Bueno aquí va otro para la ronda de JBoss, es muy común ver que en desarrollos web puedes encontrar múltiples archivos de configuración de Spring, en particular mi estilo es distribuirlos por función, por ejemplo:

  • appcontext.xml: Servicios, DAO’s y beans de uso compartido o común.
  • appcontext-ds.xml: Fuentes de datos y recursos (Script, properties, DB config, etc…)
  • apcontext-ws.xml: configuración de web services
  • appcontext-sec.xml: configuración de seguridad y enrutamiento
  • dispatcher-servlet.xml: configuración del flujo de navegación.

Cuando comenzaba con Spring tenía todo en un solo archivo ( el ApplicationContext.xml), pero con el tiempo me dícuenta que estaba cometiendo un grave error y me causaba muchos problemas tanto para el mantenimiento, la seguridad y las pruebas. Por eso es mejor colocar cada cosa en su lugar😀, claro siempre y cuando tu desarrollo pase a ser algo grande, si es pequeño no valdría la pena el esfuerzo.

En fin al tema, JBoss Aplication Server cuenta con mencanismo especial para cargar sus componentes y para los beans de Spring detecta los recursos de acuerdo a un sufijo en el nombre del archivo de configuración, por ejemplo -ds.xml para los data sources, -beans.xml para los beans en general, etc…

Y algo curioso es que no acepta dos archivos con el mismo sufijo:

  • appcontextA-ds.xml
  • appcontextB-ds.xml

Esto provoca que veas un bonito: “IllegalArgumentException: Multiple matching files not allowed” y el error es claro, mi solución fue renombrar el archivo con el sufijo duplicado:

  • appcontextA-ds.xml
  • appcontextB.xml

y listo todo funcionando al 100%.

Sim embargo por lo que leei esto también puede ser provocado con otros temas cuando generas un ear en lugar de un war.

En fin es un buen tip para tener en cuenta.

Saludos!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s