首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的Java到Firebird数据库连接不断开?

为什么我的Java到Firebird数据库连接不断开?
EN

Stack Overflow用户
提问于 2016-12-21 02:04:44
回答 1查看 1K关注 0票数 1

我使用以下代码连接到firebird数据库

代码语言:javascript
复制
  public static Connection dbStatic;    
  ...
  public void getConnection(){
  FBWrappingDataSource DataSource = new FBWrappingDataSource();
  DataSource.setDatabase("localhost/3050:C:/MyDatabase.FDB");
  DataSource.setDescription("TNS Development Database");
  DataSource.setType("TYPE4");
  DataSource.setEncoding("ISO8859_1");
  DataSource.setLoginTimeout(10);
  try {
    dbStatic = DataSource.getConnection("UserName", "Password");
  } catch (SQLException e) {
    e.printStackTrace();
  } 
}

若要断开连接,请执行以下...and:

代码语言:javascript
复制
...
dbStatic.close();
...

我使用Firebird2.1运行在Windows7-32位机器上,Java版本1.7,Jaybird版本2.2.8,Tomcat版本7.xx运行在Win7-32位上,浏览器是Chrome或其他运行Win XP SP3的(新的)版本。

我使用一个名为IBExpert的第三方工具查看连接的数量和/或运行以下语句:

代码语言:javascript
复制
select * from mon$attachments;

当我查看.close()语句运行后到数据库的连接数时,这个数目并没有减少。为什么会这样呢?如果我等待足够长的时间,或者Tomcat服务器重新启动,那么连接的数量就会减少。关闭浏览器不会影响连接。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-21 12:34:49

正如Andreas在评论中所指出的,FBWrappingDataSource是一个连接池。这意味着池保持物理连接处于打开状态,并发出由连接池中的物理连接支持的逻辑连接。一旦在逻辑连接上调用了close(),物理连接就会按可重用的方式返回到池。物理连接保持开放。

如果要关闭所有连接,则需要调用FBWrappingDataSource.shutdown()。这将关闭当前未使用的所有物理连接(!),并将数据源标记为关机。

但是,包org.firebirdsql.pool中的所有内容都应该被认为是不推荐的;它将在Jaybird 3中删除。

如果您只想要一个数据源,请使用org.firebirdsql.pool.FBSimpleDataSource (对于Jaybird 3,您将需要使用org.firebirdsql.ds.FBSimpleDataSource )。

如果需要连接池,请使用第三方连接池库,如HikariCP、DBCP或c3p0。

尽管如此,我想指出你应该考虑的几件事:

  • Jaybird 2.2.8不是最新版本,考虑升级到2.2.12,当前的Jaybird最新发布
  • 使用静态字段进行连接通常不是一个好主意(尤其是在web应用程序中),如果这确实是您所需要的,请考虑您的设计。最好让数据源成为静态字段,并获得(和关闭!)工作单位的连接(即:一个请求)。它还可能表明,您只需使用DriverManager创建连接就更简单了。
  • 命名约定:如果您遵循常见的Java约定,则变量DataSource应该称为dataSource
  • setLoginTimeout(Integer.parseInt(10))应该会导致编译错误,因为没有接受int的方法Integer.parseInt,而且该方法本身已经接受了int
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41254022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档