2015-10-05 99 views
7

我有一個關於bean.xml文件的正確格式和用法的問題。在我的項目中,我通常用這個內容我bean.xml文件(不使用explizit bean聲明):CDI - 什麼是正確的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> 

這非常適用於WildFly 8和9。但我不得不在GlassFish中4部署問題在問題:Glassfish 4, simple example in CDI fails with WELD-001408 Unsatisfied dependencies我寫了一個替代格式:

<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> 

使用了不同的命名空間。 GlassFish4似乎關心這一點。

什麼是空bean.xml的正確格式用於JEE7的文件?

回答

12

正確空beans.xml可以完全空文件,真正;-)

但是,當你想添加一些內容,請注意,大部分的XML部署描述符命名空間都用Java EE 7進行了更新。這post describes的細節。另外bean-discovery-mode已被添加。

BTW:樣品beans.xml我現在使用它看起來像:

<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> 

您可能會注意到version="1.2"屬性的使用 - 你可以自由地將其設置爲1.1。它只是提醒讀者該項目正在使用CDI 1.2(實際上它只是CDI 1.1規範的維護版本)。

相關問題