2

我正在通过 JNDI 连接 MS SQL Server。我的应用程序将连接到数据库一次,并将存储 con 以供将来使用。我能够成功连接和检索所需的数据。但是,当数据库重新启动时,我失去了连接,得到“对等方重置连接:套接字写入错误”。

因此我需要重新启动我的应用程序。因此,我决定在我的 conn 通过代码关闭时创建连接。这是正确的做法吗?我应该将 conn 存储在会话中吗?

4

5 回答 5

1

这里的答案相同:使用连接池。

我会推荐Tomcat而不是旧的Apache DBCP,即使对于独立/非Web应用程序,不在任何容器中运行

于 2013-08-01T10:01:14.327 回答
1

不要!使用Apache DBCP 之类的东西,它会创建一个连接池,您可以从中查找连接。当您需要连接时,从池中查找它,完成后,将其释放回池中。Connection 对象生命周期将由 dbcp 库管理。

于 2013-08-01T09:52:30.383 回答
0

这就是 Apache DBCP 等连接池的用途。

在会话中保留对池的引用,并在需要连接时使用它,例如以下示例:

http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/doc/PoolingDataSourceExample.java?revision=1143885&view=markup

于 2013-08-01T09:58:09.500 回答
0

不。它会很脆。

使用连接池,最好是可以在分发之前探测连接以确保其有效的连接池。

如果您的容器不提供这样的池,您可以在您的 Web 应用程序中自带。

于 2013-08-01T09:46:26.433 回答
0

当你不需要它时,你不应该保持与 DB 的活动连接。一旦您的任务完成并且不再需要处理数据,您应该关闭它。当您再次需要它时,请向数据源询问新的。
所以你想为这个数据库保留一个 DataSource 对象。

于 2013-08-01T09:47:04.140 回答