A Cautionary Tale About Multi-Source JNDI Configuration

Posted by scott.s.nelson(at)oracle.com on Oracle Blogs See other posts from Oracle Blogs or by scott.s.nelson(at)oracle.com
Published on Wed, 22 Dec 2010 18:58:17 +0000 Indexed on 2010/12/22 19:58 UTC
Read the original article Hit count: 320

Filed under:

Here's a bit of fun with WebLogic JDBC configurations.  I ran into this issue after reading that p13nDataSource and cgDataSource-NonXA should not be configured as multi-source. There were some issues changing them to use the basic JDBC connection string and when rolling back to the bad configuration the server went "Boom".  Since one purpose behind this blog is to share lessons learned, I just had to post this.

If you write your descriptors manually (as opposed to generating them using the WLS console) and put a comma-separated list of JNDI addresses like this:

  <jdbc-data-source-params>
<jndi-name>weblogic.jdbc.jts.commercePool,contentDataSource,
contentVersioningDataSource,portalFrameworkPool</jndi-name>
<algorithm-type>Load-Balancing</algorithm-type>
<data-source-list>portalDataSource-rac0,portalDataSource-rac1</data-source-list>
<failover-request-if-busy>false</failover-request-if-busy>
</jdbc-data-source-params>

so long as the first address resolves, it will still work. Sort of.  If you call this connection to do an update, only one node of the RAC instance is updated. Other wonderful side-effects include the server refusing to start sometimes.

The proper way to list the JNDI sources is one per node, like this:

  <jdbc-data-source-params>
<jndi-name>weblogic.jdbc.jts.commercePool</jndi-name>
<jndi-name>contentDataSource</jndi-name>
<jndi-name>contentVersioningDataSource</jndi-name>
<jndi-name>portalFrameworkPool</jndi-name>
<algorithm-type>Load-Balancing</algorithm-type>
<data-source-list>portalDataSource-rac0,
portalDataSource-rac1,
portalDataSource-rac2
</data-source-list>
<failover-request-if-busy>false</failover-request-if-busy>
</jdbc-data-source-params>
(Props to Sandeep Seshan for locating the root cause)

© Oracle Blogs or respective owner

Related posts about WLS Configuration