mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-08-24 16:01:04 +08:00
Fix issue #335: 重构WxMpInRedisConfigStorage,改用连接池
This commit is contained in:
parent
3875635a8a
commit
0e580a05ff
@ -1,11 +1,12 @@
|
|||||||
package me.chanjar.weixin.mp.api;
|
package me.chanjar.weixin.mp.api;
|
||||||
|
|
||||||
import redis.clients.jedis.Jedis;
|
import redis.clients.jedis.Jedis;
|
||||||
|
import redis.clients.jedis.JedisPool;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 基于Redis的微信配置provider
|
* 基于Redis的微信配置provider
|
||||||
*
|
*
|
||||||
* @author lly835
|
* @author nickwong
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("hiding")
|
@SuppressWarnings("hiding")
|
||||||
public class WxMpInRedisConfigStorage extends WxMpInMemoryConfigStorage {
|
public class WxMpInRedisConfigStorage extends WxMpInMemoryConfigStorage {
|
||||||
@ -16,75 +17,115 @@ public class WxMpInRedisConfigStorage extends WxMpInMemoryConfigStorage {
|
|||||||
|
|
||||||
private final static String CARDAPI_TICKET_KEY = "wechat_cardapi_ticket_";
|
private final static String CARDAPI_TICKET_KEY = "wechat_cardapi_ticket_";
|
||||||
|
|
||||||
protected Jedis jedis;
|
/**
|
||||||
|
* 使用连接池保证线程安全
|
||||||
|
*/
|
||||||
|
protected final JedisPool jedisPool;
|
||||||
|
|
||||||
|
private String accessTokenKey;
|
||||||
|
|
||||||
|
private String jsapiTicketKey;
|
||||||
|
|
||||||
|
private String cardapiTicketKey;
|
||||||
|
|
||||||
|
public WxMpInRedisConfigStorage(JedisPool jedisPool) {
|
||||||
|
this.jedisPool = jedisPool;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 每个公众号生成独有的存储key
|
||||||
|
*
|
||||||
|
* @param appId
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setAppId(String appId) {
|
||||||
|
super.setAppId(appId);
|
||||||
|
this.accessTokenKey = ACCESS_TOKEN_KEY.concat(appId);
|
||||||
|
this.jsapiTicketKey = JSAPI_TICKET_KEY.concat(appId);
|
||||||
|
this.cardapiTicketKey = CARDAPI_TICKET_KEY.concat(appId);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getAccessToken() {
|
public String getAccessToken() {
|
||||||
return jedis.get(ACCESS_TOKEN_KEY.concat(appId));
|
try (Jedis jedis = this.jedisPool.getResource()) {
|
||||||
|
return jedis.get(accessTokenKey);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAccessTokenExpired() {
|
public boolean isAccessTokenExpired() {
|
||||||
return jedis.ttl(ACCESS_TOKEN_KEY.concat(appId)) < 2;
|
try (Jedis jedis = this.jedisPool.getResource()) {
|
||||||
|
return jedis.ttl(accessTokenKey) < 2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void updateAccessToken(String accessToken, int expiresInSeconds) {
|
public synchronized void updateAccessToken(String accessToken, int expiresInSeconds) {
|
||||||
jedis.set(ACCESS_TOKEN_KEY.concat(appId), accessToken);
|
try (Jedis jedis = this.jedisPool.getResource()) {
|
||||||
jedis.expire(ACCESS_TOKEN_KEY.concat(appId), expiresInSeconds - 200);
|
jedis.setex(accessTokenKey, expiresInSeconds - 200, accessToken);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void expireAccessToken() {
|
public void expireAccessToken() {
|
||||||
jedis.expire(ACCESS_TOKEN_KEY.concat(appId), 0);
|
try (Jedis jedis = this.jedisPool.getResource()) {
|
||||||
|
jedis.expire(accessTokenKey, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getJsapiTicket() {
|
public String getJsapiTicket() {
|
||||||
return jedis.get(JSAPI_TICKET_KEY.concat(appId));
|
try (Jedis jedis = this.jedisPool.getResource()) {
|
||||||
|
return jedis.get(jsapiTicketKey);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isJsapiTicketExpired() {
|
public boolean isJsapiTicketExpired() {
|
||||||
return jedis.ttl(JSAPI_TICKET_KEY.concat(appId)) < 2;
|
try (Jedis jedis = this.jedisPool.getResource()) {
|
||||||
|
return jedis.ttl(jsapiTicketKey) < 2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void updateJsapiTicket(String jsapiTicket, int expiresInSeconds) {
|
public synchronized void updateJsapiTicket(String jsapiTicket, int expiresInSeconds) {
|
||||||
jedis.set(JSAPI_TICKET_KEY.concat(appId), jsapiTicket);
|
try (Jedis jedis = this.jedisPool.getResource()) {
|
||||||
jedis.expire(JSAPI_TICKET_KEY.concat(appId), expiresInSeconds - 200);
|
jedis.setex(jsapiTicketKey, expiresInSeconds - 200, jsapiTicket);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void expireJsapiTicket() {
|
public void expireJsapiTicket() {
|
||||||
jedis.expire(JSAPI_TICKET_KEY.concat(appId), 0);
|
try (Jedis jedis = this.jedisPool.getResource()) {
|
||||||
|
jedis.expire(jsapiTicketKey, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 卡券api_ticket
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public String getCardApiTicket() {
|
public String getCardApiTicket() {
|
||||||
return jedis.get(CARDAPI_TICKET_KEY.concat(appId));
|
try (Jedis jedis = this.jedisPool.getResource()) {
|
||||||
|
return jedis.get(cardapiTicketKey);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isCardApiTicketExpired() {
|
public boolean isCardApiTicketExpired() {
|
||||||
return jedis.ttl(CARDAPI_TICKET_KEY.concat(appId)) < 2;
|
try (Jedis jedis = this.jedisPool.getResource()) {
|
||||||
|
return jedis.ttl(cardapiTicketKey) < 2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void updateCardApiTicket(String cardApiTicket, int expiresInSeconds) {
|
public synchronized void updateCardApiTicket(String cardApiTicket, int expiresInSeconds) {
|
||||||
jedis.set(CARDAPI_TICKET_KEY.concat(appId), cardApiTicket);
|
try (Jedis jedis = this.jedisPool.getResource()) {
|
||||||
jedis.expire(CARDAPI_TICKET_KEY.concat(appId), expiresInSeconds - 200);
|
jedis.setex(cardapiTicketKey, expiresInSeconds - 200, cardApiTicket);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void expireCardApiTicket() {
|
public void expireCardApiTicket() {
|
||||||
jedis.expire(CARDAPI_TICKET_KEY.concat(appId), 0);
|
try (Jedis jedis = this.jedisPool.getResource()) {
|
||||||
}
|
jedis.expire(cardapiTicketKey, 0);
|
||||||
|
}
|
||||||
public void setJedis(Jedis jedis) {
|
|
||||||
this.jedis = jedis;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user