1

I would define the access to my Oracle database on a application.yml

I succeed to make a connection with code like this where it's define in a main class.

System.setProperty("oracle.net.tns_admin","MyOracleHome/NETWORK/ADMIN");
Class.forName("oracle.jdbc.OracleDriver");
Connection c = DriverManager.getConnection("jdbc:oracle:thin@tnsName","username","password");

I wish do the same thing with application.yml I tried with :

oracle:
  net:
    tns_admin: MyOracleHome/NETWORK/ADMIN
spring:
  datasource:
    url: jdbc:oracle:thin:@tnsName
    username: username
    password: password
    driverClassName: oracle.jdbc.driver.OracleDriver

with a Main class :

@SpringBootApplication
public class MonApplication{
  public static void main(String[] args)  {
    SpringApplication.run(MonApplication.class, args);
  }
}

Launching MonApplication, I obtained :

2018-12-28 16:25:56 [restartedMain] ERROR com.zaxxer.hikari.pool.HikariPool - HikariPool - Exception during pool initialization.
java.sql.SQLRecoverableException: Erreur d'E/S: Unknown host specified 
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:419)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:536) (....)

Caused by: oracle.net.ns.NetException: Unknown host specified 
at oracle.net.resolver.HostnameNamingAdapter.resolve(HostnameNamingAdapter.java:191) (....)
2018-12-28 16:25:56 [restartedMain] WARN  o.h.e.j.e.i.JdbcEnvironmentInitiator - HHH000342: Could not obtain connection to query metadata : Erreur d'E/S: Unknown host specified 
2018-12-28 16:25:56 [restartedMain] INFO  org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.spatial.dialect.postgis.PostgisPG9Dialect
2018-12-28 16:25:56 [restartedMain] INFO  org.hibernate.type.BasicTypeRegistry - HHH000270: Type registration [java.util.UUID] overrides previous : org.hibernate.type.UUIDBinaryType@4adc41d4
2018-12-28 16:25:56 [restartedMain] INFO  com.zaxxer.hikari.HikariDataSource - HikariPool - Starting...
2018-12-28 16:25:57 [restartedMain] ERROR com.zaxxer.hikari.pool.HikariPool - HikariPool - Exception during pool initialization.
java.sql.SQLRecoverableException: Erreur d'E/S: Unknown host specified 
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:419)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:536) (....)

Caused by: oracle.net.ns.NetException: Unknown host specified 
at oracle.net.resolver.HostnameNamingAdapter.resolve(HostnameNamingAdapter.java:191) (...)  
2018-12-28 16:25:57 [restartedMain] WARN  o.h.e.jdbc.spi.SqlExceptionHelper - SQL Error: 17002, SQLState: 08006
2018-12-28 16:25:57 [restartedMain] ERROR o.h.e.jdbc.spi.SqlExceptionHelper - Erreur d'E/S: Unknown host specified 
2018-12-28 16:25:57 [restartedMain] WARN  o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to open JDBC Connection for DDL execution
2018-12-28 16:25:57 [restartedMain] INFO  o.a.catalina.core.StandardService - Stopping service [Tomcat]
2018-12-28 16:25:57 [restartedMain] INFO  o.s.b.a.l.ConditionEvaluationReportLoggingListener - 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2018-12-28 16:25:57 [restartedMain] ERROR o.s.boot.SpringApplication - Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to open JDBC Connection for DDL execution
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1745)
(....) 
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to open JDBC Connection for DDL execution
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:402)
(....)
Caused by: org.hibernate.exception.JDBCConnectionException: Unable to open JDBC Connection for DDL execution
at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:115)
(....)
Caused by: java.sql.SQLRecoverableException: Erreur d'E/S: Unknown host specified 
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:419)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:536)(....)
Caused by: oracle.net.ns.NetException: Unknown host specified 
at oracle.net.resolver.HostnameNamingAdapter.resolve(HostnameNamingAdapter.java:191)
(....)

I think the problem comes from the syntax but I didn't find example of what I want.

halfer
  • 19,824
  • 17
  • 99
  • 186
Ehcnalb
  • 466
  • 4
  • 16
  • Check this question: https://stackoverflow.com/questions/36895711/can-i-define-system-properties-within-spring-boot-configuration-files – Ivan Dec 28 '18 at 15:51
  • @Ivan You suggest to apply this solution to all parameters (tns_admin,database.url...)? – Ehcnalb Dec 28 '18 at 16:00
  • No, only for System.setProperty("oracle.net.tns_admin","MyOracleHome/NETWORK/ADMIN"); since that value is used internally inside JDBC driver I think and all others are passed as parameters from your code – Ivan Dec 28 '18 at 16:01
  • Sweet, It connected with adding System.setProperty("oracle.net.tns_admin",....) before the SpringApplication.run; but it not find the tables (ORA-00942: Table ou vue inexistante) aaaarf.... – Ehcnalb Dec 28 '18 at 16:40
  • So you either connected with wrong user or that user doesn't have permissions to select from those tables – Ivan Dec 28 '18 at 16:41
  • The select is working in a main class with a Connection c = DriverManager.... Plus, I tried just to launch a Spring application – Ehcnalb Dec 28 '18 at 16:51

0 Answers0