检查 beans.xml 中是否存在有效模式

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

		
	org.jboss.weld.xml.disableValidating=true

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

此规则的自动修订会使用适合于指定 schemaLocation的值来更新不兼容的名称空间。 将定制配置复制到应用程序构建文件以启用修订自动化。

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