2015-10-05 7 views
7

Ich habe eine Frage über das korrekte Format und die Verwendung der Bean.xml-Datei. In meinen Projekten habe ich normalerweise diesen Inhalt für meine bean.xml Dateien (keine Explizit Bohne Deklaration):CDI - Was ist das korrekte Format von bean.xml?

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation=" 
     http://java.sun.com/xml/ns/javaee 
     http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"> 
</beans> 

Das funktioniert gut in Wildfly 8 und 9 Aber ich habe Bereitstellungsprobleme in Glassfish 4. In der Frage : Glassfish 4, simple example in CDI fails with WELD-001408 Unsatisfied dependencies ich schrieb über ein alternatives Format:

<beans 
    xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
        http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd" 
      bean-discovery-mode="all"> 
</beans> 

es eine andere Namespace verwendet. Und GlassFish4 scheint sich darum zu kümmern.

Welches Format hat eine leere bean.xml Datei, die für JEE7 verwendet wird?

Antwort

12

Correct leer beans.xml kann total leer Datei, wirklich ;-)

Aber wenn man einige Inhalte hinzufügen möchten, beachten Sie bitte, dass die meisten der XML Deployment Descriptor Namespaces in Java EE 7 aktualisiert wurden. Diese post describes die Details. Auch bean-discovery-mode wurde hinzugefügt.

BTW: Beispiel beans.xml, die ich jetzt bin mit wie folgt aussieht:

<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd" 
     version="1.2" bean-discovery-mode="annotated"> 

    <!-- some content --> 
</beans> 

Sie können die Verwendung von version="1.2" Attribut bemerken - Sie frei, es zu 1.1 einstellen. Es dient nur als eine Erinnerung für den Leser, dass Projekt verwendet CDI 1.2 (die in der Tat ist nur eine Maintenance Release der CDI 1.1 Spezifikation).

Verwandte Themen