我正在使用单例类来进行servelet中的PostgresSQL连接。问题是,一旦打开它,它会工作一段时间(我猜直到超时),然后开始抛出I / O异常。知道Tomcat VM中的singleton类发生了什么吗?谢谢
Tomcat中没有单例;当您只有一个连接并保持长时间打开时,这就是连接工作的方式。它称为“超时”。
此设计无法缩放。更好的解决方案是使连接保持尽可能短的打开时间。您的代码应该打开一个连接,使用它,然后在事务范围内关闭它。
您还应该在Tomcat中设置一个connection pool。
我不知道。只要做正确的事,就不要重新发明轮子。
使用DataSource
。要么DataSource
,要么自己做(我喜欢使用Spring,但是如果您的Web应用程序很简单,则可能会过大)。
然后开始引发I / O异常
嗯,到底有什么例外?
此外,请注意,从多个线程使用相同的Postgres JDBC连接是安全的,但使用DataSource
。