如果 beans.xml 文件包含修饰符或拦截器,那么必须使用有效模式才能实现正确的实例化。beans.xml 文件中的名称空间和模式位置必须与适用 CDI 版本的规范匹配。
此规则会扫描 beans.xml 文件,以查看在
命名空间中提供的 xmlns 属性匹配
上的相应模式位置 schemaLocation 属性。
以下示例显示了 CDI 1.0 规范的有效 beans.xml 文件。
<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>
以下示例显示了 CDI 1.2 规范的有效 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"
bean-discovery-mode="all" version="1.1">
</beans>
如果未提供名称空间,那么规则不会标记 beans.xml 文件。
此规则的自动修订会使用适合于指定 schemaLocation的值来更新不兼容的名称空间。 将定制配置复制到应用程序构建文件以启用修订自动化。
如果您考虑使用 Java EE 7 随附的 CDI 1.2,请参阅 Contexts and Dependency Injection 1.2 behavior changes。