Posted by felipegaucho
on February 11, 2010 at 10:30 AM PST
Following the successful strategy of eliminating warnings before they evolve to a more serious bugs, here it comes a simple trick to validate the bean.xml files in Java EE 6 applications.
CDI is one of the best features of Java EE 6, it gives you - for example - a chance to include a
beans.xml file in the WEB-INF folder in order to optimize the beans discovering during the application startup . An empty file is a fair price to pay for the cool features of the CDI but as soon you import the project in your preferred IDE you will see warnings about the impossibility of validating such file. The IDE is doing its job mitigating the risk of work without a chance to validate an XML file, now it is your time to fix this broken window.
The beans descriptor schema:
If you mess with the beans.xml file and try to deploy your application, Glassfish V3 will identify the problem because it contains the schema document describing the format of the bean.xml file. You can find this schema in the folder
$AS_HOME/glassfish/lib/schemas/beans_1_0.xsd, where $AS_HOME stands for the Glassfish V3 installation folder.
Including the proper header in your beans.xml file
The only step you need to proceed in order to calm down your IDE is to include the schema declaration in the header of the beans.xml file:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Done, just rebuild and refresh the project to see all that boring warnings going away. IMHO it is much more elegant than disabling the XML validation - what is commonly suggested by people that like to brake windows and/or software :)
IMPORTANT: it only works with a recent version of the Glassfish plugin for Eclipse (>= 1.0.52), so if your Eclipse installation is older than February 2010 it is a good moment to download the latest Eclipse IDE and install the Glassfish Plugin again, isn't it? This issue will disappear naturally with time, but it is an important detail since the plugin is too new.
* Thanks Ludo for all hints about this little issue.
* Thanks Dominik Dorn for calling my attention to a file I believed only available in the Glassfish distribution :)