Mettre @Resource
sur la propriété action bean n'a aucun sens. Si vous avez besoin de plus d'informations sur l'injection de ressources vous devriez lire un tutoriel
. Créez plutôt un ServletContextListener
et y mettre une annotation. Sur l'événement initialisé par le contexte définir l'attribut de contexte
public class MyServletContextListener implements ServletContextListener {
@Resource(name="jdbc/dbmy")
private DataSource ds;
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println("contextInitialized");
ServletContext context = servletContextEvent.getServletContext();
context.setAttribute("ds",ds);
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
System.out.println("contextDestroyed");
}
}
web.xml
(doit être dans WEB-INF):
<listener>
<listener-class>com.servlet.MyServletContextListener</listener-class>
</listener>
maintenant vous pouvez obtenir la source de données dans la méthode d'exécution
ds = (DataSource)ServletActionContext.getServletContext().getAttribute("ds");