我正在考虑在会话开始时(登录后)创建一个数据库连接,将其存储在会话对象中,然后在会话关闭时在会话处理函数的会话侦听器末尾将其关闭。
这是一个合理的策略吗?有什么想法吗?
否。创建一个容器管理的连接池数据源,并在Webapp启动时由JNDI获取。
如何创建数据源取决于所涉及的容器。例如,在Tomcat 6.0的情况下,您可以在此处阅读:Tomcat JNDI资源HOW-TO-
JDBC数据源。例如,如果是Glassfish 3,则可以在基于Web的管理控制台中通过http://
localhost:4848进行操作。
这是您最终可以从JNDI获得它的方法:
DataSource dataSource = (DataSource) new InitialContext().lookup(jndiName);// ...
您可以调用
getConnection()它。仅在webapp启动期间获取一次数据源就足够了,例如在数据库连接管理器的静态初始化程序块中或在中
ServletContextListener。
应始终在尽可能短的范围内获取并关闭连接。
try在执行查询的代码块中获取它,并在
finally同一代码
try块中将其关闭。断开连接的时间不要超过必要的时间。连接池将确保它们保持打开状态,因此该性能已经得到了极大的提高。



