我可以将锁定模式设置为在 Informix - JDBC - tomcat 连接池中等待吗?

Posted

技术标签:

【中文标题】我可以将锁定模式设置为在 Informix - JDBC - tomcat 连接池中等待吗?【英文标题】:Can I set Lock mode to wait in Informix - JDBC - tomcat connection pooling? 【发布时间】:2017-10-11 00:20:53 【问题描述】:

我正在使用 Tomcat 运行 Web 应用程序 - 使用 Informix 数据库的 JDBC 连接池。如何将锁定模式设置为等待?

【问题讨论】:

【参考方案1】:

您还可以使用“IFX_LOCK_MODE_WAIT”连接字符串属性设置默认锁定时间(对于数据源,请使用“ds.setIfxIFX_LOCK_MODE_WAIT()”)

更多信息在这里: https://www.ibm.com/support/knowledgecenter/en/SSGU8G_12.1.0/com.ibm.jdbc_pg.doc/ids_jdbc_034.htm

所以,对于 tomcat,如果你的数据源看起来像这样:

<Context path="/jspdemo" docBase="jspdemo" debug="0" reloadable="true" crossContext="true">
  <Resource name="jdbc/jspdemo" auth="Container" type="javax.sql.DataSource" maxActive="20" 
    maxIdle="10" maxWait="1000" username="informix"  password="mypasswd" 
    driverClassName="com.informix.jdbc.IfxDriver" 
    url="jdbc:informix-sqli://mymachine:1526/stores_demo:INFORMIXSERVER=ol_myserver"/>
</Context>

只需使用:

<Context path="/jspdemo" docBase="jspdemo" debug="0" reloadable="true" crossContext="true">
  <Resource name="jdbc/jspdemo" auth="Container" type="javax.sql.DataSource" maxActive="20" 
    maxIdle="10" maxWait="1000" username="informix"  password="mypasswd" 
    driverClassName="com.informix.jdbc.IfxDriver" 
    url="jdbc:informix-sqli://mymachine:1526/stores_demo:INFORMIXSERVER=ol_myserver;IFX_LOCK_MODE_WAIT=60;/>
</Context>

【讨论】:

【参考方案2】:

在我的环境中,从池中获取数据库连接后执行的第一条 SQL 是:

SET LOCK MODE TO WAIT 15

【讨论】:

感谢您的回答。如何通过 JDBC 连接设置此值【参考方案3】:

"如何通过 JDBC 连接设置该值"

根据之前的答案,要么将其作为连接属性传递,要么在连接开始时执行 SQL。

【讨论】:

以上是关于我可以将锁定模式设置为在 Informix - JDBC - tomcat 连接池中等待吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Java 应用程序中设置锁定模式

如何将 gnome 配置为在锁定屏幕上仅使用一种特定的键盘布局?

Perl 中的 Informix 错误:ISAM:107:ISAM 错误:记录被锁定。在 test_db_connectivity.pl 第 14 行

将 Hive 配置为在本地模式下运行

如何避免informix中的锁异常

informix 中表的模式