Vaadin 7 提供 SQLContainer执行。 Book of Vaadin表示使用其 JDBC 连接池的任一实现。但我已经在使用 Tomcat JDBC Connection Pool执行。让一个池从另一个池中提取数据似乎是一件坏事。
为了继续使用 Tomcat 池,我实现了 com.vaadin.data.util.sqlcontainer.connection.JDBCConnectionPool界面。该接口(interface)需要三个方法:
reserveConnection
我返回从 Tomcat 池中提取的连接。releaseConnection
我什么也没做。我尝试在连接上调用close
,但这实际上关闭了连接,而不是将其返回到 Tomcat 池。显然,SQLContainer 已经调用了close
一次,而我第二次调用close
实际上关闭了连接。我收到运行时错误,指出连接未打开。销毁
我什么也没做。据说这个方法只是解决 Postgres(我正在使用的)某些问题的一些解决方法,但考虑到我实际上使用的是 Tomcat 池,这似乎无关紧要。
➜ 实现该接口(interface)是正确的方法吗?
➜ 如果实现该接口(interface)是可行的方法,那么我这样做是否正确?我还需要解决其他问题吗?
我的 Tomcat 池可通过 JNDI 访问,因此我不确定是否应该使用 Vaadin 类 J2EEConnectionPool .
最佳答案
事实上,您应该能够使用 J2EEConnectionPool,正如您在上面自己的答案中所描述的那样。我已经成功地将 J2EEConnectionPool 与 FreeformQuery 结合使用,所以我知道这是可行的。不幸的是,Vaadin 的 TableQuery 实现中显然存在一个错误,导致您看到“连接已关闭”错误。请参阅:http://dev.vaadin.com/ticket/12370
该票证建议更改代码,但就我而言,我只是将有问题的 TableQuery 替换为 FreeformQuery。
关于java - 当我已经有 JDBC 连接池时如何使用 Vaadin SQLContainer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26371577/