如何在 groovy sql 中设置连接超时?
Posted
技术标签:
【中文标题】如何在 groovy sql 中设置连接超时?【英文标题】:How to set connection timeout in groovy sql? 【发布时间】:2015-05-14 15:17:52 【问题描述】:有没有办法在groovy sql中设置连接超时,默认连接超时是多少?我检查了官方文档here,但没有得到任何东西。下面是我的代码。
private final def dev_env = [
url:"jdbc:oracle:thin:@//aguat:1521/orcl",
user:"ricky",
password:"ricky",
driver:"oracle.jdbc.OracleDriver"
]
def query="select * from emp where email=?"
def keys=["ricky@gmail.com"]
def Sql sql = Sql.newInstance(dev_env)
def results = []
sql.eachRow(query,keys)row ->
def resultMap = [:]
row.toRowResult().each k,v-> resultMap.put(k,v)
results << resultMap
Groovy 版本:1.8.6
请帮忙
【问题讨论】:
看看这个答案:***.com/questions/18685899/…:)
【参考方案1】:
Groovy SQL 不控制超时,这取决于您的驱动程序(在您的情况下为 Oracle)。如果您想为查询设置超时,请查看this answer。
如果您想要一个连接级别设置(这样您就可以将 Sql 对象重复用于多个查询,每个查询都应用超时),您需要设置自己的连接并将其传递给 Groovy 的 Sql 外观。像这样
def dev_env = [
url:"jdbc:oracle:thin:@//aguat:1521/orcl",
user:"ricky",
password:"ricky",
driver:"oracle.jdbc.OracleDriver"
]
Class.forName(dev_env['driver'])
def conn = DriverManager.getConnection(dev_env['url'], dev_env['user'],dev_env['password'])
conn.setNetworkTimeout(null, 10000)
def sql = new Sql(conn)
注意 setNetworkTimeout()
方法是在 Java 7 中添加的。如果您使用的是旧版本的 Java,请查看此 answer(您可以使用 "oracle.jdbc.OracleDriver"
而不是 OracleConnection.CONNECTION_PROPERTY_THIN_NET_CONNECT_TIMEOUT
字段回答如果您想避免对 Oracle jar 的编译依赖,请提及)。
同样,由于 Groovy 的 Sql 不会更改或控制任何连接设置,默认超时将是 Oracle 驱动程序的默认超时。
【讨论】:
以上是关于如何在 groovy sql 中设置连接超时?的主要内容,如果未能解决你的问题,请参考以下文章