Dette er grænsefladeinkompatibilitet. javax.sql.DataSource
definerer en metode
default ConnectionBuilder createConnectionBuilder() throws SQLException
Og i henhold til kontrakten skal returværdien være af typen ConnectionBuilder.
Hvis du kigger på dokumentationen af oracle.ucp.jdbc.PoolDataSourceImpl, definerer den metoden som
public UCPConnectionBuilder createConnectionBuilder()
hvorimod oracle.ucp.jdbc.UCPConnectionBuilder
er ikke en undertype af java.sql.ConnectionBuilder
.
Medmindre Oracle frigiver en aldrig-version af oracle.ucp.jdbc.UCPConnectionBuilder
grænseflade, der udvider java.sql.ConnectionBuilder
, vil du ikke være i stand til at udveksle UCP PoolDataSource med javax.sql.DataSource
.
Den seneste udgivelse på dette tidspunkt ser ud til at være UCP 19.3 , hvilket stadig ville ramme det samme problem, hvilket er uheldigt, da 19.3 er annonceret som JDK11-kompatibel. Ret en fejl mod Oracle UCP for at gøre vedligeholdere opmærksomme på den nye deltager createConnectionBuilder i DataSource-grænsefladen.
I den mellemliggende periode, hvis det er muligt, kan du falde tilbage til at bruge 11g release 2 af UCP (ikke 12, ikke 19), som ikke har metoden createConnectionBuilder på PoolDataSource-grænsefladen. Ikke en ideel situation, da du opgiver et årti med forbedringer i UCP ved at gå tilbage til 11g.