缺少DataSource配置文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了缺少DataSource配置文件相关的知识,希望对你有一定的参考价值。

参考技术A 由于我们做的是微服务的架构,所以在创建一个新的服务时,我拷贝的是之前项目的东西,由于少拷贝了一个DataSource的配置类,报了如下的错误:

09:31:18.691 [localhost-startStop-1] ERROR org.springframework.boot.web.embedded.tomcat.TomcatStarter - [log,87] - Error starting Tomcat context. Exception: org.springframework.beans.factory.BeanCreationException. Message: Error creating bean with name 'servletEndpointRegistrar' defined in class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/ServletEndpointManagementContextConfiguration$WebMvcServletEndpointManagementContextConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.endpoint.web.ServletEndpointRegistrar]: Factory method 'servletEndpointRegistrar' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'healthEndpoint' defined in class path resource [org/springframework/boot/actuate/autoconfigure/health/HealthEndpointConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.health.HealthEndpoint]: Factory method 'healthEndpoint' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthIndicatorAutoConfiguration': Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthIndicatorAutoConfiguration$$EnhancerBySpringCGLIB$$49aceae4]: Constructor threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource': Post-processing of FactoryBean's singleton object failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scopedTarget.dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class

09:31:18.722 [main] INFO  org.apache.catalina.core.StandardService - [log,180] - Stopping service [Tomcat]

09:31:18.738 [localhost-startStop-1] WARN  org.apache.catalina.loader.WebappClassLoaderBase - [log,180] - The web application [ROOT] appears to have started a thread named [raven-pool-1-thread-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:

sun.misc.Unsafe.park(Native Method)

java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)

java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)

java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)

java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:680)

java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)

java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)

java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

java.lang.Thread.run(Thread.java:745)

09:31:18.740 [localhost-startStop-1] WARN  org.apache.catalina.loader.WebappClassLoaderBase - [log,180] - The web application [ROOT] appears to have started a thread named [AsyncReporterorg.springframework.cloud.sleuth.zipkin2.sender.RestTemplateSender@6004c0d3] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:

sun.misc.Unsafe.park(Native Method)

java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)

java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)

zipkin2.reporter.ByteBoundedQueue.drainTo(ByteBoundedQueue.java:81)

zipkin2.reporter.AsyncReporter$BoundedAsyncReporter.flush(AsyncReporter.java:257)

zipkin2.reporter.AsyncReporter$Builder$1.run(AsyncReporter.java:190)

09:31:18.742 [localhost-startStop-1] WARN  org.apache.catalina.loader.WebappClassLoaderBase - [log,180] - The web application [ROOT] appears to have started a thread named [raven-pool-1-thread-2] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:

sun.misc.Unsafe.park(Native Method)

java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)

java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)

java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)

java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:680)

java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)

java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)

java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

java.lang.Thread.run(Thread.java:745)

09:31:18.750 [main] WARN  o.s.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext - [log,87] - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat

09:31:19.077 [AsyncReporterorg.springframework.cloud.sleuth.zipkin2.sender.RestTemplateSender@6004c0d3] INFO  org.springframework.context.annotation.AnnotationConfigApplicationContext - [log,87] - Refreshing SpringClientFactory-10.0.86.196: startup date [Wed Oct 31 09:31:19 CST 2018]; parent: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@60d1b21f

09:31:19.087 [AsyncReporterorg.springframework.cloud.sleuth.zipkin2.sender.RestTemplateSender@6004c0d3] INFO  org.apache.catalina.loader.WebappClassLoaderBase - [log,182] - Illegal access: this web application instance has been stopped already. Could not load [org/springframework/cloud/consul/discovery/ConsulRibbonClientConfiguration.class]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.

java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [org/springframework/cloud/consul/discovery/ConsulRibbonClientConfiguration.class]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.

at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1329)

at org.apache.catalina.loader.WebappClassLoaderBase.getResourceAsStream(WebappClassLoaderBase.java:1063)

at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:174)

at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:51)

at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:103)

at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:123)

at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:81)

at org.springframework.context.annotation.ConfigurationClassParser.retrieveBeanMethodMetadata(ConfigurationClassParser.java:400)

at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:318)

at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:245)

at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:202)

at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:170)

at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:316)

at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:233)

at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:271)

at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:91)

at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:694)

at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:532)

at org.springframework.cloud.context.named.NamedContextFactory.createContext(NamedContextFactory.java:117)

at org.springframework.cloud.context.named.NamedContextFactory.getContext(NamedContextFactory.java:85)

at org.springframework.cloud.netflix.ribbon.SpringClientFactory.getContext(SpringClientFactory.java:118)

at org.springframework.cloud.context.named.NamedContextFactory.getInstance(NamedContextFactory.java:126)

at org.springframework.cloud.netflix.ribbon.SpringClientFactory.getInstance(SpringClientFactory.java:108)

at org.springframework.cloud.netflix.ribbon.SpringClientFactory.getLoadBalancer(SpringClientFactory.java:57)

at org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.getLoadBalancer(RibbonLoadBalancerClient.java:155)

at org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.getServer(RibbonLoadBalancerClient.java:144)

at org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.choose(RibbonLoadBalancerClient.java:76)

at org.springframework.cloud.sleuth.zipkin2.sender.LoadBalancerClientZipkinLoadBalancer.instance(LoadBalancerClientZipkinLoadBalancer.java:42)

at org.springframework.cloud.sleuth.zipkin2.sender.ZipkinRestTemplateSenderConfiguration$1.zipkinUrl(ZipkinRestTemplateSenderConfiguration.java:104)

at org.springframework.cloud.sleuth.zipkin2.sender.ZipkinRestTemplateWrapper.doExecute(ZipkinRestTemplateSenderConfiguration.java:130)

at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:622)

at org.springframework.cloud.sleuth.zipkin2.sender.RestTemplateSender.post(RestTemplateSender.java:112)

at org.springframework.cloud.sleuth.zipkin2.sender.RestTemplateSender$HttpPostCall.doExecute(RestTemplateSender.java:123)

at org.springframework.cloud.sleuth.zipkin2.sender.RestTemplateSender$HttpPostCall.doExecute(RestTemplateSender.java:115)

at zipkin2.Call$Base.execute(Call.java:379)

at zipkin2.reporter.AsyncReporter$BoundedAsyncReporter.flush(AsyncReporter.java:286)

at zipkin2.reporter.AsyncReporter$Builder$1.run(AsyncReporter.java:190)

09:31:19.094 [AsyncReporterorg.springframework.cloud.sleuth.zipkin2.sender.RestTemplateSender@6004c0d3] WARN  org.springframework.context.annotation.AnnotationConfigApplicationContext - [log,87] - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [org.springframework.cloud.consul.discovery.ConsulRibbonClientConfiguration]; nested exception is java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [org/springframework/cloud/consul/discovery/ConsulRibbonClientConfiguration.class]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.

解决方法:添加DataSource配置类。

以上是关于缺少DataSource配置文件的主要内容,如果未能解决你的问题,请参考以下文章

CP30--使用配置文件properties进行连接池对象DataSource的创建

Spring初学之使用外部配置文件dataSource

通过获取配置文件的方式获取dataSource

配置文件相关

放大:无法获取配置文件:缺少配置文件配置:未定义

springboot-配置多个数据源