sql >> Base de Datos >  >> RDS >> Oracle

Migración de Java 11:createConnectionBuilder() de PoolDataSourceImpl choca con createConnectionBuilder() de javax.sql.DataSource

Esto es incompatibilidad de interfaz. javax.sql.DataSource define un método

default ConnectionBuilder createConnectionBuilder() throws SQLException

Y según el contrato, el valor devuelto debe ser del tipo ConnectionBuilder.

Si echa un vistazo a la documentación de oracle.ucp.jdbc.PoolDataSourceImpl, define el método como

public UCPConnectionBuilder createConnectionBuilder()

mientras que oracle.ucp.jdbc.UCPConnectionBuilder no es un subtipo de java.sql.ConnectionBuilder .

Ahora, a menos que Oracle publique una versión nunca de oracle.ucp.jdbc.UCPConnectionBuilder interfaz que extiende java.sql.ConnectionBuilder , no podrá intercambiar UCP PoolDataSource con javax.sql.DataSource .

La última versión en este momento parece ser UCP 19.3 , que aún tendría el mismo problema, lo cual es desafortunado ya que 19.3 se anuncia como compatible con JDK11. Informe un error contra Oracle UCP para que los mantenedores estén al tanto del nuevo participante createConnectionBuilder en la interfaz de DataSource.

En el interior, si es factible, puede volver a usar 11g versión 2 de UCP (no 12, no 19) que no tiene el método createConnectionBuilder en la interfaz PoolDataSource. No es una situación ideal, ya que está renunciando a una década de mejoras en UCP al volver a 11g.