SpringCloud常见踩坑
一、运行服务后报错
Type javax.xml.bind.JAXBContext not present
问题原因:java9 及以上版本 由于 模块化的概念使得JAXB默认没有加载;
解决办法:jaxb-api是存在jdk中的,只是默认没有加载而已,手动引入即可。
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
二、discoveryClient实例中没有getInstances方法
问题原因:导错包了,要导入接口类的包。
解决办法:导入接口类的包。
import org.springframework.cloud.client.discovery.DiscoveryClient;
@Resource
private DiscoveryClient discoveryClient;
三、超时配置不生效
问题原因:hystrix和ribbon都进行了超时设置
解决办法:如果hystrix.command.default.execution.timeout.enable为true,则会有两个执行
方法超时的配置,一个就是ribbon的ReadTimeout,一个就是熔断器,hystrix的timeoutInMilliseconds
此时谁的值小谁生效。
四、gateway启动失败
问题原因:gateway依赖与SpringBoot的相关依赖冲突
解决办法:如果配置gateway就不要配置spring-boot-starter-web依赖,不然报错。