-
-
Notifications
You must be signed in to change notification settings - Fork 9.1k
Description
错误日志
java.lang.IllegalStateException: Connection pool shut down
at org.apache.http.util.Asserts.check(Asserts.java:34)
at org.apache.http.pool.AbstractConnPool.lease(AbstractConnPool.java:196)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.requestConnection(PoolingHttpClientConnectionManager.java:268)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:176)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
at me.chanjar.weixin.cp.api.impl.WxCpServiceImpl.getAccessToken(WxCpServiceImpl.java:58)
at me.chanjar.weixin.cp.api.impl.BaseWxCpServiceImpl.executeInternal(BaseWxCpServiceImpl.java:271)
at me.chanjar.weixin.cp.api.impl.BaseWxCpServiceImpl.execute(BaseWxCpServiceImpl.java:235)
at me.chanjar.weixin.cp.api.impl.BaseWxCpServiceImpl.post(BaseWxCpServiceImpl.java:219)
at me.chanjar.weixin.cp.api.impl.WxCpUserServiceImpl.create(WxCpUserServiceImpl.java:40)
报错类:
public class WxCpServiceImpl extends WxCpServiceApacheHttpClientImpl {
@OverRide
public String getAccessToken(boolean forceRefresh) throws WxErrorException {
if (!getWxCpConfigStorage().isAccessTokenExpired() && !forceRefresh) {
return getWxCpConfigStorage().getAccessToken();
}
Lock lock = getWxCpConfigStorage().getAccessTokenLock();
lock.lock();
try {
// 拿到锁之后,再次判断一下最新的token是否过期,避免重刷
if (!getWxCpConfigStorage().isAccessTokenExpired() && !forceRefresh) {
return getWxCpConfigStorage().getAccessToken();
}
String url = String.format(getWxCpConfigStorage().getApiUrl(WxCpApiPathConsts.GET_TOKEN), this.configStorage.getCorpId(), this.configStorage.getCorpSecret());
try {
HttpGet httpGet = new HttpGet(url);
if (getRequestHttpProxy() != null) {
RequestConfig config = RequestConfig.custom()
.setProxy(getRequestHttpProxy()).build();
httpGet.setConfig(config);
}
String resultContent;
try (CloseableHttpClient httpClient = getRequestHttpClient();
CloseableHttpResponse response = httpClient.execute(httpGet)) {
resultContent = new BasicResponseHandler().handleResponse(response);
} finally {
httpGet.releaseConnection();
}
WxError error = WxError.fromJson(resultContent, WxType.CP);
if (error.getErrorCode() != 0) {
throw new WxErrorException(error);
}
WxAccessToken accessToken = WxAccessToken.fromJson(resultContent);
getWxCpConfigStorage().updateAccessToken(accessToken.getAccessToken(), accessToken.getExpiresIn());
} catch (IOException e) {
throw new RuntimeException(e);
}
} finally {
lock.unlock();
}
return getWxCpConfigStorage().getAccessToken();
}