问题描述
我正在使用最新版本的 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 (将#修改为@)