Detta är gränssnittsinkompatibilitet. javax.sql.DataSource
definierar en metod
default ConnectionBuilder createConnectionBuilder() throws SQLException
Och enligt kontraktet kräver returvärdet vara av typen ConnectionBuilder.
Om du tittar på dokumentationen för oracle.ucp.jdbc.PoolDataSourceImpl, definierar den metoden som
public UCPConnectionBuilder createConnectionBuilder()
medan oracle.ucp.jdbc.UCPConnectionBuilder
är inte en undertyp av java.sql.ConnectionBuilder
.
Nu om inte Oracle släpper en aldrig-version av oracle.ucp.jdbc.UCPConnectionBuilder
gränssnitt som utökar java.sql.ConnectionBuilder
, kommer du inte att kunna byta ut UCP PoolDataSource med javax.sql.DataSource
.
Den senaste versionen vid det här laget verkar vara UCP 19.3 , vilket fortfarande skulle drabbas av samma problem vilket är olyckligt eftersom 19.3 annonseras som JDK11-kompatibel. Vänligen skapa en bugg mot Oracle UCP för att göra underhållarna medvetna om den nya aktören createConnectionBuilder i DataSource-gränssnittet.
Under tiden, om det är möjligt, kan du falla tillbaka till att använda 11g release 2 av UCP (inte 12, inte 19) som inte har metoden createConnectionBuilder i PoolDataSource-gränssnittet. Inte en idealisk situation, eftersom du ger upp ett decenniums förbättringar av UCP genom att gå tillbaka till 11g.