gpt4 book ai didi

java - Grails -- PooledConnection 已经关闭

转载 作者:行者123 更新时间:2023-11-28 21:53:09 26 4
gpt4 key购买 nike

我在我的项目中使用 grails 2.3.11 和 Oracle 数据库。

我的数据库有问题。异常:

ERROR (org.hibernate.util.JDBCExceptionReporter) - [99824F7C5386E5A40F94939FF36481FE | admin] - PooledConnection has already been closed.

运行以下代码时出现错误:

@NotTransactional
@Cacheable
def findSmth(String Id) {
//Some logic here

Employee.findWhere(company: company, employee: employee)
}

这段代码被重复执行,在某些迭代中出现错误。

注意:我使用多个数据源。错误发生在具有以下数据源的数据库中:

dataSource_employee_ro {
dbCreate = 'validate'
dialect = org.hibernate.dialect.Oracle10gDialect
driverClassName = "oracle.jdbc.driver.OracleDriver"
url = 'jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = ****)(PORT = 2001))(FAILOVER = true)(LOAD_BALANCE = on)(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = ****)(FAILOVER_MODE = (TYPE=select) (METHOD=basic) (RETRIES=10) (DELAY=3))))'
username = '****'
password = '******'
readOnly = true
properties {
maxActive = 10
maxIdle = 5
minIdle = 1
initialSize = 8
testOnBorrow = true
testWhileIdle = true
testOnReturn = false
validationQuery = "SELECT 1 FROM dual"
}
domainSchema = '*****'
}

即使我设置了“isPooled = false”(它看起来像“连接已经关闭”),也会出现异常。

我不知道如何摆脱这个错误。谁能帮我?谢谢。

最佳答案

我前段时间遇到了同样的问题,问题是因为我在服务中运行一个方法,该服务是事务性的,而我有另一个线程运行数据库进程,所以当事务性方法结束时,事务关闭与数据库的连接。

无论如何,我不明白您为什么要在数据库的 findBla 方法中使用非事务标记。该方法应该从服务中调用,并且应该是事务性的。因此无需将其标记为非事务性。

希望我对您有所帮助:)

关于java - Grails -- PooledConnection 已经关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36302362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com