java-ee-6 glassfish-3

java ee 6 - ¿Dónde se debe colocar beans.xml?



java-ee-6 glassfish-3 (1)

Tener beans.xml colocado en el directorio WEB-INF está bien en su caso, porque lo más probable es que los beans estén en clases WEB-INF.

El lugar correcto para beans.xml depende del tipo de archivo y la ubicación de las clases de bean.

En la especificación esto se explica a continuación:

Las clases de beans de beans habilitados se deben implementar en archivos de beans.

  • Un jar de biblioteca, jar de EJB, jar de cliente de aplicación o archivo rar es un archivo de bean si tiene un archivo llamado beans.xml en el directorio META-INF.
  • El directorio WEB-INF / classes de una guerra es un archivo bean si hay un archivo llamado beans.xml en el directorio WEB-INF de la guerra.
  • Un directorio en el classpath de JVM es un archivo de bean si tiene un archivo llamado beans.xml en el directorio META-INF.

Acabo de actualizar a NetBeans 7.1 desde 7.0. Al abrir un bean administrado por JSF, me dijo "útilmente" que no podía encontrar mi archivo beans.xml, por lo que me gustaría que lo crearan para mí. Sabía que tenía un archivo beans.xml en WEB-INF, pero dije que sí de todos modos para ver qué sucedía. Un nuevo beans.xml fue creado bajo META-INF para mí.

Pensando que había cometido un error, borré el archivo en WEB-INF solo para que mi aplicación fallara al iniciarse. Poner beans.xml de nuevo en WEB-INF solucionó ese problema. Esta página parece pensar que ambas ubicaciones son válidas: http://seamframework.org/Documentation/WhatIsBeansxmlAndWhyDoINeedIt

Entonces, la pregunta es ¿qué carpeta debe beans.xml vivir en WEB-INF o META-INF?

Estoy ejecutando GlassFish 3.1.1 y Java 7