From 79e596c62f008b0842c35728e41766cc8067050f Mon Sep 17 00:00:00 2001 From: wentch <22250530@qq.com> Date: Tue, 26 Jan 2016 16:08:05 +0800 Subject: [PATCH] --- source.html | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/source.html b/source.html index 287e33546..827f43cc7 100644 --- a/source.html +++ b/source.html @@ -146,10 +146,38 @@

        如上@FilterGroup 的value 必须是[OR]或者[AND]开头,没有标记@FilterGroup的字段等价于标记了@FilterGroup(value = "[AND]")。[AND]、[OR]后面的字符串为GROUP_NAME,默认的GROUP_NAME为空字符串。如上"[OR]a"可以直接使用"[OR]",有多个[OR]或者[AND]则需要加上不同的NAME。

-

未完待续……
-

-

CacheSource 入门

+

         CacheSource同Memcached类似,像一个带有过期功能地Map容器,存放key-value数据。常见的使用场景就是存放HTTP的Session信息。RedKale把用户会话信息数据当做业务数据处理,而不是接入层的数据。WebSocket的连接态数据也是用CacheSource存储。key为WebSocket的groupid,value为WebSocket服务端节点的IP地址列表。

+
public class UserService implements Service {
+
+    //用户简单信息缓存
+    private final Map<Integer, UserInfo> users = new ConcurrentHashMap<>();
+
+    //使用CacheSource必须要指明泛型
+    @Resource(name = "usersessions")
+    protected CacheSource<String, Integer> sessions;
+
+    //登录
+    public RetResult<UserInfo> login(LoginBean bean) { //bean.sessionid 在接入层进行赋值
+        UserInfo user = null;
+        // 登陆逻辑 user = ...
+        users.put(user.getUserid(), user);
+        sessions.set(600, bean.getSessionid(), user.getUserid()); //session过期时间设置为10分钟
+        return new RetResult<>(user);
+    }
+
+    //获取当前用户信息
+    public UserInfo current(String sessionid) { //给HTTP的BaseServlet用
+        Integer userid = sessions.getAndRefresh(sessionid);
+        return userid == null ? null : users.get(userid);
+    }
+
+    //注销
+    public void logout(String sessionid) {
+        sessions.remove(sessionid);
+    }
+}
+

        以上是个简单的范例,用于用户模块存放sessionid。

persistence.xml 配置说明

<!-- 其配置算是标准的JPA配置文件的缩略版 -->