java-ee deployment glassfish nullpointerexception jboss-weld

java ee - "Excepción al cargar la aplicación" sin un seguimiento de la pila



java-ee deployment (6)

Después de tres horas de depuración resolví un problema como este tratando de implementar la aplicación en JBoss 6.

Parece que varios mensajes de error de Weld no se registran correctamente en Glassfish. En mi caso anoté un EJB con @Stateless @RequestScoped (que es ilegal, debe ser @Statefull). Con Glassfish solo pude ver ese "error al cargar la aplicación", mientras que en JBoss 6 recibo el mensaje de error correcto que indica el código ofensivo.

Sugiero que intente implementar en JBoss 6 eliminando todas las partes (@Resource con ruta JNDI específica, por ejemplo) que evitan que el implementador de Weld escanee la aplicación y valide las cosas del CDI.

Estoy migrando mi aplicación de GlassFish 3.0.1 a GlassFish 3.1.1. La implementación falla, con los siguientes mensajes de error:

SEVERE: Exception while loading the app SEVERE: Exception while shutting down application container SEVERE: Exception while shutting down application container : java.lang.NullPointerException SEVERE: java.lang.RuntimeException: Error occurred during deployment: Exception while shutting down application container : java.lang.NullPointerException. Please see server.log for more details.

No hay rastro de pila Encendí el nivel de registro de raíz en FINEST, y aparece el primer mensaje SEVERE después de un mensaje de Soldadura:

//... FINE: WELD-000105 Enabled interceptor types for Manager Enabled alternatives: [] [] Registered contexts: [interface javax.enterprise.context.SessionScoped, interface javax.enterprise.context.RequestScoped, interface javax.inject.Singleton, interface javax.enterprise.context.Dependent, interface javax.enterprise.context.ApplicationScoped, interface javax.enterprise.context.ConversationScoped] Registered beans: 0 Specialized beans: 0 : []

Y antes de varios mensajes como estos (para varias clases diferentes):

FINE: PWC4451: File cannot be read /opt/sun/glassfish-3.1.1/glassfish/domains/domain1/applications/QmsWeb/WEB-INF/classes/org/jboss/seam/transaction/SeamTransaction.class FINE: PWC4451: File cannot be read /opt/sun/glassfish-3.1.1/glassfish/domains/domain1/applications/QmsWeb/WEB-INF/classes/org/jboss/seam/transaction/SeamTransaction.class FINE: PWC4451: File cannot be read /opt/sun/glassfish-3.1.1/glassfish/domains/domain1/applications/QmsWeb/WEB-INF/classes/net/sf/ehcache/config/TerracottaConfiguration$ValueMode.class //...

¿Qué podría estar causando este error? ¿Podrían estos mensajes PWC4451 estar indicando que algunas bibliotecas no se están cargando?


Esto se debió a un bean @ViewScoped que no implementó Serializable. Aparentemente, una versión anterior de Weld que estábamos usando no consideraba objetable que un bean de pasivamiento no fuera serializable, pero este falló silenciosamente debido a eso. Oh, bueno, espero que esto le ahorre a alguien algo de tiempo.


En mi caso, el problema era que beans.xml consistía en el elemento "beans" vacío, que solía funcionar pero aparentemente ya no funciona. Funcionó cuando lo reemplacé con un beans.xml de 0 bytes completamente vacío.


Tuve el mismo problema al agregar un interceptor que no era serializable en Glassfish 3.1.2.2 . Acabo de recibir una NullPointerException sin más explicaciones.

Funciona bien cuando hice que el interceptor implementara Serializable .


Motivo y soluciones que he encontrado con respecto a este problema:
- El objetivo no está actualizado (asegúrese de hacer una limpieza de experto, la carpeta de destino puede estar bloqueada, intente eliminarla manualmente y reconstruir su oído (tuvo este problema varias veces)
- problema con los pools JDBC: enjuagarlos
- Problema de constructor con EJB (tenga en cuenta que es el contenedor que crea sus beans): el contenedor debe poder iniciarlos. Entonces, un constructor por defecto sin argumentos tiene que estar presente

si eso no funciona: equipo-> compare con -> última versión de trabajo y considere cada bean EJB o DTO para los servicios web como una posible causa de error. Comenta tus cambios y vuelve a intentarlo para ubicar tu problema.

En cualquier caso, es un desagradable error :( ¡Buena suerte!


En mi caso y en el espíritu de los Interceptores, el mío era algo fácil de encontrar porque estaba jugando por ahí.

Agregué el intérprete @ inocente en mi interceptor, aunque lo estoy usando con anotaciones.

Mi versión de glassfish es 3.1.2.2.

Esta página dice que es un Inteceptor Javadoc opcional.