Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Migração do Java 11 - createConnectionBuilder() de PoolDataSourceImpl entra em conflito com createConnectionBuilder() de javax.sql.DataSource


Isso é incompatibilidade de interface. javax.sql.DataSource define um método
default ConnectionBuilder createConnectionBuilder() throws SQLException

E de acordo com o contrato, o valor de retorno deve ser do tipo ConnectionBuilder.

Se você der uma olhada na documentação do oracle.ucp.jdbc.PoolDataSourceImpl, ele define o método como
public UCPConnectionBuilder createConnectionBuilder()

enquanto oracle.ucp.jdbc.UCPConnectionBuilder não é um subtipo de java.sql.ConnectionBuilder .

Agora, a menos que a Oracle lance uma versão never do oracle.ucp.jdbc.UCPConnectionBuilder interface que estende java.sql.ConnectionBuilder , você não poderá trocar UCP PoolDataSource com javax.sql.DataSource .

A versão mais recente neste momento parece ser UCP 19.3 , o que ainda causaria o mesmo problema, o que é lamentável, pois o 19.3 é anunciado como compatível com JDK11. Por favor, levante um bug contra o Oracle UCP para conscientizar os mantenedores do novo participante createConnectionBuilder na interface DataSource.

No intrim, se for viável, você pode voltar a usar 11g release 2 do UCP (não 12, não 19) que não possui o método createConnectionBuilder na interface PoolDataSource. Não é uma situação ideal, já que você está desistindo de uma década de melhorias no UCP voltando para 11g.