如何解决进行 HTTPS 调用的多头球衣客户端
我正在使用最新版本的 javax.ws.rs.client.Client(Jersey client 2.34) 使用线程发出多个 Https 请求。
当我使用多个线程同时使用 Jersey 客户端进行调用时,出现此异常。
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building Failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
此异常似乎与信任库中不存在的无效证书有关。我已将我正在访问的站点的证书添加到信任库中。此外,如果只使用单线程,代码工作正常。
.... // code that starts the threads.
for(int i=0;i<noOfThreads;i++){
executorService.execute(new RunnableClient(url,jerseyClient));
}
....
class RunnableClient implements Runnable{
...
@Override
public void run(){
jerseryClient.fetchResults(url);
}
}
class JerseyClient{
...
Client client;
...
public Response fetchResults(String url){
response = this.client.target(new URI(url)).request(MediaType.TEXT_PLAIN)
.header(Constants.AUTHORIZATION,getToken())
.get();
return response;
}
....
// jerseyClient is the object of my user defined class which holds a javax.ws.rs.client.Client object as member.
需要注意的是,我只制作 JerseyClient 的单个实例并重用它。
但是如果运行多个线程,代码就会失败。任何人都可以解释为什么会引发此异常以及如何解决它。
提前致谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。