Drivers oracle atualizados recentemente de ojdbc8 para ojdbc17 e ucp17.jar, para o servidor tocmat onde um aplicativo baseado em Java17 é implantado. Mas a conexão com o banco de dados agora mostra o seguinte erro. Outros jars no classpath são
org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: UCP-0: Unable to start the Universal Connection Pool
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:83)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:646)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:960)
Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: when l value specified, it must be less than bitlength(p)
at oracle.net.aso.DiffieHellman$DHJCEWrapper.getPublicKey(DiffieHellman.java:148)
at oracle.net.ano.DataIntegrityService.receiveServiceData(DataIntegrityService.java:253)
at oracle.net.ano.Service.receiveSelection(Service.java:360)
And the last caused by is :
Caused by: java.lang.IllegalArgumentException: when l value specified, it must be less than bitlength(p)
at org.bouncycastle.crypto.params.DHParameters.<init>(Unknown Source)
at org.bouncycastle.crypto.params.DHParameters.<init>(Unknown Source)
at org.bouncycastle.jce.provider.JDKKeyPairGenerator$DH.initialize(Unknown Source)
at java.base/java.security.KeyPairGenerator.initialize(KeyPairGenerator.java:436)
Eu tinha o antigo jar bouncy castle bcprov-jdk16:1.46. Atualizei para bcprov-jdk18on. Continuo recebendo o mesmo erro. Qualquer ajuda é bem-vinda.
Este erro vem do Bouncy Castle ao inicializar parâmetros Diffie-Hellman. Isso significa que a inicialização viola a especificação Diffie-Hellman.
Isso normalmente acontece quando há:
Versão do castelo inflável incompatível ou desatualizada
Conflito entre várias versões do Bouncy Castle no classpath
Parâmetros Diffie-Hellman inválidos ou sem suporte passados do driver Oracle ou da camada de segurança
As etapas que podem ajudar na resolução do erro:
Garanta que o Bouncy Castle esteja atualizado corretamente.
Para Java 17, a versão recomendada é
bcprov-jdk18on:1.78
ou posterior.Garantir que não haja outras versões do Bouncy Castle no classpath
Mesmo que você tenha atualizado a versão do Bouncy Castle, pode haver outras versões no classpath que podem ser carregadas antes da versão atualizada, causando o erro.
Verifique
WEB-INF/lib
ouclasspath
inclua qualquer um.Para Maven você pode usar
mvn dependency:tree | grep bcprov
.Adicione os jars de segurança Oracle necessários:
oraclepki.jar
,osdt_cert.jar
,osdt_core.jar
Você pode baixá-los da página de download do Oracle JDBC (Companion Jars)