From 035355471886b4717fdf16c9db5db5b6a67abbda Mon Sep 17 00:00:00 2001 From: "jy.hu" Date: Wed, 10 Dec 2014 16:29:18 +0800 Subject: [PATCH] update md --- .gitignore | 4 ++++ README.md | 2 +- weixin4j-base/.gitignore | 4 ++++ .../weixin4j/token/FileTokenHolder.java | 19 +++++++++---------- .../java/com/foxinmy/weixin4j/token/README.md | 8 +++++++- .../weixin4j/token/RedisTokenHolder.java | 8 +++++--- weixin4j-mp/.gitignore | 4 ++++ weixin4j-mp/weixin4j-mp-api/.gitignore | 4 ++++ weixin4j-mp/weixin4j-mp-server/.gitignore | 4 ++++ weixin4j-mp/weixin4j-mp-server/README.md | 11 +++++++++-- weixin4j-qy/.gitignore | 4 ++++ weixin4j-qy/weixin4j-qy-api/.gitignore | 4 ++++ weixin4j-qy/weixin4j-qy-server/.gitignore | 4 ++++ weixin4j-qy/weixin4j-qy-server/README.md | 11 +++++++++-- 14 files changed, 72 insertions(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index c880f664..87bd9366 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,10 @@ hs_err_pid* /.classpath /.tomcatplugin +# idea ignore +/.idea +*.iml + # maven ignore target/* diff --git a/README.md b/README.md index c229030c..38d34923 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ weixin4j 2.API的成功调用依赖于正确的appid等数据,填写格式说明见API工程下的README.md文件. -3.如需使用netty服务,可以在相应的action中实现自己的具体业务,打包后放到`正确的目录`下解压`weixin-*-server-bin.zip`执行`sh startup.sh start`便可启动服务. +3.如需使用netty服务,可以在相应的action中实现自己的具体业务,打包后启动服务即可,具体详情可参考README. 如何获取 ------- diff --git a/weixin4j-base/.gitignore b/weixin4j-base/.gitignore index c880f664..87bd9366 100644 --- a/weixin4j-base/.gitignore +++ b/weixin4j-base/.gitignore @@ -17,6 +17,10 @@ hs_err_pid* /.classpath /.tomcatplugin +# idea ignore +/.idea +*.iml + # maven ignore target/* diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenHolder.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenHolder.java index 21affe2c..dad31b48 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenHolder.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenHolder.java @@ -26,7 +26,8 @@ import com.foxinmy.weixin4j.xml.XStream; * @since JDK 1.7 * @see 微信公众平台获取token说明 - * @see 微信企业号获取token说明 + * @see 微信企业号获取token说明 * @see com.foxinmy.weixin4j.model.Token */ public class FileTokenHolder extends AbstractTokenHolder { @@ -54,9 +55,9 @@ public class FileTokenHolder extends AbstractTokenHolder { @Override public Token getToken() throws WeixinException { String id = weixinAccount.getId(); - if (StringUtils.isBlank(id) || StringUtils.isBlank(weixinAccount.getSecret())) { - throw new IllegalArgumentException( - "id or secret not be null!"); + if (StringUtils.isBlank(id) + || StringUtils.isBlank(weixinAccount.getSecret())) { + throw new IllegalArgumentException("id or secret not be null!"); } File token_file = new File(String.format("%s/token_%s.xml", ConfigUtil.getValue("token_path"), id)); @@ -67,13 +68,11 @@ public class FileTokenHolder extends AbstractTokenHolder { if (token_file.exists()) { token = XStream.get(new FileInputStream(token_file), Token.class); - long expise_time = token.getTime() - + (token.getExpiresIn() * 1000) - 3; - if (expise_time > now_time) { + long expire_time = token.getTime() + + (token.getExpiresIn() * 1000) - 2; + if (expire_time > now_time) { return token; } - } else { - token_file.createNewFile(); } Response response = request.get(weixinAccount.getTokenUrl()); token = response.getAsObject(new TypeReference() { @@ -81,7 +80,7 @@ public class FileTokenHolder extends AbstractTokenHolder { token.setTime(now_time); XStream.to(token, new FileOutputStream(token_file)); } catch (IOException e) { - throw new WeixinException("-1", "IO ERROR"); + throw new WeixinException(e.getMessage()); } return token; } diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/README.md b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/README.md index d674ea9f..bab679c0 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/README.md +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/README.md @@ -1 +1,7 @@ -Token的实现 \ No newline at end of file +包含token的实现 + +FileTokenHolder.java 基于文件保存的token实现 + +RedisTokenHolder.java 基于redis保存的token实现(推荐) + +当然自己也可实现token的存取,继承`AbstractTokenHolder`实现`getToken`方法 \ No newline at end of file diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenHolder.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenHolder.java index 2105a3a7..36652f30 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenHolder.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenHolder.java @@ -1,5 +1,7 @@ package com.foxinmy.weixin4j.token; +import java.util.Calendar; + import org.apache.commons.lang3.StringUtils; import redis.clients.jedis.Jedis; @@ -70,19 +72,19 @@ public class RedisTokenHolder extends AbstractTokenHolder { Jedis jedis = null; try { jedis = jedisPool.getResource(); + Calendar now = Calendar.getInstance(); String key = String.format("token:%s", id); String accessToken = jedis.get(key); if (StringUtils.isBlank(accessToken)) { token = request.get(weixinAccount.getTokenUrl()).getAsObject( new TypeReference() { }); - jedis.setex(key, token.getExpiresIn() - 3, + jedis.setex(key, token.getExpiresIn(), token.getAccessToken()); - token.setTime(System.currentTimeMillis()); + token.setTime(now.getTimeInMillis()); } else { token = new Token(); token.setAccessToken(accessToken); - token.setExpiresIn(jedis.ttl(key).intValue()); } } catch (JedisException e) { jedisPool.returnBrokenResource(jedis); diff --git a/weixin4j-mp/.gitignore b/weixin4j-mp/.gitignore index c880f664..87bd9366 100644 --- a/weixin4j-mp/.gitignore +++ b/weixin4j-mp/.gitignore @@ -17,6 +17,10 @@ hs_err_pid* /.classpath /.tomcatplugin +# idea ignore +/.idea +*.iml + # maven ignore target/* diff --git a/weixin4j-mp/weixin4j-mp-api/.gitignore b/weixin4j-mp/weixin4j-mp-api/.gitignore index c880f664..87bd9366 100644 --- a/weixin4j-mp/weixin4j-mp-api/.gitignore +++ b/weixin4j-mp/weixin4j-mp-api/.gitignore @@ -17,6 +17,10 @@ hs_err_pid* /.classpath /.tomcatplugin +# idea ignore +/.idea +*.iml + # maven ignore target/* diff --git a/weixin4j-mp/weixin4j-mp-server/.gitignore b/weixin4j-mp/weixin4j-mp-server/.gitignore index c880f664..87bd9366 100644 --- a/weixin4j-mp/weixin4j-mp-server/.gitignore +++ b/weixin4j-mp/weixin4j-mp-server/.gitignore @@ -17,6 +17,10 @@ hs_err_pid* /.classpath /.tomcatplugin +# idea ignore +/.idea +*.iml + # maven ignore target/* diff --git a/weixin4j-mp/weixin4j-mp-server/README.md b/weixin4j-mp/weixin4j-mp-server/README.md index 00e78f64..1ea63e6d 100644 --- a/weixin4j-mp/weixin4j-mp-server/README.md +++ b/weixin4j-mp/weixin4j-mp-server/README.md @@ -40,9 +40,16 @@ weixin4j-mp-server bill_path=/tmp/weixin/bill ca_file=/tmp/weixin/xxxxx.p12 | xxxxx.pfx -2.`mvn package`,得到一个zip的压缩包,解压到启动目录(见`src/main/startup.sh/APP_HOME`) +2.在对应的action中实现自己的具体业务 如 TextAction 则表示收到文本消息 -3.启动netty服务(`com.foxinmy.weixin4j.mp.startup.WeixinMpServerBootstrap`) + @Override + public ResponseMessage execute(TextMessage inMessage) { + return new ResponseMessage(new Text("Hello World!"), inMessage); + } + +3.`mvn package`,得到一个zip的压缩包,解压到启动目录(见`src/main/startup.sh/APP_HOME`) + +4.启动netty服务(`com.foxinmy.weixin4j.mp.startup.WeixinMpServerBootstrap`) sh startup.sh start diff --git a/weixin4j-qy/.gitignore b/weixin4j-qy/.gitignore index c880f664..87bd9366 100644 --- a/weixin4j-qy/.gitignore +++ b/weixin4j-qy/.gitignore @@ -17,6 +17,10 @@ hs_err_pid* /.classpath /.tomcatplugin +# idea ignore +/.idea +*.iml + # maven ignore target/* diff --git a/weixin4j-qy/weixin4j-qy-api/.gitignore b/weixin4j-qy/weixin4j-qy-api/.gitignore index c880f664..87bd9366 100644 --- a/weixin4j-qy/weixin4j-qy-api/.gitignore +++ b/weixin4j-qy/weixin4j-qy-api/.gitignore @@ -17,6 +17,10 @@ hs_err_pid* /.classpath /.tomcatplugin +# idea ignore +/.idea +*.iml + # maven ignore target/* diff --git a/weixin4j-qy/weixin4j-qy-server/.gitignore b/weixin4j-qy/weixin4j-qy-server/.gitignore index c880f664..87bd9366 100644 --- a/weixin4j-qy/weixin4j-qy-server/.gitignore +++ b/weixin4j-qy/weixin4j-qy-server/.gitignore @@ -17,6 +17,10 @@ hs_err_pid* /.classpath /.tomcatplugin +# idea ignore +/.idea +*.iml + # maven ignore target/* diff --git a/weixin4j-qy/weixin4j-qy-server/README.md b/weixin4j-qy/weixin4j-qy-server/README.md index def4a3ad..09e4762c 100644 --- a/weixin4j-qy/weixin4j-qy-server/README.md +++ b/weixin4j-qy/weixin4j-qy-server/README.md @@ -30,9 +30,16 @@ weixin4j-qy-server token_path=/tmp/weixin/token media_path=/tmp/weixin/media -2.`mvn package`,得到一个zip的压缩包,解压到启动目录(见`src/main/startup.sh/APP_HOME`) +2.在对应的action中实现自己的具体业务 如 TextAction 则表示收到文本消息 -3.启动netty服务(`com.foxinmy.weixin4j.mp.startup.WeixinQyServerBootstrap`) + @Override + public ResponseMessage execute(TextMessage inMessage) { + return new ResponseMessage(new Text("Hello World!"), inMessage); + } + +3.`mvn package`,得到一个zip的压缩包,解压到启动目录(见`src/main/startup.sh/APP_HOME`) + +4.启动netty服务(`com.foxinmy.weixin4j.mp.startup.WeixinQyServerBootstrap`) sh startup.sh start