feign 调用报错sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certifica

报错内容如下:

2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] 2017-08-09 02:27:04.295 ERROR 14 --- [io-8080-exec-10] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.netflix.hystrix.exception.HystrixRuntimeException: IUserClient#list(ExecutiveTeam) failed and no fallback available.] with root cause
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at sun.security.validator.Validator.validate(Validator.java:260)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1491)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at sun.security.ssl.Handshaker.process_record(Handshaker.java:914)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1283)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at feign.Client$Default.convertAndSend(Client.java:133)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at feign.Client$Default.execute(Client.java:73)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at org.springframework.cloud.netflix.feign.ribbon.RetryableFeignLoadBalancer$1.doWithRetry(RetryableFeignLoadBalancer.java:91)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at org.springframework.cloud.netflix.feign.ribbon.RetryableFeignLoadBalancer$1.doWithRetry(RetryableFeignLoadBalancer.java:76)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:286)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:163)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at org.springframework.cloud.netflix.feign.ribbon.RetryableFeignLoadBalancer.execute(RetryableFeignLoadBalancer.java:76)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at org.springframework.cloud.netflix.feign.ribbon.RetryableFeignLoadBalancer.execute(RetryableFeignLoadBalancer.java:47)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at com.netflix.client.AbstractLoadBalancerAwareClient$1.call(AbstractLoadBalancerAwareClient.java:109)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at com.netflix.loadbalancer.reactive.LoadBalancerCommand$3$1.call(LoadBalancerCommand.java:303)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at com.netflix.loadbalancer.reactive.LoadBalancerCommand$3$1.call(LoadBalancerCommand.java:287)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.internal.util.ScalarSynchronousObservable$3.call(ScalarSynchronousObservable.java:231)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.internal.util.ScalarSynchronousObservable$3.call(ScalarSynchronousObservable.java:228)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.Observable.unsafeSubscribe(Observable.java:10211)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.drain(OnSubscribeConcatMap.java:286)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.onNext(OnSubscribeConcatMap.java:144)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:185)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:180)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:94)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:42)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber$1.call(OperatorRetryWithPredicate.java:127)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.internal.schedulers.TrampolineScheduler$InnerCurrentThreadScheduler.enqueue(TrampolineScheduler.java:73)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.internal.schedulers.TrampolineScheduler$InnerCurrentThreadScheduler.schedule(TrampolineScheduler.java:52)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber.onNext(OperatorRetryWithPredicate.java:79)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber.onNext(OperatorRetryWithPredicate.java:45)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.internal.util.ScalarSynchronousObservable$WeakSingleProducer.request(ScalarSynchronousObservable.java:276)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.Subscriber.setProducer(Subscriber.java:209)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.internal.util.ScalarSynchronousObservable$JustOnSubscribe.call(ScalarSynchronousObservable.java:138)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.internal.util.ScalarSynchronousObservable$JustOnSubscribe.call(ScalarSynchronousObservable.java:129)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.Observable.subscribe(Observable.java:10307)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.Observable.subscribe(Observable.java:10274)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.observables.BlockingObservable.blockForSingle(BlockingObservable.java:445)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at rx.observables.BlockingObservable.single(BlockingObservable.java:342)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at com.netflix.client.AbstractLoadBalancerAwareClient.executeWithLoadBalancer(AbstractLoadBalancerAwareClient.java:102)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at org.springframework.cloud.netflix.feign.ribbon.LoadBalancerFeignClient.execute(LoadBalancerFeignClient.java:63)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:97)
2017-08-09T10:27:04.308+08:00 [APP/0] [OUT] at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:76)
2017-08-09T10:27:04.309+08:00 [APP/0] [OUT] at feign.hystrix.HystrixInvocationHandler$1.run(HystrixInvocationHandler.java:108)
2017-08-09T10:27:04.309+08:00 [APP/0] [OUT] at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:301)
2017-08-09T10:27:04.309+08:00 [APP/0] [OUT] at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:297)
2017-08-09T10:27:04.309+08:00 [APP/0] [OUT] at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:46)
2017-08-09T10:27:04.309+08:00 [APP/0] [OUT] at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35)
2017-08-09T10:27:04.309+08:00 [APP/0] [OUT] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
2017-08-09T10:27:04.309+08:00 [APP/0] [OUT] at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
2017-08-09T10:27:04.309+08:00 [APP/0] [OUT] at rx.Observable.unsafeSubscribe(Observable.java:10211)
2017-08-09T10:27:04.309+08:00 [APP/0] [OUT] at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:51)
2017-08-09T10:27:04.309+08:00 [APP/0] [OUT] at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)
2017-08-09T10:27:04.309+08:00 [APP/0] [OUT] at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)
2017-08-09T10:27:04.309+08:00 [APP/0] [OUT] at rx.internal.operators.OperatorSubscribeOn$1.call(OperatorSubscribeOn.java:94)
2017-08-09T10:27:04.309+08:00 [APP/0] [OUT] at com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction$1.call(HystrixContexSchedulerAction.java:56)
2017-08-09T10:27:04.309+08:00 [APP/0] [OUT] at com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction$1.call(HystrixContexSchedulerAction.java:47)
2017-08-09T10:27:04.309+08:00 [APP/0] [OUT] at com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction.call(HystrixContexSchedulerAction.java:69)
2017-08-09T10:27:04.309+08:00 [APP/0] [OUT] at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
2017-08-09T10:27:04.309+08:00 [APP/0] [OUT] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
2017-08-09T10:27:04.309+08:00 [APP/0] [OUT] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
2017-08-09T10:27:04.309+08:00 [APP/0] [OUT] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
2017-08-09T10:27:04.309+08:00 [APP/0] [OUT] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
2017-08-09T10:27:04.309+08:00 [APP/0] [OUT] at java.lang.Thread.run(Thread.java:745)

查阅资料说是http调用https引起的,解决方法:
在paas容器环境配置里加上下面配置

name: TRUST_CERTS
value:xxxxx.paas.haha.com.cn

xxxxx.paas.haha.com.cn是容器地址,开发环境就写开发,生产就写生产

当使用Feign进行远程调用时,有时会遇到.lang.reflect.InvocationTargetException异常。这个异常是由Java的反射机制引起的,表示在调用方法时发生了异常。 java.lang.reflect.InvocationTargetException是一个包装异常,它将原始异常封装在内部。通常,我们需要查看InvocationTargetException的getCause()方法来获取实际的异常信息。 出现java.lang.reflect.InvocationTargetException异常的原因可能有很多,以下是一些常见的情况: 1. 远程服务不可用:如果远程服务没有启动或者无法访问,Feign调用就会失败,并抛出InvocationTargetException异常。 2. 请求参数错误:如果Feign调用的请求参数不正确,例如参数类型不匹配或者缺少必要的参数,远程服务可能会抛出异常,并导致InvocationTargetException异常。 3. 远程服务异常:如果远程服务在处理请求时发生了异常,它可能会将异常信息返回给Feign客户端,并导致InvocationTargetException异常。 为了解决这个问题,我们可以通过以下步骤来排查: 1. 检查远程服务是否正常运行,并确保可以正常访问。 2. 检查Feign调用的请求参数是否正确,并与远程服务的接口定义进行对比。 3. 查看InvocationTargetException的getCause()方法返回的异常信息,以确定实际的异常原因。 4. 根据具体的异常原因采取相应的措施,例如修复远程服务的bug或者调整Feign调用的参数。 希望以上信息对您有帮助!如果您还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值