如何使用Tomcat使@Resource注释工作?

时间:2014-04-30 16:56:54

标签: java tomcat datasource

我有这个简单的代码:

public class TestClass {

    @Resource(name="jdbc/superblog")
    DataSource dataSource;

    public void testMethod() throws SQLException {
       /* try {
            Context ctx = new InitialContext();
            dataSource = (DataSource)ctx.lookup("java:comp/env/jdbc/superblog");
        } catch (NamingException e) {
            e.printStackTrace();
        }*/
        final Connection connection = dataSource.getConnection();
    }
} 

因此,如果我将代码与try / catch块一起使用,它就可以工作..(如果我评论@Resource注释。)

但是上面的代码不起作用,因为 dataSource 将为null。

如何使@Resource注释有效?我尝试了Tomcat 6和7,没有区别。

1 个答案:

答案 0 :(得分:3)

  

如何使@Resource注释有效?

您必须将@Resource注释添加到servlet,过滤器或其他受支持的类。 servlet 3.0 specification表示容器不需要对未实现以下任何接口的类执行注释注入。

javax.servlet.Servlet
javax.servlet.Filter
javax.servlet.ServletContextListener
javax.servlet.ServletContextAttributeListener 
javax.servlet.ServletRequestListener
javax.servlet.ServletRequestAttributeListener
javax.servlet.http.HttpSessionListener
javax.servlet.http.HttpSessionAttributeListener
javax.servlet.AsyncListener

由于您的测试类没有实现任何这些接口,我不希望资源注入工作。