【问题标题】:How to use Vaadin SQLContainer when I already have a JDBC connection pool当我已经有 JDBC 连接池时如何使用 Vaadin SQLContainer
【发布时间】:2014-10-14 22:37:58
【问题描述】:

Vaadin 7 提供了SQLContainer 实现。 Book of Vaadin 表示使用它的任何一个 JDBC 连接池实现。但我已经在使用Tomcat JDBC Connection Pool 实现。让一个池从另一个池中汲取资金似乎是一件坏事。

为了继续使用 Tomcat 池,我实现了com.vaadin.data.util.sqlcontainer.connection.JDBCConnectionPool 接口。该接口需要三个方法:

  • reserveConnection
    我返回一个从 Tomcat 池中提取的连接。
  • releaseConnection
    我什么都不做。我尝试在连接上调用close,但这实际上关闭了连接,而不是将其返回到 Tomcat 池。显然 SQLContainer 已经调用了一次close,而我对close 的第二次调用实际上关闭了连接。我收到运行时错误,提示连接未打开。
  • destroy
    我什么都不做。据说这种方法只是针对 Postgres(我正在使用)的一些问题的一些解决方法,但考虑到我实际上正在使用 Tomcat 池,这似乎无关紧要。

➜ 实现该接口是正确的方法吗?

➜ 如果实现该接口是要走的路,我这样做是否正确?还有其他问题需要解决吗?

我的 Tomcat 池可通过 JNDI 使用,所以我不确定是否应该使用 Vaadin 类 J2EEConnectionPool

【问题讨论】:

    标签: java database-connection vaadin connection-pooling vaadin7


    【解决方案1】:

    您实际上应该能够使用 J2EEConnectionPool,正如您在上面自己的答案中所描述的那样。我已经成功地将 J2EEConnectionPool 与 FreeformQuery 一起使用,所以我知道这是可行的。不幸的是,Vaadin 的 TableQuery 实现中显然存在一个错误,导致您看到“连接已关闭”错误。见:http://dev.vaadin.com/ticket/12370

    票证建议更改代码,但在我的情况下,我只是将有问题的 TableQuery 替换为 FreeformQuery。

    【讨论】:

      【解决方案2】:

      J2EEConnectionPool 不是游泳池(用词不当)

      查看the source code 后,J2EEConnectionPool 类似乎命名错误。它不是一个池的实现。它只是利用 javax.sql.DataSource 对象(如果未提供给构造函数,则通过 JNDI 获得)来获取 java.sql.Connection 对象。

      名称的“池”部分必须来自一个假设,即 DataSource 由连接池支持。

      是的,使用J2EEConnectionPool

      因此,如果正在使用真正的连接池,例如可通过 DataSource 或 JNDI 获得的 Tomcat JDBC 连接池,则将该 DataSource 或 JNDI 信息传递给 J2EEConnectionPool 的实例以与 Vaadin SQLContainer 一起使用。

      论坛主题

      请参阅 Vaadin 论坛上的 this discussion,“是否有可能修复 TableQuery+SQLContainer 和连接池的错误?”。

      Bug 票

      请参阅 Vaadin 问题跟踪器中的Ticket # 12370,“SQLContainer 不适用于 tomcat/BoneCP 连接池”。

      【讨论】:

      • 不,使用 J2EEConnectionPool 失败。我收到此错误:org.postgresql.util.PSQLException: This connection has been closed.
      • 重要 请参阅此sibling answer 以获取 Vaadin 开发票的链接,解释我的上述评论报告错误。该错误可能是由 Vaadin J2EEConnectionPool 中的一个错误引起的,它不能很好地与 Tomcat 连接池配合使用。
      • 针对上述问题的非官方修复。疯了 Vaadin 还没有修复vaadin.com/forum#!/thread/9611575
      猜你喜欢
      • 2014-09-12
      • 2011-01-11
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-06
      • 2016-07-25
      相关资源
      最近更新 更多