This commit is contained in:
MaxKey 2022-04-26 18:29:58 +08:00
parent e51a3a25ba
commit 9221064088
7 changed files with 53 additions and 47 deletions

View File

@ -47,11 +47,11 @@ public class AbstractSessionService implements SessionService{
"update mxk_history_login set logouttime = ? ,sessionstatus = 7 where sessionid = ?"; "update mxk_history_login set logouttime = ? ,sessionstatus = 7 where sessionid = ?";
@Override @Override
public List<HistoryLogin> queryOnlineTicket() { public List<HistoryLogin> querySessions() {
List<HistoryLogin> listOnlineTicket = jdbcTemplate.query( List<HistoryLogin> listSessions = jdbcTemplate.query(
DEFAULT_DEFAULT_SELECT_STATEMENT, DEFAULT_DEFAULT_SELECT_STATEMENT,
new OnlineTicketRowMapper()); new OnlineTicketRowMapper());
return listOnlineTicket; return listSessions;
} }
public void profileLastLogoffTime(String userId,String lastLogoffTime) { public void profileLastLogoffTime(String userId,String lastLogoffTime) {
@ -93,27 +93,27 @@ public class AbstractSessionService implements SessionService{
} }
@Override @Override
public void store(String ticketId, Session ticket) { public void store(String sessionId, Session session) {
} }
@Override @Override
public Session remove(String ticket) { public Session remove(String sessionId) {
return null; return null;
} }
@Override @Override
public Session get(String ticketId) { public Session get(String sessionId) {
return null; return null;
} }
@Override @Override
public void refresh(String ticketId, LocalTime refreshTime) { public void refresh(String sessionId, LocalTime refreshTime) {
} }
@Override @Override
public void refresh(String ticketId) { public void refresh(String sessionId) {
} }

View File

@ -58,25 +58,25 @@ public class RedisSessionService extends AbstractSessionService {
} }
@Override @Override
public void store(String ticketId, Session ticket) { public void store(String sessionId, Session ticket) {
RedisConnection conn=connectionFactory.getConnection(); RedisConnection conn=connectionFactory.getConnection();
conn.setexObject(PREFIX+ticketId, serviceTicketValiditySeconds, ticket); conn.setexObject(PREFIX+sessionId, serviceTicketValiditySeconds, ticket);
conn.close(); conn.close();
} }
@Override @Override
public Session remove(String ticketId) { public Session remove(String sessionId) {
RedisConnection conn=connectionFactory.getConnection(); RedisConnection conn=connectionFactory.getConnection();
Session ticket = conn.getObject(PREFIX+ticketId); Session ticket = conn.getObject(PREFIX+sessionId);
conn.delete(PREFIX+ticketId); conn.delete(PREFIX+sessionId);
conn.close(); conn.close();
return ticket; return ticket;
} }
@Override @Override
public Session get(String ticketId) { public Session get(String sessionId) {
RedisConnection conn=connectionFactory.getConnection(); RedisConnection conn=connectionFactory.getConnection();
Session session = conn.getObject(PREFIX+ticketId); Session session = conn.getObject(PREFIX+sessionId);
conn.close(); conn.close();
return session; return session;
} }
@ -95,8 +95,8 @@ public class RedisSessionService extends AbstractSessionService {
} }
@Override @Override
public void refresh(String ticketId) { public void refresh(String sessionId) {
Session session = get(ticketId); Session session = get(sessionId);
LocalTime currentTime = LocalTime.now(); LocalTime currentTime = LocalTime.now();
Duration duration = Duration.between(currentTime, session.getLastAccessTime()); Duration duration = Duration.between(currentTime, session.getLastAccessTime());
@ -105,7 +105,7 @@ public class RedisSessionService extends AbstractSessionService {
if(duration.getSeconds() > Session.MAX_EXPIRY_DURATION) { if(duration.getSeconds() > Session.MAX_EXPIRY_DURATION) {
session.setLastAccessTime(currentTime); session.setLastAccessTime(currentTime);
refresh(ticketId,currentTime); refresh(sessionId,currentTime);
} }
} }

View File

@ -24,19 +24,19 @@ import org.maxkey.entity.HistoryLogin;
public interface SessionService { public interface SessionService {
public void store(String ticketId, Session ticket); public void store(String sessionId, Session session);
public Session remove(String ticket); public Session remove(String sessionId);
public Session get(String ticketId); public Session get(String sessionId);
public void refresh(String ticketId ,LocalTime refreshTime); public void refresh(String sessionId ,LocalTime refreshTime);
public void refresh(String ticketId); public void refresh(String sessionId);
public void setValiditySeconds(int validitySeconds); public void setValiditySeconds(int validitySeconds);
public List<HistoryLogin> queryOnlineTicket(); public List<HistoryLogin> querySessions();
public void terminate(String onlineTicket,String userId,String username); public void terminate(String sessionId,String userId,String username);
} }

View File

@ -39,24 +39,27 @@ public class InMemoryMomentaryService implements MomentaryService{
} }
@Override @Override
public void put(String ticket , String name, Object value){ public void put(String sessionId , String name, Object value){
momentaryStore.put(getKey(ticket,name), value); _logger.trace("key {}, value {}",getSessionKey(sessionId , name),value);
momentaryStore.put(getSessionKey(sessionId,name), value);
} }
@Override @Override
public Object remove(String ticket , String name) { public Object remove(String sessionId , String name) {
Object value = momentaryStore.getIfPresent(getKey(ticket,name)); Object value = momentaryStore.getIfPresent(getSessionKey(sessionId,name));
momentaryStore.invalidate(getKey(ticket,name)); momentaryStore.invalidate(getSessionKey(sessionId,name));
_logger.trace("key {}, value {}",getSessionKey(sessionId , name),value);
return value; return value;
} }
@Override @Override
public Object get(String ticket , String name) { public Object get(String sessionId , String name) {
return momentaryStore.getIfPresent(getKey(ticket,name)); _logger.trace("key {}",getSessionKey(sessionId , name));
return momentaryStore.getIfPresent(getSessionKey(sessionId,name));
} }
private String getKey(String ticket , String name) { private String getSessionKey(String sessionId , String name) {
return ticket +"_"+ name; return sessionId + "_" + name;
} }
} }

View File

@ -19,10 +19,10 @@ package org.maxkey.persistence;
public interface MomentaryService { public interface MomentaryService {
public void put(String ticket , String name, Object value); public void put(String sessionId , String name, Object value);
public Object get(String ticket , String name); public Object get(String sessionId , String name);
public Object remove(String ticket , String name); public Object remove(String sessionId , String name);
} }

View File

@ -52,32 +52,35 @@ public class RedisMomentaryService implements MomentaryService {
} }
@Override @Override
public void put(String ticket , String name, Object value){ public void put(String sessionId , String name, Object value){
RedisConnection conn = connectionFactory.getConnection(); RedisConnection conn = connectionFactory.getConnection();
conn.setexObject(getKey(ticket , name), validitySeconds, value); conn.setexObject(getSessionKey(sessionId , name), validitySeconds, value);
_logger.trace("key {}, validitySeconds {}, value {}",getSessionKey(sessionId , name),validitySeconds,value);
conn.close(); conn.close();
} }
@Override @Override
public Object get(String ticket , String name) { public Object get(String sessionId , String name) {
RedisConnection conn = connectionFactory.getConnection(); RedisConnection conn = connectionFactory.getConnection();
Object value = conn.getObject(getKey(ticket , name)); Object value = conn.getObject(getSessionKey(sessionId , name));
_logger.trace("key {}, value {}",getSessionKey(sessionId , name),value);
conn.close(); conn.close();
return value; return value;
} }
@Override @Override
public Object remove(String ticket, String name) { public Object remove(String sessionId, String name) {
RedisConnection conn = connectionFactory.getConnection(); RedisConnection conn = connectionFactory.getConnection();
Object value = conn.getObject(getKey(ticket , name)); Object value = conn.getObject(getSessionKey(sessionId , name));
conn.delete(getKey(ticket , name)); conn.delete(getSessionKey(sessionId , name));
conn.close(); conn.close();
_logger.trace("key {}, value {}",getSessionKey(sessionId , name),value);
return value; return value;
} }
private String getKey(String ticket , String name) { private String getSessionKey(String sessionId , String name) {
return PREFIX + ticket + name; return PREFIX + sessionId + name;
} }

View File

@ -41,7 +41,7 @@ public class SessionListenerJob extends AbstractScheduleJob implements Job , S
jobStatus = JOBSTATUS.RUNNING; jobStatus = JOBSTATUS.RUNNING;
try { try {
if(sessionService != null) { if(sessionService != null) {
for (HistoryLogin onlineSession : sessionService.queryOnlineTicket()) { for (HistoryLogin onlineSession : sessionService.querySessions()) {
if(sessionService.get(onlineSession.getSessionId()) == null) { if(sessionService.get(onlineSession.getSessionId()) == null) {
sessionService.terminate( sessionService.terminate(
onlineSession.getSessionId(), onlineSession.getSessionId(),