请问:http GET请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket),如何进行全局缓存。
我目前想到的是:
在ehcache中创建个cache:
cache中配置如下:
<cache name="jsapi_ticketCache" maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="7200" timeToLiveSeconds="7200" overflowToDisk="true" maxElementsOnDisk="10000000" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" clearOnFlush="true" />
在Controller中如下实现:
ApiConfig ac = new ApiConfig();
// 配置微信 API 相关常量
ac.setAppId(PropKit.get("appId"));
ac.setAppSecret(PropKit.get("appSecret"));
ApiConfigKit.setThreadLocalApiConfig(ac);
String jsapi_ticket = CacheKit.get("jsapi_ticketCache", paras);
if (jsapi_ticket == null) {
JsTicket jsTicket=JsTicketApi.getTicket(JsApiType.jsapi);
jsapi_ticket=jsTicket.getTicket();
CacheKit.put("jsapi_ticketCache", paras,jsapi_ticket);
}
System.out.println(">>>>>>>>>>>>>>>>>>"+jsapi_ticket);
Map<String, String> signMap=Sign.sign(jsapi_ticket, url);
setAttr("url", signMap.get("url"));
setAttr("jsapi_ticket", signMap.get("jsapi_ticket"));
setAttr("nonceStr", signMap.get("nonceStr"));
setAttr("timestamp", signMap.get("timestamp"));
setAttr("signature", signMap.get("signature"));这些操作更新到服务器
测试总是提示:invalid signature签名错误。
官方提示可能有如下几种错误,缓存应该怎么存:
