We have developed some JCA connectors for our app, one of them being an LdapJCA connector. Yesterday qe experienced a very strange behaviour that I can`t understand. We have a 2 node cluster accesing an ldap server, this Ldap server went down, and our JCA couldn`t create connections to the Ldap server. So far so good. When the ldap server came up again, we had stuck connections, and the JCA connector couldn`t recreate the Ldap connections. (This is another problem from the one I don`t understand). To let JBoss release those stuck connections, we undeployed the Ldap datasource in one of the nodes of the cluster, and redeployed it again after all connections where released, and everything worked as expected. The thing is it started to work in both nodes of the cluster when we redeployed our datasource in only one of the nodes. Datasource is configured like this:
<?xml version="1.0" encoding="UTF-8"?> <connection-factories> <no-tx-connection-factory> <!-- Where to bind the datasource, under the "java:/" prefix --> <jndi-name>LdapConnector_Server01</jndi-name> <rar-name>ldap-connector.rar</rar-name> <connection-definition>com.mycompany.connector.CapabilityConnectionFactory</connection-definition> <config-property name="ldapContextFactory" type="java.lang.String">com.sun.jndi.ldap.LdapCtxFactory</config-property> <config-property name="providerUrl" type="java.lang.String">ldap://nnssvm02.domaint:389/</config-property> <config-property name="securityAuthentication" type="java.lang.String">SIMPLE</config-property> <config-property name="securityPrincipal" type="java.lang.String">cn=Directory Manager</config-property> <config-property name="securityCredentials" type="java.lang.String">adminxyj</config-property> <!-- The minimum number of connections a pool should hold --> <min-pool-size>1</min-pool-size> <!-- The maximum number of connections for a pool --> <max-pool-size>3</max-pool-size> <!-- The maximum time in milliseconds to block while waiting for a connection --> <!-- before throwing an exception. Note that this blocks only while waiting --> <!-- for a permit for a connection, and will never throw an exception if --> <!-- creating a new connection takes an inordinately long time --> <blocking-timeout-millis>3000</blocking-timeout-millis> <!-- The maximum time in minutes a connection may be idle before being closed --> <idle-timeout-minutes>0</idle-timeout-minutes> <background-validation>true</background-validation> <background-validation-minutes>1</background-validation-minutes> </no-tx-connection-factory> </connection-factories>
Can anybody explain why this happened?