Camunda-SpringBoot-Oracle connexion issue

Hello Camunda community,
I’m relatively new to Camunda and I have troubles creating a usable Oracle connexion in my Camunda Spring Boot development :
Oracle version : 12.1
Oracle driver successfully installed with Maven : ojdbc7-12.1.0.1.jar
Our connexions Oracle are done via ldap : jdbc:oracle:thin:@ldap://ldap-tns1:4035/cn=OracleContext,dc=oracle,dc=chuv/camunda_db_dev

This ldap connexion works well for others applications.
The Oracle schema is up and running well.
The error is as follows :

java.sql.SQLException: L’URL Oracle indiquée n’est pas valide
at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:309) ~[ojdbc7-12.1.0.1.jar:12.1.0.1.0]
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:230) ~[ojdbc7-12.1.0.1.jar:12.1.0.1.0]

We use the yaml file to create the sping.datasource : here is the oracle connexion part (i removed the camunda engine db hikari/h2 part) :

spring:
  profiles:
    active: "dev"
    main:
      banner-mode: "off"
spring.datasource:
  oracle:
    driver-class-name: oracle.jdbc.OracleDriver
    url: jdbc:oracle:thin:@ldap://ldap-tns1:4035/cn=OracleContext,dc=oracle,dc=chuv/camunda_db_dev
    username: camunda_app
    password: XXXXXXXXXX
    test-on-borrow: true
    validation-query: SELECT 1 FROM dual
    max-active: 5
spring.jpa:
   database: Oracle
   database-platform: org.hibernate.dialect.Oracle10gDialect 

I also have a DataSourceConfiguration class as follows : (i removed the camunda engine db hikari/h2 part) :

@Configuration
@EnableConfigurationProperties({
	EngineDataSourceProperties.class,
	OracleDataSourceProperties.class
})
public class DataSourceConfiguration {

  /**
   * Datasource engine properties.
   */
  @Autowired
  private EngineDataSourceProperties engineDataSourceProperties;

  @Autowired
  private OracleDataSourceProperties oracleDataSourceProperties;

  @Bean
  @Primary
  @ConfigurationProperties("spring.datasource")
  public DataSourceProperties businessDataSourceProperties() {
	return new DataSourceProperties();
  }

  @Bean
  @Primary
  @ConfigurationProperties("spring.datasource.camunda.db")
  public OracleDataSource businessDataSource() {
	return businessDataSourceProperties().initializeDataSourceBuilder().type(OracleDataSource.class)
		.build();
  }

And finally the OracleDataSourceProperties class :

@ConfigurationProperties(prefix = "spring.datasource.oracle") //oracle.datasource
public class OracleDataSourceProperties extends DataSourceProperties {

  @JsonProperty("driver-class-name")
  private String driverClassName;

  @JsonProperty("sql-script-encoding")
  private Charset sqlScriptEncoding;

  public OracleDataSourceProperties() {
    super();
  }

  @Override
  public String toString() {
    final StringBuilder sb = new StringBuilder();
    sb.append("OracleDataSourceProperties{");
    sb.append("driverClassName='").append(driverClassName);
    sb.append(", url=").append(this.getUrl());
    sb.append(", username=").append(this.getUsername());
    sb.append(", password=").append(this.getPassword());
    sb.append(", sqlScriptEncoding=").append(sqlScriptEncoding);
    sb.append("}");
    return sb.toString();
  }

  //  Getters ///////////////////////////////////////////////////////////////////////////////

  @Override
  public String getDriverClassName() {
    return driverClassName;
  }

  @Override
  public Charset getSqlScriptEncoding() {
    return sqlScriptEncoding;
  }

  //  Setters ///////////////////////////////////////////////////////////////////////////////

  @Override
  public void setDriverClassName(String driverClassName) {
    this.driverClassName = driverClassName;
  }

  @Override
  public void setSqlScriptEncoding(Charset sqlScriptEncoding) {
    this.sqlScriptEncoding = sqlScriptEncoding;
  }

Any suggestions ?
Thanks for the help
Fred

It will be easier to provide solutions if the post in English.

Can you translate the exception message and post it, if possible?

java.sql.SQLException: The Oracle URL indicated is not valid

By the way I’ve made progress : I did some cleaning in my spring configuration (correct use of @ConfigurationProperties and json metadata of parameters and yaml file), and now I can connect to the Oracle DB, but a new error is sent back by the Oracle Driver :

java.sql.SQLException: ORA-01017: invalid username/password; logon denied
	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450) ~[ojdbc7-12.1.0.1.jar:12.1.0.1.0]
	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:392) ~[ojdbc7-12.1.0.1.jar:12.1.0.1.0]
	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:385) ~[ojdbc7-12.1.0.1.jar:12.1.0.1.0]

I am 100% sure of my user/password.

I found some problems with this ojdbc driver in the following post : https://community.oracle.com/thread/2188514
But I’m not sure it’s related to my problem

Refer this post, might be helpful:

https://groups.google.com/forum/m/#!topic/dbfit/7zSgetsgyLs

https://docs.oracle.com/cd/B28359_01/java.111/b31224/urls.htm#CHDBICFA

I tried this morning a direct connection to the db with ldap, without any spring configuration… and it works perfectly well. So finally it might be a problem between spring boot, yaml config, the driver version.
Any suggestion on the security part of an Oracle driver and spring ?

Here is the class :

package ch.chuv.poc.dmn;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class CamundaOracleConnectionTest {
  
    public static void main(String[] args) {

      Connection conn = null;
      try {
        Class.forName("oracle.jdbc.OracleDriver");

        String dbURL = "jdbc:oracle:thin:@ldap://ldap-tns1:4035/cn=OracleContext,dc=oracle,dc=chuv/camunda_db_dev ldap://ldap-tns2:4035/cn=OracleContext,dc=oracle,dc=chuv/camunda_db_dev";
        Properties properties = new Properties();
        properties.put("user", "camunda_app");
        properties.put("password", "XXXXXX");
        conn = DriverManager.getConnection(dbURL, properties);
        Statement stmt = conn.createStatement();
        ResultSet rs;

        rs = stmt.executeQuery("select IPP, PRENOM, NOM, SEJOUR from PRN_INPUT_GROUPES");
        while ( rs.next() ) {
          String ipp = rs.getString("IPP");
          String prenom = rs.getString("PRENOM");
          String nom = rs.getString("NOM");
          String sejour = rs.getString("SEJOUR");
          System.out.println("ipp = "+ipp+" prenom = "+prenom+" nom = "+nom+" sejour = "+sejour);
        }
        conn.close();

        if (conn != null) {
          System.out.println("Connected with connection #3");
        }
      } catch (ClassNotFoundException ex) {
        ex.printStackTrace();
      } catch (SQLException ex) {
        ex.printStackTrace();
      } finally {
        try {
          if (conn != null && !conn.isClosed()) {
            conn.close();
          }
        } catch (SQLException ex) {
          ex.printStackTrace();
        }
      }
  }
}

It finaly worked with my db connexion. It was a spring boot configuration problem. Basically, the application.yaml should be like :
spring:
profiles:
active: “dev”
main:
banner-mode: “off”
datasource:
url: jdbc:oracle:thin:@ldap://ldap-tns1:4035/cn=OracleContext,dc=oracle,dc=chuv/camunda_db_dev ldap://ldap-tns2:4035/cn=OracleContext,dc=oracle,dc=chuv/camunda_db_dev
username: camunda_app
password: XXXXXXXX
driver-class-name: oracle.jdbc.OracleDriver
sql-script-encoding: UTF-8
xa.data-source-class-name: oracle.jdbc.xa.client.OracleXADataSource