web-dev-qa-db-fra.com

CDI: beans.xml, où est-ce que je vous mets?

J'utilise Weld comme implémentation CDI. Mon test d'intégration, qui essaie d'assembler le graphe d'objet instanciant le conteneur Weld fonctionne bien , lorsque j'ai beans.xml vide dans src/test/Java/META-INF/beans.xml. Voici ce test simple:

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

Maintenant, quand je lance mvn clean install, je reçois toujours: Missing beans.xml file in META-INF!

Mes dossiers racine sont "src" et "web" qui contient le dossier WEB-INF, mais j'ai également essayé d'utiliser la structure maven par défaut et renommé "web" en "webapp" et l'a déplacé vers src/main. J'ai essayé tous les endroits raisonnables auxquels je pouvais penser:

 - 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

Rien ne fonctionne jusqu'à présent: /

50
Xorty

Pour les emballages EJB et JAR, vous devez placer le beans.xml dans src/main/resources/META-INF/.

Pour l’emballage WAR, vous devez placer le beans.xml dans src/main/webapp/WEB-INF/.

Rappelez-vous que seuls les fichiers .Java doivent être placés dans les répertoires src/main/Java et src/test/Java. Les ressources telles que les fichiers .xml doivent être dans src/main/resources.

89
maba

Pour compléter la réponse ci-dessus, voici une référence officielle à ce sujet: https://docs.Oracle.com/javaee/6/tutorial/doc/gjbnz.html

citation:

Une application qui utilise CDI doit avoir un fichier nommé beans.xml. Le fichier peut être complètement vide (il ne contient du contenu que dans certaines situations limitées), mais il doit être présent. Pour une application Web, le fichier beans.xml doit se trouver dans le répertoire WEB-INF. Pour les modules EJB ou les fichiers JAR, le fichier beans.xml doit se trouver dans le répertoire META-INF.

10
99Sono

http://www.javamonamour.org/2017/11/cdi-in-Java-se-8.html vous pouvez voir où je l'ai mis avec succès, sous src/META-INF. Cet article contient un exemple complet de CDI dans Java SE.

0