Spring Boot无法从datasource确定jdbc url

Yak*_*kiv 6 java database datasource spring-boot application.properties

我正在使用spring boot构建应用程序,需要通过服务而不是sid连接到Oracle DB.

这些是数据源设置:

spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@//hostname.companyname.corp:1500/servicename.companyname.com
spring.datasource.username=username
spring.datasource.password=password
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.OracleDialect
spring.jpa.properties.hibernate.default_schema=SCHEMA_NAME
Run Code Online (Sandbox Code Playgroud)

我已经探讨了关于tns连接的另外两个响应: 通过TNS连接Oracle无法正常工作 以及 如何将JDBC连接到tns oracle

但是我遇到了一个不同的错误:

org.springframework.jdbc.support.MetaDataAccessException:无法获取用于提取元数据的Connection; 嵌套异常是org.springframework.jdbc.CannotGetJdbcConnectionException:无法获取JDBC连接; 嵌套异常是org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:339)〜[spring-jdbc-4.3.13.RELEASE.jar:4.3.13.RELEASE]中的java.sql.SQLException. springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:366)〜[弹簧JDBC-4.3.13.RELEASE.jar:4.3.13.RELEASE]在org.springframework.boot.autoconfigure.orm.jpa.DatabaseLookup .getDatabase(DatabaseLookup.java:72)〜[spring-boot-autoconfigure-1.5.9.RELEASE.jar:1.5.9.RELEASE]在org.springframework.boot.autoconfigure.orm.jpa.JpaProperties.determineDatabase(JpaProperties. java:139)[org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration.jpaVendorAdapter(JpaBaseConfiguration.java:105)[spring] -boot-autoconfigure-1.5.9.RELEASE.jar:1.5.9.RELEASE] at org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration $$ EnhancerBySpringCGLIB $$ 47d988e9.CGLIB $ jpaVendorAdapter $ 4()[spring-boot -autoconfigure-1.5.9.RELEASE.jar:1.5.9.RELEASE] at org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration $$ EnhancerBySpringCGLIB $$ 47d988e9 $$ FastClassBySpringCGLIB $$ 27b4f4ca.invoke()[spring-boot-autoconfigure-1.5.9 .RELEASE.jar:1.5.9.RELEASE]在org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)[spring-core-4.3.13.RELEASE.jar:4.3.13.RELEASE] at at org.springframework.context.annotation.ConfigurationClassEnhancer $ BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358)[弹簧上下文4.3.13.RELEASE.jar:4.3.13.RELEASE]在org.springframework.boot.autoconfigure.orm. jpa.HibernateJpaAutoConfiguration $$ EnhancerBySpringCGLIB $$ 47d988e9.jpaVendorAdapter()[spring-boot-autoconfigure-1.5.9.RELEASE.jar:1.5.9.RELEASE] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)〜[na: 1.8.0_152] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)〜[na:1.8.0_152] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)〜[na:1.8.0_152] at jav org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162)中的a.lang.reflect.Method.invoke(未知来源)〜[na:1.8.0_152] [spring-beans-4.3.13 .RELEASE.jar:4.3.13.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588)[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE ] org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173)org.springframework.beans.factory中的[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]. support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067)[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java: 513)在组织中的[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE].springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] org.springframework.beans.factory.support.AbstractBeanFactory $ 1 .getObject(AbstractBeanFactory.java:306)[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)[ spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)[spring-beans-4.3.13.RELEASE. jar:4.3.13.RELEASE] org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org org.springframework上的.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE].bean.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency( DefaultListableBeanFactory.java:1066)org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)中的[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] [spring-beans] -4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)[spring-beans-4.3.13.RELEASE.jar:4.3 .13.RELEASE]在org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:467)[弹簧豆-4.3.13.RELEASE.jar:4.3.13.RELEASE在org.springframework]. beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173)[spr ing-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067)[spring-beans-4.3.13.RELEASE. jar:4.3.13.RELEASE] org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)org上的[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] .springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)org.springframework.beans.factory.support.AbstractBeanFactory中的[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] $ 1.getObject(AbstractBeanFactory.java:306)[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) org.springframework.beans.factory.support.AbstractBeanF中的[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)中的actory.doGetBean(AbstractBeanFactory.java:302)[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] [spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]在org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)[spring-beans-4.3.13.RELEASE的.jar:4.3.13.RELEASE]在org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)[弹簧豆-4.3.13.RELEASE.jar:4.3.13.RELEASE]在org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)[弹簧豆-4.3.13.RELEASE.jar:4.3.13.RELEASE]在org.springframework.beans.factory.support.在org.springframework.beans.factory.support.ConstructorResolver中的ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE].org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:467)中的createArgumentArray(ConstructorResolver.java:741)[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] -beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173)[spring-beans-4.3.13.RELEASE.jar :4.3.13.RELEASE] org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067)[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org. springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory. createBean(AbstractAutowireCapableBeanFactory.java:483)[spri ng-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:306)[spring-beans-4.3.13.RELEASE .jar:4.3.13.RELEASE]在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] org.springframework.beans.factory.support. org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1080)中的AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] [spring -context-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:857)[chring-context-4.3.1 3.RELEASE.jar:4.3.13.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE] org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)[spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE] org.springframework.boot.SpringApplication.refresh (SpringApplication.java:693)[spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE] org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)[spring-boot-1.5. 9.RELEASE.jar:1.5.9.RELEASE] org.springframework.boot.SpringApplication.run(SpringApplication.java:303)[spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE] at org .springframework.boot.SpringApplication.run(SpringApplication.java:1118)[spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE] org.springframework.boot.SpringApplication.run(SpringApplication.java:1107 )[spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE] at com.swift.cpms.CpmsWebApp.main(CpmsWebApp.java:18)[classes /:na]引起:org.springframework.jdbc.CannotGetJdbcConnectionException:无法获取JDBC连接; 嵌套异常是org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)〜[spring-jdbc-4.3.13.RELEASE.jar:4.3.13.RELEASE]中的java.sql.SQLException. springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:326)~ [spring-jdbc-4.3.13.RELEASE.jar:4.3.13.RELEASE] ...省略了61个常见帧引起的:java.sql. SQLException:null org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:323)〜[tomcat-jdbc-8.5.23.jar:na] at org.apache.tomcat.jdbc.pool.PooledConnection .connect(PooledConnection.java:203)〜[tomcat-jdbc-8.5.23.jar:na] org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:735)〜[tomcat-jdbc- 8.5.23.jar:na] atg.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:667)〜[tomcat-jdbc-8.5.23.jar:na] at org.apache.tomcat. org.apache.tomcat.jdbc.pool.Con中的jdbc.pool.ConnectionPool.init(ConnectionPool.java:482)〜[tomcat-jdbc-8.5.23.jar:na] nectionPool.(ConnectionPool.java:154)〜[tomcat-jdbc-8.5.23.jar:na] at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:118)~ [tomcat-jdbc- 8.5.23.jar:na] atg.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:107)〜[tomcat-jdbc-8.5.23.jar:na] at org.apache.tomcat. jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:131)〜[Tomcat的JDBC-8.5.23.jar:NA]在org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)〜[弹簧-jdbc-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)〜[spring-jdbc-4.3.13.RELEASE.jar: 4.3.13.RELEASE] ...省略了62个常见帧引起:java.nio.BufferUnderflowException:java.nio.ByteBuffer中的java.nio.HeapByteBuffer.get(未知源)〜[na:1.8.0_152]为null.在oracle.net.ns.NIOAcceptPacket.readPayloadBuffer(NIOAcceptPacket.java:167)〜[ojdbc8-12.2.0.1.jar获取(未知来源)〜[na:1.8.0_152]:12.2.0.1.0] oracle.net.ns.NIOPacket.readNIOPacket(NIOPacket.java:282)〜[ojdbc8-12.2.0.1.jar:12.2.0.1.0] at oracle.net.ns.NSProtocolNIO.negotiateConnection( NSProtocolNIO.java:118)~ [ojdbc8-12.2.0.1.jar:12.2.0.1.0] at oracle.net.ns.NSProtocol.connect(NSProtocol.java:317)〜[ojdbc8-12.2.0.1.jar:12.2 .o.1.0.0]在oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1438)〜[ojdbc8-12.2.0.1.jar:12.2.0.1.0] at oracle.jdbc.driver.T4CConnection.logon(T4CConnection) .java:518)〜[ojdbc8-12.2.0.1.jar:12.2.0.1.0] at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:688)〜[ojdbc8-12.2.0.1.jar:12.2. 0.1.0] at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39)〜[ojdbc8-12.2.0.1.jar:12.2.0.1.0] at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.在org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:310)〜[tomcat-jdbc-8.5.23 .jar:na] ...省略了72个常用帧

如果我切换到调试模式,我会得到更多细节,然后发生异常:

2018-03-01 15:34:21.435 DEBUG 44920 --- [main] osjdbc.datasource.DataSourceUtils:从DataSource获取JDBC连接2018-03-01 15:34:21.446 DEBUG 44920 --- [
main] oatomcat.jdbc .pool.PooledConnection:使用类实例化驱动程序:oracle.jdbc.driver.OracleDriver [url = jdbc:oracle:thin:@ // exa22-scan8.swift.corp:1500/cpmsdev_usr.swift.com] 2018-03-01 15:34:21.447 DEBUG 44920 --- [main] oatomcat.jdbc.pool.ClassLoaderUtil:尝试从sun.misc.Launcher $ AppClassLoader@659e0bfd加载类[oracle.jdbc.driver.OracleDriver]

我使用相同的URL,service_name和凭据连接到sqldeveloper中的DB,并且可以确认该部分是正确的.我也尝试过以上链接设置中建议的选项

System.setProperty("oracle.net.tns_admin", "C:/ora12/client_1/network/admin");
Run Code Online (Sandbox Code Playgroud)

并使用相同的结果设置url @service_name

我完全迷失了它可能是什么原因 - 语法错误或其他什么?是否有其他人有任何可能导致它的建议以及可能的解决方案是什么?

pom.xml dependecnies

<dependencies>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>       
<dependency>
  <groupId>com.oracle.ojdbc</groupId>
  <artifactId>ojdbc8</artifactId>
  <version>12.2.0.1</version>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

感谢任何建议或帮助!

Yak*_*kiv 2

事实证明,该问题是由数据库服务器上的 etc/issue 文件的大小引起的。切换到较旧的 ojdbc6 驱动程序是一种可选的解决方案,或者减少 Linux 机器上的 etc/issue 的大小是另一种解决方案。