So, using Informix with Apache DBCP (I happen to be using Spring here, too, to configure/inject the BasicDataSource). My problem is I need to set LOCK_MODE_WAIT for each data source that DBCP creates.
No, of course, the question is, how the hell do you do that?
The short answer, I don't know. Here's my Spring configuration file:
<bean id="placeholderConfig"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="/jdbc.properties"/>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName"><value>com.informix.jdbc.IfxDriver</value></property>
<property name="url"><value>jdbc:informix-sqli://${hostname}:${ifx_port}/proteus:informixserver=${hostname}</value></property>
<property name="username"><value>${username}</value></property>
<property name="password"><value>${password}</value></property>
<property name="poolPreparedStatements"><value>false</value></property>
<property name="maxActive"><value>5</value></property>
<property name="maxIdle"><value>5</value></property>
<property name="maxWait"><value>40000</value></property>
<property name="validationQuery"><value>select first 1 * from operator</value></property>
<property name="removeAbandoned"><value>true</value></property>
<property name="removeAbandonedTimeout"><value>300</value></property>
<property name="logAbandoned"><value>false</value></property>
</bean>I tried adding:
<property name="ifx_LOCK_MODE_WAIT"><value>1000</value></property>
But, of course, DBCP's BasicDataSource knows nothing about that property, so no dice. Exceptions in catalina.ouot
So, I removed that, and tried changing the URL:
<property name="url"><value>jdbc:informix-sqli://${hostname}:${ifx_port}/proteus:informixserver=${hostname};IFX_LOCK_MODE_WAIT=1</value></property>
That starts with no errors, and seems to work.