2015-09-20 33 views
-1

对于Java来说,我是一个新手,并且已经开始使用Tomcat开发Web应用程序。我很快注意到的一件事是,我的Servlet类正在实例化一次,然后在未来的请求中重用。我发现这是因为我在构造函数中创建数据库连接,但是在Http方法本身中关闭它。虽然这不起作用;第二个请求失败,因为连接已经关闭!何时与Java/Tomcat建立数据库连接

果然,在构造函数中设置时间戳并将其转储到Http方法中会在未来的请求中显示与第一个请求中相同的时间戳。

所以,现在我想知道我是否应该在构造函数中建立数据库连接,并允许该连接保持未来请求,或者如果我应该建立与每个请求的新连接。

在构造函数中建立连接的明显优点是它可以节省后续额外连接的需求,但是当然显而易见的缺点是连接在即使不需要时也保持打开状态。

在这个决定中还有哪些其他因素可能不被考虑?什么是“标准”的方式来做到这一点?

在此先感谢!

回答

0

开放为每个请求的连接,而是使用connection pool,使关闭连接实际上并没有关闭它,但是把它放回可用,打开连接池。

请注意,在构造函数中打开连接时最重要的问题并不是它保持打开状态。主要的问题是两个处理两个单独客户端的请求的线程会使用相同的连接,互相搞砸:第一个线程中的异常会回滚第一个线程所做的更改。在一个线程中提交会提交在另一个线程中完成的部分更改。这是你必须绝对避免的。

+0

感谢您的回应!我现在正在经历建立连接池的过程。是的,在线程之间共享资源方面,我完全明白你的观点,而且这一点在我看来并没有发生! –

相关问题