检查 beans.xml

如果 beans.xml 文件包含修饰符或拦截器,那么必须使用有效模式才能实现正确的实例化。 beans.xml 文件中的命名空间必须与适用的 CDI 版本规范相匹配。 文件中的命名空间必须与适用 CDI 版本的规范一致。

该规则会扫描 beans.xml 文件,查看是否在该文件上提供了有效的命名空间。 文件上是否提供了有效的命名空间 xmlns 属性。

以下示例显示了 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 文件时将抛出异常。 可通过设置以下 JVM 属性来禁用验证:

		
	org.jboss.weld.xml.disableValidating=true

如果未提供名称空间,那么规则不会标记 beans.xml 文件。

如果您考虑使用 Java EE 7 随附的 CDI 1.2,请参阅 Contexts and Dependency Injection 1.2 behavior changes