1

我在运行在 Tomcat 上的 Web 应用程序中使用连接池。我按照这里给出的设置http://tomcat.apache.org/tomcat-7.0-doc/jndi-resources-howto.html#Adding

当我需要连接时,我正在调用 servlet 的每个请求中的以下代码

        Context initCtx = new InitialContext();
        Context envCtx = (Context) initCtx.lookup("java:comp/env");
        DataSource ds = (DataSource)
        envCtx.lookup("jdbc/myDBName");
        con = ds.getConnection();

我应该将 ds 对象初始化为单例并从该对象获取连接,而不是一遍又一遍地获取 ds 吗?

4

1 回答 1

1

是的,JNDI 查找可能相对昂贵,特别是如果您要一遍又一遍地进行查找。您可以在 Servlet 的 init() 方法中查找 DataSource 对象一次,然后将其存储在一个字段中,以便稍后在 service()/doPost()/doGet() 方法中使用它。

只需确保在 Servlet 的 destroy() 方法中的 DataSource 之后关闭/清理即可。

于 2013-04-01T19:37:00.993 回答