Verificaţi pentru o schemă validă în beans.xml

Dacă un fişier beans.xml include decoratori sau interceptori, trebuie să fie folosită o schemă validă pentru instanţierea corectă. Spaţiu de nume şi locaţia din fişierul beans.xml trebuie să se potrivească cu specificaţia pentru versiunea CDI aplicabilă.

Această regulă scanează fişierele beans.xml pentru a vedea dacă un nume valid este furnizat pe atributul xmlns. Dacă spaţiul de nume este valid, regula verifică şi dacă locaţia schemei corespunzătoare din atributul schemaLocation este corectă.

Exemplul următor arată un fişier valid beans.xml pentru specificaţia CDI 1.0.


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

Exemplul următor arată un fişier valid beans.xml pentru specificaţia CDI 1.2.


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

Dacă un spaţiu de nume este furnizat şi nu se potriveşte cu nici o specificaţie, serverul aruncă o excepţie când procesează fişierul beans.xml. Puteţi dezactiva validarea prin setarea proprietăţii JVM următoare:

		
	org.jboss.weld.xml.disableValidating=true

Dacă nu este furnizat spaţiul de nume, regula nu semnalează fişierul beans.xml.

Fixul automat pentru această regulă actualizează namespace-urile incompatibile cu valoarea corespunzătoare pentru a specifica schemaLocation. Copiați configurația personalizată pe fișierul de build al aplicației pentru a activa automatizarea corectării.

Dacă aveţi în vedere utilizarea CDI 1.2 furnizat cu Java EE 7, vedeţi Contexts and Dependency Injection 1.2 behavior changes.