首先说明一下情景:在配置服务端已经配置了git相关的配置,并且已经将配置服务端注册到了Eureka服务中心了,并且通过浏览器进行访问git中的文件都是可以正常访问的。
当我去创建客户端去实际操作 访问配置中心中的配置文件的过程中碰到了如下两个问题
- Request execution error. endpoint=DefaultEndpoint{ serviceUrl='http://localhost:8761/eureka/}
com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect - Description:Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
git中的配置文件如下
env: dev
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:8641/eureka/
server:
port: 8651
spring:
application:
name: product
datasource:
driver-class-name: com.mysql.jdbc.Driver
password: 123456
url: jdbc:mysql://127.0.0.1:3306/project?characterEncoding=utf-8&useSSL=false&serverTimezone=GMT
username: root
jpa:
show-sql: true
客户端 的bootstrap.yml文件中的配置如下:
spring:
application:
name: product
cloud:
config:
discovery:
enabled: true
service-id: CONFIG #CONFIG为我配置中心服务的名字
profile: dev
基本情况如上:下面说一下这两个问题的原因以及解决办法
首先说一下第一个问题,我们可以通过上面的错误提示以及git中的配置可以看出来,Eureka的端口还是8671它的默认端口,没有使用我们配置的8641。而本地也没有相应的8671端口的Eureka服务中心的启动,所以会报这个错误。为什么没有使用我们配置的8641端口?首先我们屡一下流程,首先客户端根据Eureka服务中心,找到server-id为CONFIG的服务,然后再根据CONFIG配置服务中的配置文件找到git上的文件拉取到本地。这就是它的一个大体流程,但是我们看一下上面 客户端 的bootstrap.yml文件中并没有Eureka服务中心的配置,所以它会默认去找默认的8671这个路径,所以就会出现上面的那个问题,解决办法就是将git配置文件中的Eureka服务中心的uri配置在客户端 的bootstrap.yml文件中进行配置,客户端 的bootstrap.yml文件修改如下:
spring:
application:
name: product
cloud:
config:
discovery:
enabled: true
service-id: CONFIG #CONFIG为我配置中心服务的名字
profile: dev
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:8641/eureka/
第二个错误提示的意思就是未能配置数据源:未指定“url”属性,也无法配置嵌入式数据源。原因:未能确定合适的驱动程序类,但是通过上面git中的配置文件可以看到数据库这块的配置是已经配置过的,并且已经再三确认过配置项是没有问题的。解决办法就是在启动类上面的@SpringBootApplication做出修改,修改如下:
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
@SpringBootApplication(exclud=exclude = DataSourceAutoConfiguration.class))