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 での振る舞いの変更を参照してください。