请问: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签名错误。
官方提示可能有如下几种错误,缓存应该怎么存: