viernes, 18 de abril de 2014

WELD-001408 o no se deja deployar.

Hace unos días requería deployar una aplicación web:
  • Spring 3.2.4.RELEASE 
  • WildFly 8.0.0.FINAL
  • jdk 1.7.0_21
El escenario era: la aplicación se logra desplegar correctamente en un Weblogic 12c y en otros app servers pero, no en WildFly.

La excepción que aparecería tenía como causa raíz lo siguiente:

"WELD-001408: Unsatisfied dependencies for type Injector with qualifiers @Default"

Revisando en los foros mencionan que la causante es la notación: javax.inject, o, dicho de otra manera la implementación del CDI: Contexts and Dependency Injection for the Java EE Platform, WildFly 8, Weblogic, Glassfish y otros utilizan una misma implementación llamada: Weld y, revisando su FAQ, encontramos que ya tienen registrado el problema y ofrecen una solución.

La solución tiene dos alternativas, modificar la configuración de todo el servidor para las aplicaciones que se despliegue sobre el asuman ya una versión específica de WELD (esto se hace entrando en modo consola =jboss-cli.sh=  y ejecutando la línea que indican):

/subsystem=weld:write-attribute(name=require-bean-descriptor,value=true)

La otra alternativa es, agregar al META-INF/ de cada aplicación un archivo llamado: jboss-all.xml para que realice esta configuración,

<jboss xmlns="urn:jboss:1.0">
    <weld xmlns="urn:jboss:weld:1.0" require-bean-descriptor="true"/>
</jboss>


Dado que el protocolo de casa es afectar lo menos posible, utilicé esta opción y, la aplicación desplegó sin problemas. (eah!!)

El CDI es lo "nuevo" que nos ofrece JEE desde la versión 6 (Java EE 6 platform) y que promete implementar todas esas cosas útiles que Spring nos acostumbró a utilizar (recordemos que ya estamos en la versión JEE7, pero, esta feature es aún -nueva- para muchos).

[Oracle] Why is Java EE 6 better than Spring
[Spring] Why using Spring instead of JEE6?
[StackOverflow] Java EE 6 vs. Spring 3

Buen fin de semana para todos!!!
---
RuGI


2 comentarios:

  1. Esto no deberia pasar si tienes el beans.xml en el directorio correcto, pero dame chance de revisar el proyecto no? :P saludos!

    ResponderEliminar
  2. Va, deja veo si puedo "tomarlo" un rato ^.^

    Saludos!!

    ResponderEliminar