H2在嵌入模式时被另一个过程锁定的tomcat sqlexception

问题描述 投票:0回答:1
我可以以某种方式连接到嵌入的H2没有Tomcat线程池冲突吗?

我可以连接到服务器模式H2而不H2创建新过程?

注:我无法发布任何实际代码。我敢肯定不是我的申请问题。我认为这不是必要的,但是我会写下我的包装器在需要时如何处理连接的描述,但是已经确定了该问题如上所述。

    eDIT:构建驱动器步骤的精确度 我无法完全重现您的问题,因为我没有日食环境。但是:
  • H2在接受多个同时连接的H2上清楚
  • H2文档清楚
  • 从相同的JVM
(参考:

FEATURE-H2DATABASE文档中的多个Connections

java tomcat h2
1个回答
2
投票
在H2上不接受多个进程的直接连接(需要一个用作服务器,另一个使用TCP连接)很清楚同一文档 - 对于您而言,这不是您的关注点,因为您的提供商不允许您创建其他流程,但这是您错误的原因

我可以在一个具有多个连接的过程中打开H2数据库(以嵌入式模式打开H2数据库(以嵌入方式)进行一些测试,并且可以同时处理请求(5个连接,每个请求,每个请求,每次读取5个结果一行)

我可以使用相同过程的2个同步线程(thread1 row1,thread2 row1,thread1 row2,thread2 row2 ...)进行类似的测试。

在数据库在另一个过程(H2Console)中打开时,我会得到错误

Database may be already in use: "Locked by another process"
  • 因此,我现在有充分的理由说问题发生是因为Eclipse作为汇编流程过程的一部分打开数据库(我知道Netbeans可以做到这一点...),或者是因为它可以允许发育员(您)直接访问数据库(NetBeans也可以做到。...)。如果Eclipse关闭数据库,则可以在应用程序开始。 您将在生产环境上拥有Eclipse(也没有任何其他访问数据库的过程),这应该不是问题。 您可以通过这些简单的步骤确认:
  • 在日食下产生一场战争 Eclipse
  • 的ext
  • 开始一个新鲜的tomcat实例(在您的开发机器上)
  • 在该实例下删除您的应用程序,并可以从两个不同的浏览器中连接到它,以确保至少2个连接
  • 不应发生例外。 Optionnaly,如果您习惯了,可以使用像ApacheJmeter
    这样的工具来强调应用程序
    
    
  • 即使Eclipse不访问数据库,在部署步骤中可能会发生许多事情。摆脱这种情况的一种简单方法是在开发人员中部署新版本之前仔细地停止和不剥削应用程序。如果问题不再发生,那么您应该在生产中没有问题(一旦您尊重这些步骤)。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.