web-dev-qa-db-fra.com

Java application web - Qu'est-ce qui détermine la version de mon API Servlet? Est-elle spécifiée dans web.xml?

J'utilise Eclipse EE Juno et mon application Web actuelle utilise Dynamic web modules 2.4. J'essaie de faire passer la version à 3.0, mais pour une raison quelconque, je ne peux pas. lorsque j'essaie de changer la version dans les facettes du projet, j'obtiens Cannot change version of project facet Dynamic Web Module to 3.0. Est-il possible qu'il y ait une ligne superposée dans mon fichier web.xml qui détermine cela? Comment puis-je modifier la version des modules Web dynamiques si ce n'est à partir du paramètre de facette du projet Eclipse seul?

24
stackoverflow

Servlet 2.4 dans web.xml:

<web-app version="2.4"
  xmlns="http://Java.Sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="
    http://Java.Sun.com/xml/ns/j2ee
    http://Java.Sun.com/xml/ns/j2ee/web-app_2_4.xsd">

Servlet 3.0 dans web.xml:

<web-app version="3.0"
  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/web-app_3_0.xsd">

Voilà la seule différence. Le reste est votre configuration IDE. Pour utiliser Servlet 3.0, vous devez avoir 3.0 JAR sur le CLASSPATH afin que de nouvelles annotations et d'autres classes soient disponibles. Mais n'incluez pas le JAR de servlet dans votre WAR, l'implémentation doit provenir du conteneur de servlet.

40
Tomasz Nurkiewicz