嵌入式德比多连接问题
Posted
技术标签:
【中文标题】嵌入式德比多连接问题【英文标题】:Embedded derby multiple connections issue 【发布时间】:2012-04-10 16:31:55 【问题描述】:我的 Web 应用程序(将部署在 tomcat 上)需要一个嵌入式数据库来存储临时用户数据以便更快地检索。我选择了 Apache Embedded Derby,因为它很容易嵌入到 Web 应用程序中,并且是一个纯 Java DB。
我还实现了连接池来检索连接。我在这里面临两个关键问题(显示停止)。首先,我的应用程序一次不能有两个以上的活动连接。所以,我的应用程序就挂了。
第二,我不断得到另一个应用程序已经启动了数据库。我怀疑当一个连接已经处于活动状态并且我尝试从池中获取另一个连接时会发生这种情况。
我读过嵌入式 derby db 一次只能有一个连接,那么它如何通过EmbeddedConnectionPoolDataSource 支持连接池。
我现在应该在网络 derby 还是嵌入式服务器 derby 模式下运行 db?我不喜欢网络模式的想法,因为我需要更快的检索。那我宁愿用mysql。如果我在嵌入式服务器 db 模式下运行 db,它是否支持连接池和至少 50 个并发连接 或 我是否应该将 derby 替换为其他嵌入式数据库,如 H2 或 HSQL 数据库,因为我已经读过 derby 仅用于培训目的,不应在生产环境中使用?请帮忙
【问题讨论】:
Derby 肯定部署在许多生产环境中,而且 Derby 肯定支持许多同时连接。目前尚不清楚您要问什么问题,也不清楚您想要什么样的帮助。网络服务器配置非常快;我当然发现它的速度足以满足我的使用需求。 我在嵌入式模式下运行 derby。我的问题是它是否支持嵌入式模式下的并发连接。对于一个活动连接,另一个 getConnection() 方法会导致以下错误:“另一个 Derby 实例可能已经启动了数据库”。 我现在有两个选择:要么切换到网络/服务器模式或嵌入式服务器模式,要么完全切换到新数据库。我的主要要求是连接池,以支持并发连接和更快的检索(嵌入式数据库),这样我就不会在网络上查询。请帮忙 两个 getConnection() 调用必须来自同一个 JVM,更具体地说,来自同一个 JVM 中的同一个类加载器。这是构建 Web 应用程序时常见的混淆,因为应用程序服务器通常为每个 Web 应用程序使用单独的类加载器。为什么不尝试使用网络服务器一段时间,直到您更习惯使用 Derby? 【参考方案1】:我使用 Apache commons dbcp 实现了连接池,它工作得非常好,而且在嵌入式模式下也是如此。
【讨论】:
以上是关于嵌入式德比多连接问题的主要内容,如果未能解决你的问题,请参考以下文章