access_token与jsapi_ticket 需要全局缓存为什么我就不说了,既然来看了就应该知道了
我用的是spring容器加载完毕后监听器,就是容器加载完毕调用 ApplicationListener
这样可以获取access_token jsapi_ticket 缓存到servletcontext中(servletcontext全局容易 全局唯一 全局共享)
首先看一下全局servletcontext
import javax.servlet.ServletContext;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;
/**
* @ClassName: ServletContextUtil
* @author yangwl
* @date 2016年5月11日 下午4:54:16
* @Description:
* 全局缓存servletcontext
*/
public final class ServletContextUtil {
private static ServletContext serveltContext = null;
private ServletContextUtil(){};
public synchronized static ServletContext get() {
if(null == serveltContext) {
WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();
serveltContext = webApplicationContext.getServletContext();
}
return serveltContext;
}
}
调用ServletContextUtil.get()可以后去全局上下文servletcontext
2. 看一下容器加载完毕监听器 ApplicationListener
ScheduledExecutorService这个是调度service
因为access_token为7200有效期, 所以这里间隔7000调用一次就够了
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import com.yi.wx.AccessTokenUtil;
public class JobForWXAccessTokenListener implements ApplicationListener<C