WFLY-13715 Certify Oracle 19c RAC Cluster Support with Oracle UCP

In 

Overview

One of our customer’s application relies on Oracle RAC, which further relies on Oracle’s Universal Connection Pool (UCP). UCP manages it’s own connection pool and provides it using PoolDataSource. Usage of UCP allows for a number of advantages (fast connection failover, run time connection loadbalancing, connection affinity) which are required in customer’s use case. On the other hand, Iron Jacamar manages it’s own connection pool and was not designed for integration with DataSources with their own pool. Furthermore, there are no plans of changing IronJacamar architecture for such use case. As a result, the goal of this RFE is to provide workaround that would allow the customer to take advantage of most of UCP features without changing IronJacamar architecture. The workaround that allows to achieve this is a notification send to Oracle’s specific connection implementation when it is started and ended.

Issue Metadata

Issue:

Dev Contacts:

QE Contacts:

*

Affected Projects or Components:

  • IronJacamar, WildFly

Requirements

  • customers should be able to take advantage of Oracle UCP features

  • there would be no changes to IronJacamar architecture

Proposed solution

  • notify OracleConnection about start and end of the request

  • in org.jboss.jca.adapters.jdbc.WrappedConnection invoke java.sql.Connection#beginRequest,java.sql.Connection#endRequest when connection is started and ended

  • if above methods are not present (JDBC API <9 is used) notification is not performed

Test Plan