Đặt @Resource
trên thuộc tính bean hành động không có ý nghĩa. Nếu bạn cần thêm thông tin về tài nguyên tiêm bạn nên đọc hướng dẫn
. Thay vào đó, hãy tạo một ServletContextListener
và đặt chú thích ở đó. Trên thuộc tính bối cảnh đã khởi tạo sự kiện được khởi tạo theo ngữ cảnh
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
(phải có trong WEB-INF):
<listener>
<listener-class>com.servlet.MyServletContextListener</listener-class>
</listener>
bây giờ bạn có thể lấy nguồn dữ liệu trong phương thức thực thi
ds = (DataSource)ServletActionContext.getServletContext().getAttribute("ds");