Ejemplo n.º 1
0
  /*
   * (non-Javadoc)
   *
   * @see
   * javax.servlet.http.HttpSessionBindingListener#valueUnbound(javax.servlet
   * .http.HttpSessionBindingEvent)
   */
  public void valueUnbound(HttpSessionBindingEvent event) {
    // 刷新页面的时候,TSysUser为null,所以要判断一下
    LoginUserVO user = (LoginUserVO) event.getValue();
    if (user != null) {
      /** ********************** UniId begin ******************************** */
      // 通知统一身份认证服务中心。此处的实现是通过数据库
      boolean singleLogin =
          PropDbUtil.getBoolean(IdConstants.SINGLE_LOGIN); // 是否开启了同一用户同一时间所有节点上只能登录一个的要求
      if (singleLogin) {
        String sql = SQLConfigUtil.getSql("sql.loginUserVO.delete");
        DBUtil.executeSQL(sql, user.getUserloginid()); // 移除在线用户表中用户信息
      }
      /** ********************** UniId end ******************************** */
      onlineUsers.remove(event.getSession().getId());
      if (LOG.isInfoEnabled()) {
        LOG.info(
            user.getUsername()
                + "[账号:"
                + user.getUserloginid()
                + "]"
                + " 退出系统"
                + ",目前有"
                + getCurrentOnlineCount()
                + "个用户已登录");
      }

    } else {
      if (LOG.isInfoEnabled()) {
        LOG.info(" 一个用户刷新系统" + ",目前有" + getCurrentOnlineCount() + "个用户已登录");
      }
    }
  }
Ejemplo n.º 2
0
  /*
   * (non-Javadoc)
   *
   * @see
   * javax.servlet.http.HttpSessionBindingListener#valueBound(javax.servlet
   * .http.HttpSessionBindingEvent)
   */
  public void valueBound(HttpSessionBindingEvent event) {

    LoginUserVO user = (LoginUserVO) event.getValue();
    onlineUsers.put(event.getSession().getId(), user);
    if (LOG.isInfoEnabled()) {
      LOG.info(
          user.getUsername()
              + "[账号:"
              + user.getUserloginid()
              + "]"
              + " 登录系统"
              + ",目前有"
              + getCurrentOnlineCount()
              + "个用户已登录");
    }

    /** ********************** UniId begin ******************************** */
    // 通知统一身份认证服务中心。此处的实现是通过数据库
    boolean singleLogin =
        PropDbUtil.getBoolean(IdConstants.SINGLE_LOGIN); // 是否开启了同一用户同一时间所有节点上只能登录一个的要求
    if (singleLogin) {
      try {
        String sql = SQLConfigUtil.getSql("sql.loginUserVO.count");
        int onlineNum = DBUtil.count(sql, getUserloginid());
        if (onlineNum == 0) {
          sql = SQLConfigUtil.getSql("sql.loginUserVO.insert");
          DBUtil.executeSQL(
              sql, getUserloginid(), getClientIP(), getServerIP(), DateUtil.currentTime());
        }
      } catch (SQLException e) {
        LOG.error(e);
      }
    }
    /** ********************** UniId end ******************************** */
  }