我在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吗?
答案 0 :(得分:1)
是的,JNDI查找可能相对昂贵,特别是如果你要一遍又一遍地进行查找。您可以在Servlet的init()方法中查找一次DataSource对象,并将其存储在稍后可以在service()/ doPost()/ doGet()方法中使用的字段中。
确保在Servlet的destroy()方法中的DataSource之后关闭/清理。