Oracle
 sql >> Base de données >  >> RDS >> Oracle

Migration Java 11 - createConnectionBuilder() de PoolDataSourceImpl est en conflit avec createConnectionBuilder() de javax.sql.DataSource

Il s'agit d'une incompatibilité d'interface. javax.sql.DataSource définit une méthode

default ConnectionBuilder createConnectionBuilder() throws SQLException

Et selon le contrat, la valeur de retour doit être de type ConnectionBuilder.

Si vous jetez un oeil à la documentation de oracle.ucp.jdbc.PoolDataSourceImpl, il définit la méthode comme

public UCPConnectionBuilder createConnectionBuilder()

alors que oracle.ucp.jdbc.UCPConnectionBuilder n'est pas un sous-type de java.sql.ConnectionBuilder .

Maintenant, à moins qu'Oracle ne publie une version jamais de oracle.ucp.jdbc.UCPConnectionBuilder interface qui étend java.sql.ConnectionBuilder , vous ne pourrez pas échanger UCP PoolDataSource avec javax.sql.DataSource .

La dernière version à ce stade semble être UCP 19.3 , qui rencontrerait toujours le même problème, ce qui est regrettable puisque 19.3 est annoncé comme étant conforme à JDK11. Veuillez signaler un bogue contre Oracle UCP pour informer les responsables du nouvel entrant createConnectionBuilder dans l'interface DataSource.

Dans l'intérim, si cela est faisable, vous pouvez revenir à l'utilisation de la version 11g 2 d'UCP (pas 12, pas 19) qui n'a pas la méthode createConnectionBuilder sur l'interface PoolDataSource. Ce n'est pas une situation idéale, puisque vous renoncez à une décennie d'améliorations de l'UCP en revenant à 11g.