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.