Colocando
@Resource
na propriedade do bean de ação não faz sentido. Se você precisar de mais informações sobre injetar recursos você deve ler um tutorial
. Em vez disso, crie um ServletContextListener
e colocar anotação lá. No atributo de contexto do conjunto de eventos inicializado no contexto 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
(deve estar em WEB-INF):<listener>
<listener-class>com.servlet.MyServletContextListener</listener-class>
</listener>
agora você pode obter a fonte de dados no método execute
ds = (DataSource)ServletActionContext.getServletContext().getAttribute("ds");