Sfoglia il codice sorgente

Merge pull request #27 from hs-web/2.x

2.x
zhōuhào 8 anni fa
parent
commit
cd3f58b5ad
36 ha cambiato i file con 90 aggiunte e 66 eliminazioni
  1. 1 1
      hsweb-web-bean/pom.xml
  2. 1 1
      hsweb-web-concurrent/hsweb-web-concurrent-cache/pom.xml
  3. 1 1
      hsweb-web-concurrent/hsweb-web-concurrent-lock/pom.xml
  4. 1 1
      hsweb-web-concurrent/pom.xml
  5. 1 1
      hsweb-web-controller/pom.xml
  6. 6 6
      hsweb-web-controller/src/main/java/org/hsweb/web/controller/MessageConverterConfiguration.java
  7. 4 1
      hsweb-web-controller/src/main/java/org/hsweb/web/controller/login/AuthorizeController.java
  8. 1 1
      hsweb-web-core/pom.xml
  9. 4 1
      hsweb-web-core/src/main/java/org/hsweb/web/core/authorize/AopAuthorizeValidator.java
  10. 2 0
      hsweb-web-core/src/main/java/org/hsweb/web/core/authorize/AuthorizeValidatorConfig.java
  11. 1 0
      hsweb-web-core/src/main/java/org/hsweb/web/core/authorize/annotation/Authorize.java
  12. 3 2
      hsweb-web-core/src/main/java/org/hsweb/web/core/authorize/validator/SimpleAuthorizeValidatorConfig.java
  13. 22 10
      hsweb-web-core/src/main/java/org/hsweb/web/core/session/redis/RedisHttpSessionManager.java
  14. 7 4
      hsweb-web-core/src/main/java/org/hsweb/web/core/utils/WebUtil.java
  15. 1 1
      hsweb-web-dao/hsweb-web-dao-api/pom.xml
  16. 1 1
      hsweb-web-dao/hsweb-web-dao-mybatis/README.md
  17. 1 1
      hsweb-web-dao/hsweb-web-dao-mybatis/pom.xml
  18. 1 1
      hsweb-web-dao/pom.xml
  19. 1 1
      hsweb-web-datasource/pom.xml
  20. 10 4
      hsweb-web-datasource/src/main/java/org/hsweb/web/datasource/dynamic/DynamicDataSourceAutoConfiguration.java
  21. 1 1
      hsweb-web-oauth2/hsweb-web-oauth2-controller/pom.xml
  22. 1 1
      hsweb-web-oauth2/hsweb-web-oauth2-core/pom.xml
  23. 1 1
      hsweb-web-oauth2/hsweb-web-oauth2-mybatis/pom.xml
  24. 1 1
      hsweb-web-oauth2/hsweb-web-oauth2-service-simple/pom.xml
  25. 1 1
      hsweb-web-oauth2/hsweb-web-oauth2-simple/pom.xml
  26. 1 1
      hsweb-web-oauth2/pom.xml
  27. 1 1
      hsweb-web-service/hsweb-web-service-api/pom.xml
  28. 2 2
      hsweb-web-service/hsweb-web-service-simple/pom.xml
  29. 1 1
      hsweb-web-service/pom.xml
  30. 1 1
      hsweb-web-starter/pom.xml
  31. 1 9
      hsweb-web-starter/src/main/java/org/hsweb/web/starter/SystemInitialize.java
  32. 2 1
      hsweb-web-starter/src/main/java/org/hsweb/web/starter/SystemInitializeAutoConfiguration.java
  33. 1 1
      hsweb-web-starter/src/main/java/org/hsweb/web/starter/SystemVersion.java
  34. 1 1
      hsweb-web-websocket/pom.xml
  35. 1 1
      hsweb-web-workflow/pom.xml
  36. 3 3
      pom.xml

+ 1 - 1
hsweb-web-bean/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>hsweb-web-bean</artifactId>

+ 1 - 1
hsweb-web-concurrent/hsweb-web-concurrent-cache/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-web-concurrent</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>hsweb-web-concurrent-cache</artifactId>

+ 1 - 1
hsweb-web-concurrent/hsweb-web-concurrent-lock/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-web-concurrent</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>hsweb-web-concurrent-lock</artifactId>

+ 1 - 1
hsweb-web-concurrent/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>pom</packaging>

+ 1 - 1
hsweb-web-controller/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>hsweb-web-controller</artifactId>

+ 6 - 6
hsweb-web-controller/src/main/java/org/hsweb/web/controller/MessageConverterConfiguration.java

@@ -16,11 +16,11 @@ public class MessageConverterConfiguration {
     public HttpMessageConverter<Object> converter() {
         FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
         converter.setFeatures(
-        SerializerFeature.WriteNullListAsEmpty,
-        SerializerFeature.WriteNullNumberAsZero,
-        SerializerFeature.WriteNullBooleanAsFalse,
-        SerializerFeature.WriteDateUseDateFormat
-       );
-            return converter;
+                SerializerFeature.WriteNullListAsEmpty,
+                SerializerFeature.WriteNullNumberAsZero,
+                SerializerFeature.WriteNullBooleanAsFalse,
+                SerializerFeature.WriteDateUseDateFormat
+        );
+        return converter;
     }
 }

+ 4 - 1
hsweb-web-controller/src/main/java/org/hsweb/web/controller/login/AuthorizeController.java

@@ -40,6 +40,7 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
 
 /**
  * 授权控制器,用于登录系统
@@ -115,10 +116,12 @@ public class AuthorizeController {
      */
     @RequestMapping(value = "/exit", method = RequestMethod.POST)
     @AccessLogger("登出")
-    public ResponseMessage exit() {
+    public ResponseMessage exit(HttpSession session) {
         User user = WebUtil.getLoginUser();
         if (user != null) {
             httpSessionManager.removeUser(user.getId());
+            //使用redis时,有时候removeUser会失效,removeSession总可以了吧
+            httpSessionManager.removeSession(session.getId());
         }
         return ResponseMessage.ok();
     }

+ 1 - 1
hsweb-web-core/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>hsweb-web-core</artifactId>

+ 4 - 1
hsweb-web-core/src/main/java/org/hsweb/web/core/authorize/AopAuthorizeValidator.java

@@ -88,7 +88,10 @@ public class AopAuthorizeValidator extends SimpleAuthorizeValidator {
             HttpSession session = request.getSession(false);
             if (session == null) throw new AuthorizeException("未登录", 401);
             user = httpSessionManager.getUserBySessionId(session.getId());
-            if (user == null) throw new AuthorizeException("未登录", 401);
+            if (user == null)
+                user = (User) session.getAttribute("user");
+            if (user == null)
+                throw new AuthorizeException("未登录", 401);
         }
         if (config.isEmpty()) return true;
         Map<String, Object> param = new LinkedHashMap<>();

+ 2 - 0
hsweb-web-core/src/main/java/org/hsweb/web/core/authorize/AuthorizeValidatorConfig.java

@@ -18,8 +18,10 @@ public interface AuthorizeValidatorConfig {
 
     AuthorizeValidatorConfig addExpression(String expression, String language);
 
+    @Deprecated
     AuthorizeValidatorConfig setApiSupport(boolean apiSupport);
 
+    @Deprecated
     boolean isApiSupport();
 
     boolean isEmpty();

+ 1 - 0
hsweb-web-core/src/main/java/org/hsweb/web/core/authorize/annotation/Authorize.java

@@ -52,6 +52,7 @@ public @interface Authorize {
      *
      * @return
      */
+    @Deprecated
     boolean api() default false;
 
     /**

+ 3 - 2
hsweb-web-core/src/main/java/org/hsweb/web/core/authorize/validator/SimpleAuthorizeValidatorConfig.java

@@ -20,7 +20,7 @@ public class SimpleAuthorizeValidatorConfig implements AuthorizeValidatorConfig
     protected Set<String> actions;
     protected Set<Expression> expressions = new LinkedHashSet<>();
     protected Authorize.MOD mod;
-    protected boolean apiSupport;
+    protected boolean       apiSupport;
 
     @Override
     public AuthorizeValidatorConfig setApiSupport(boolean apiSupport) {
@@ -92,7 +92,8 @@ public class SimpleAuthorizeValidatorConfig implements AuthorizeValidatorConfig
     }
 
     public boolean isApiSupport() {
-        return apiSupport;
+        return true;
+        //    return apiSupport;
     }
 
     public void setExpressions(Set<Expression> expressions) {

+ 22 - 10
hsweb-web-core/src/main/java/org/hsweb/web/core/session/redis/RedisHttpSessionManager.java

@@ -2,8 +2,8 @@ package org.hsweb.web.core.session.redis;
 
 import org.hsweb.web.bean.po.user.User;
 import org.hsweb.web.core.session.AbstractHttpSessionManager;
-import org.springframework.dao.DataAccessException;
-import org.springframework.data.redis.connection.RedisConnection;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.data.redis.core.RedisCallback;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.session.ExpiringSession;
@@ -27,6 +27,8 @@ public class RedisHttpSessionManager extends AbstractHttpSessionManager {
 
     private RedisOperationsSessionRepository redisOperationsSessionRepository;
 
+    private Logger logger = LoggerFactory.getLogger(this.getClass());
+
     @Override
     public Set<User> tryGetAllUser() {
         return (Set<User>) sessionRedisTemplate.keys("spring:session:sessions:*")
@@ -63,6 +65,10 @@ public class RedisHttpSessionManager extends AbstractHttpSessionManager {
     public void removeUser(String userId) {
         String key = "http.session.user:" + userId;
         String sessionId = getSessionIdByUserId(userId);
+        if (sessionId == null) {
+            // 没有登录?
+            return;
+        }
         ExpiringSession redisSession = redisOperationsSessionRepository.getSession(sessionId);
         HttpSession session = new HttpSessionWrapper(redisSession);
         onUserLoginOut(userId, session);
@@ -78,12 +84,22 @@ public class RedisHttpSessionManager extends AbstractHttpSessionManager {
 
     @Override
     public void addUser(User user, HttpSession session) {
-        removeUser(user.getId());
+        //removeUser(user.getId());
         String key = "http.session.user:" + user.getId();
         String value = session.getId();
+        //获取旧的ID
+        String sessionId = getSessionIdByUserId(user.getId());
+        if (sessionId != null) {
+            removeSession(sessionId);
+        }
         session.setAttribute("user", user);
-        sessionRedisTemplate.opsForValue().set(key, value);
         onUserLogin(user, session);
+        //不知道为啥 有时候会添加失败???
+        sessionRedisTemplate.opsForValue().set(key, value);
+        sessionId = (String) sessionRedisTemplate.opsForValue().get(key);
+        if (sessionId == null) {
+            logger.error("添加用户信息到redis失败,用户可能无法退出登录:user[{}:{}],sessionId[{}]", user.getId(), user.getUsername(), session.getId());
+        }
     }
 
 
@@ -97,12 +113,8 @@ public class RedisHttpSessionManager extends AbstractHttpSessionManager {
             String sessionId = (String) sessionRedisTemplate.opsForValue().get(key);
             String sessionIdKey = "spring:session:sessions:".concat(sessionId);
             String userId = new String(key).split("[:]")[1];
-            boolean sessionExists = (Boolean) sessionRedisTemplate.execute(new RedisCallback<Boolean>() {
-                @Override
-                public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
-                    return connection.exists(sessionIdKey.getBytes());
-                }
-            });
+            boolean sessionExists = (Boolean) sessionRedisTemplate.execute((RedisCallback<Boolean>) connection ->
+                    connection.exists(sessionIdKey.getBytes()));
             if (!sessionExists) {
                 sessionRedisTemplate.delete(key);
                 return null;

+ 7 - 4
hsweb-web-core/src/main/java/org/hsweb/web/core/utils/WebUtil.java

@@ -73,14 +73,17 @@ public class WebUtil {
     public static User getLoginUser(HttpServletRequest request) {
         if (request == null) return ThreadLocalUtils.get("current-user");
         HttpSession session = request.getSession(false);
-        if (session == null) {
+        User user = null;
+        if (session != null) {
+            user = getLoginUser(session);
+        }
+        if (user == null) {
             OAuth2Manager manager = OAuth2ManagerHolder.getManager();
             if (manager != null) {
-                return manager.getUserByRequest(request);
+                user = manager.getUserByRequest(request);
             }
-            return null;
         }
-        return getLoginUser(session);
+        return user;
     }
 
     public static Map<String, String> getHeaders(HttpServletRequest request) {

+ 1 - 1
hsweb-web-dao/hsweb-web-dao-api/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-web-dao</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>hsweb-web-dao-api</artifactId>

+ 1 - 1
hsweb-web-dao/hsweb-web-dao-mybatis/README.md

@@ -10,7 +10,7 @@
      <dependency>
         <groupId>org.hsweb</groupId>
         <artifactId>hsweb-web-dao-mybatis</artifactId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </dependency>
 ```
 

+ 1 - 1
hsweb-web-dao/hsweb-web-dao-mybatis/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-web-dao</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>hsweb-web-dao-mybatis</artifactId>

+ 1 - 1
hsweb-web-dao/pom.xml

@@ -21,7 +21,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>pom</packaging>

+ 1 - 1
hsweb-web-datasource/pom.xml

@@ -21,7 +21,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 10 - 4
hsweb-web-datasource/src/main/java/org/hsweb/web/datasource/dynamic/DynamicDataSourceAutoConfiguration.java

@@ -40,11 +40,13 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.AnnotationUtils;
 import org.springframework.transaction.jta.JtaTransactionManager;
 
 import javax.sql.DataSource;
 import javax.transaction.SystemException;
 import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
 import java.util.Properties;
 
 @Configuration
@@ -128,10 +130,14 @@ public class DynamicDataSourceAutoConfiguration {
 
         private <T extends Annotation> T getAnn(ProceedingJoinPoint pjp, Class<T> annClass) {
             MethodSignature signature = (MethodSignature) pjp.getSignature();
-            T ann = ClassUtils.getAnnotation(signature.getMethod(), annClass);
-            if (null == ann)
-                ann = ClassUtils.getAnnotation(pjp.getTarget().getClass(), annClass);
-            return ann;
+            Method m = signature.getMethod();
+            T a = AnnotationUtils.findAnnotation(m, annClass);
+            if (a != null) return a;
+            Class<?> targetClass = pjp.getTarget().getClass();
+            m = org.springframework.util.ClassUtils.getMostSpecificMethod(m, targetClass);
+            a = AnnotationUtils.findAnnotation(m, annClass);
+            if (a != null) return a;
+            return AnnotationUtils.findAnnotation(pjp.getTarget().getClass(), annClass);
         }
 
         @Around(value = "within(@org.hsweb.web.datasource.dynamic.UseDataSource *)||@annotation(org.hsweb.web.datasource.dynamic.UseDataSource)")

+ 1 - 1
hsweb-web-oauth2/hsweb-web-oauth2-controller/pom.xml

@@ -21,7 +21,7 @@
     <parent>
         <artifactId>hsweb-web-oauth2</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
hsweb-web-oauth2/hsweb-web-oauth2-core/pom.xml

@@ -21,7 +21,7 @@
     <parent>
         <artifactId>hsweb-web-oauth2</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
hsweb-web-oauth2/hsweb-web-oauth2-mybatis/pom.xml

@@ -21,7 +21,7 @@
     <parent>
         <artifactId>hsweb-web-oauth2</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
hsweb-web-oauth2/hsweb-web-oauth2-service-simple/pom.xml

@@ -21,7 +21,7 @@
     <parent>
         <artifactId>hsweb-web-oauth2</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
hsweb-web-oauth2/hsweb-web-oauth2-simple/pom.xml

@@ -21,7 +21,7 @@
     <parent>
         <artifactId>hsweb-web-oauth2</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
hsweb-web-oauth2/pom.xml

@@ -21,7 +21,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
hsweb-web-service/hsweb-web-service-api/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-web-service</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>hsweb-web-service-api</artifactId>

+ 2 - 2
hsweb-web-service/hsweb-web-service-simple/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-web-service</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -45,7 +45,7 @@
         <dependency>
             <groupId>javax.el</groupId>
             <artifactId>el-api</artifactId>
-            <version>2.2</version>
+           <version>2.2</version>
             <scope>test</scope>
         </dependency>
 

+ 1 - 1
hsweb-web-service/pom.xml

@@ -21,7 +21,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <modules>

+ 1 - 1
hsweb-web-starter/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 9
hsweb-web-starter/src/main/java/org/hsweb/web/starter/SystemInitialize.java

@@ -176,15 +176,7 @@ public class SystemInitialize implements InitializingBean {
             engine.compile(id, s);
             ExecuteResult result = engine.execute(id, var);
             engine.remove(id);
-            if (result.isSuccess()) {
-                //logger.debug("install success!");
-            } else {
-                if (result.getException() != null) {
-                    throw (Exception) result.getException();
-                } else {
-                    throw new RuntimeException("execute groovy script error!");
-                }
-            }
+            result.getIfSuccess();
         }
     }
 

+ 2 - 1
hsweb-web-starter/src/main/java/org/hsweb/web/starter/SystemInitializeAutoConfiguration.java

@@ -65,7 +65,8 @@ public class SystemInitializeAutoConfiguration {
                 break;
         }
 
-        RDBDatabase database = new SimpleDatabase(metaData, sqlExecutor);
+        SimpleDatabase database = new SimpleDatabase(metaData, sqlExecutor);
+        database.setAutoParse(true);
         SystemInitialize initialize = new SystemInitialize(version, sqlExecutor, database, jdbcUserName, type.name());
         initialize.afterPropertiesSet();
 

+ 1 - 1
hsweb-web-starter/src/main/java/org/hsweb/web/starter/SystemVersion.java

@@ -34,7 +34,7 @@ public class SystemVersion extends Version {
             setComment("企业后台管理系统基础框架");
             setWebsite("http://www.hsweb.me");
             setComment("");
-            setVersion(2, 2, 0, true);
+            setVersion(2, 2, 1, false);
         }
     }
 

+ 1 - 1
hsweb-web-websocket/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
hsweb-web-workflow/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>2.2</version>
+       <version>2.2.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 3 - 3
pom.xml

@@ -6,7 +6,7 @@
     <groupId>org.hsweb</groupId>
     <artifactId>hsweb-framework</artifactId>
     <packaging>pom</packaging>
-    <version>2.2</version>
+   <version>2.2.1</version>
 
     <name>${project.groupId}:${project.artifactId}</name>
     <url>http://www.hsweb.me</url>
@@ -65,7 +65,7 @@
 
         <activiti.version>5.19.0.2</activiti.version>
 
-        <fastjson.version>1.2.28</fastjson.version>
+        <fastjson.version>1.2.31</fastjson.version>
         <slf4j.version>1.7.21</slf4j.version>
         <h2.version>1.4.191</h2.version>
         <mysql.version>5.1.39</mysql.version>
@@ -73,7 +73,7 @@
         <aspectj.version>1.6.12</aspectj.version>
         <hibernate.validator.version>5.1.1.Final</hibernate.validator.version>
         <hsweb.ezorm.version>1.1</hsweb.ezorm.version>
-        <hsweb.commons.version>1.0</hsweb.commons.version>
+        <hsweb.commons.version>1.0.1</hsweb.commons.version>
         <hsweb.expands.version>1.0</hsweb.expands.version>
     </properties>