CDI: frijoles.xml, ¿dónde te pongo?


Estoy usando Weld como implementación de CDI. Mi prueba de integración, que intenta ensamblar el gráfico de objetos instanciando el contenedor de soldadura funciona bien, cuando tengo frijoles vacíos.xml en src/test/java/META-INF/beans.xml. Aquí está esa prueba simple:

public class WeldIntegrationTest {
    @Test
    public void testInjector() {
        new Weld().initialize();
        // shouldn't throw exception
    }
}

Ahora cuando corro mvn clean install, siempre obtengo: Missing beans.xml file in META-INF!

Mis carpetas raíz son "src" y "web" que contiene la carpeta WEB-INF, pero también traté de usar la estructura maven predeterminada y renombré "web" a "webapp" y la moví a src/main. Probé todos los lugares razonables Se me ocurrió:

 - src/main/java/META-INF/beans.xml
 - src/test/java/META-INF/beans.xml
 - web/WEB-INF/beans.xml
 - src/main/webapp/WEB-INF/beans.xml
 - src/main/webapp/META-INF/beans.xml
 - src/main/webapp/META-INF/(empty) and src/main/webapp/WEB-INF/beans.xml

Nada funciona hasta ahora: /

Author: maba, 2012-10-24

3 answers

Para los envases EJB y JAR debe colocar el beans.xml en src/main/resources/META-INF/.

Para el embalaje de GUERRA debe colocar el beans.xml en src/main/webapp/WEB-INF/.

Recuerde que solo los archivos .java deben colocarse en los directorios src/main/java y src/test/java. Recursos como los archivos .xml deben estar en src/main/resources.

 83
Author: maba,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-24 20:38:38

Solo para complementar la respuesta anterior, aquí hay una referencia oficial sobre esto: https://docs.oracle.com/javaee/6/tutorial/doc/gjbnz.html

Cita:

Una aplicación que usa CDI debe tener un archivo llamado beans.XML. El archivo puede estar completamente vacío (solo tiene contenido en ciertas situaciones limitadas), pero debe estar presente. Para una aplicación web, los frijoles.el archivo xml debe estar en el directorio WEB-INF. Para módulos EJB o archivos JAR, los frijoles.el archivo xml debe estar en el directorio META-INF.

 10
Author: 99Sono,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-24 10:36:14

Http://www.javamonamour.org/2017/11/cdi-in-java-se-8.html aquí se puede ver donde lo he puesto con éxito, que es bajo src/META-INF . El post contiene un ejemplo completo de trabajo de CDI en Java SE.

 0
Author: PierluigiVernetto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-05 16:32:51