Oracle
 sql >> Database >  >> RDS >> Oracle

Migrazione Java 11 - createConnectionBuilder() da PoolDataSourceImpl si scontra con createConnectionBuilder() da javax.sql.DataSource

Questa è incompatibilità dell'interfaccia. javax.sql.DataSource definisce un metodo

default ConnectionBuilder createConnectionBuilder() throws SQLException

E come da contratto, il valore restituito deve essere di tipo ConnectionBuilder.

Se dai un'occhiata alla documentazione di oracle.ucp.jdbc.PoolDataSourceImpl, definisce il metodo come

public UCPConnectionBuilder createConnectionBuilder()

mentre oracle.ucp.jdbc.UCPConnectionBuilder non è un sottotipo di java.sql.ConnectionBuilder .

Ora, a meno che Oracle non rilasci una versione mai di oracle.ucp.jdbc.UCPConnectionBuilder interfaccia che estende java.sql.ConnectionBuilder , non sarai in grado di interscambiare UCP PoolDataSource con javax.sql.DataSource .

L'ultima versione a questo punto sembra essere UCP 19.3 , che avrebbe comunque lo stesso problema, sfortunato poiché 19.3 è pubblicizzato come conforme a JDK11. Si prega di segnalare un bug contro Oracle UCP per informare i manutentori del nuovo concorrente createConnectionBuilder nell'interfaccia DataSource.

Nell'intrim, se possibile, puoi ricorrere all'utilizzo della versione 2 di UCP 11g (non 12, non 19) che non ha il metodo createConnectionBuilder sull'interfaccia PoolDataSource. Non è una situazione ideale, dal momento che stai rinunciando a un decennio di miglioramenti nell'UCP tornando a 11 g.