Lorsque j'essaie d'utiliser l'annotation Resource dans une servlet, Sonar déclenche la règle squid:S2226 "Les servlets ne devraient pas avoir de champs d'instance mutables" et me demande de rendre la variable finale ou statique.
Mais l'injection de ressources ne fonctionne pas et les variables finales et statiques.
Est-ce un bogue dans le sonar ou l'injection de ressources n'est plus recommandée dans les servlets ?
public class MyServlet extends HttpServlet {
@Resource(name = "jdbc/database")
private DataSource dataSource;
}
Une énigme similaire apparaît avec ServletConfig
private ServletConfig config;
@Override
public void init(ServletConfig config) throws ServletException {
this.config = config;
}
Ici, config
ne peut pas être rendu final, mais le rendre statique déclenche l'autre règle squid:S2696 : "Les méthodes d'instance ne devraient pas écrire dans des champs "statiques"".
Je rencontre cette situation avec SonarLint for Eclipse 3.3.1.201712071600, si cela est utile.