We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WxMpMapConfigImpl config = new WxMpMapConfigImpl(); config.setAppId(wxConfig.getMqAppId()); config.setSecret(wxConfig.getMqAppSecret()); config.useStableAccessToken(true); globalWxMpService.addConfigStorage(config.getAppId(),config);
背景:单机多租户模式,一个服务提供多个微信公众号相关的服务,根据租户标识区分。 上面的代码是在初始化的时候,确保 WxMpServiceImpl 中没有保存该租户WxMpMapConfig的时候,存入 WxMpConfigStorage。 问题:假设目前有2个租户,初始化了WxMpConfigStorage并存入。问题提在于 WxMpMapConfigImpl 中的 CONCURRENT_HASH_MAP 是静态属性,每次根据不同租户获取 WxMpConfigStorage 的时候确实能获取到不同的 WxMpMapConfigImpl 对象,但是获取到token的时候会出现静态属性覆盖的情况。 因为key是一样的,设置token以及获取token 都是固定的 "access_token",没有通过 CONCURRENT_HASH_MAP.get(this.getAppId()); 来做租户区分。
@DaTa public class WxMpMapConfigImpl extends WxMpDefaultConfigImpl { private static final ConcurrentHashMap<String, String> CONCURRENT_HASH_MAP = new ConcurrentHashMap<>(1); private static final String MAP_KEY = "access_token"; @OverRide public String getAccessToken() { return CONCURRENT_HASH_MAP.get(MAP_KEY); } }
The text was updated successfully, but these errors were encountered:
@braydenwong 麻烦看下
Sorry, something went wrong.
欢迎提供改造代码,提交PR即可
No branches or pull requests
WxMpMapConfigImpl config = new WxMpMapConfigImpl();
config.setAppId(wxConfig.getMqAppId());
config.setSecret(wxConfig.getMqAppSecret());
config.useStableAccessToken(true);
globalWxMpService.addConfigStorage(config.getAppId(),config);
模块版本情况
详细描述
背景:单机多租户模式,一个服务提供多个微信公众号相关的服务,根据租户标识区分。 上面的代码是在初始化的时候,确保 WxMpServiceImpl 中没有保存该租户WxMpMapConfig的时候,存入 WxMpConfigStorage。
问题:假设目前有2个租户,初始化了WxMpConfigStorage并存入。问题提在于 WxMpMapConfigImpl 中的 CONCURRENT_HASH_MAP 是静态属性,每次根据不同租户获取 WxMpConfigStorage 的时候确实能获取到不同的 WxMpMapConfigImpl 对象,但是获取到token的时候会出现静态属性覆盖的情况。 因为key是一样的,设置token以及获取token 都是固定的 "access_token",没有通过 CONCURRENT_HASH_MAP.get(this.getAppId()); 来做租户区分。
@DaTa
public class WxMpMapConfigImpl extends WxMpDefaultConfigImpl {
private static final ConcurrentHashMap<String, String> CONCURRENT_HASH_MAP = new ConcurrentHashMap<>(1);
private static final String MAP_KEY = "access_token";
@OverRide
public String getAccessToken() {
return CONCURRENT_HASH_MAP.get(MAP_KEY);
}
}
修改建议
The text was updated successfully, but these errors were encountered: