1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Centralizar tratamento de sessions para múltiplos sistema spring boot e spring session

E aí pessoal, tudo bem? Estou com uma dúvida/problema com Java, mais especificamente envolvendo Spring Boot, Spring Session e Spring Redis.

Estou em um projeto onde existem muitos "subprojetos" e o subprojeto que eu estou é um projeto de tratamento de permissão e tratamento de sessões o nome deste projeto é Permissão.

O que eu preciso fazer é centralizar todas as sessões de todos os outros sistemas nesse sistema, quando eu digo centralizar, eu quero que os demais sistemas façam chamadas através de RMI para o Permissão, afim de criar, deletar, salvar e pegar as sessões. As sessões além de serem criadas no Permissão devem ser salvas em um Redis, pois, temos uma estrutura de blue/green onde posso ter dois sistemas Permissão rodando ao mesmo tempo, sendo o Redis um repositório das sessões.

Até então, o que eu fiz:

No sistema Permissão:

  • Adicionei as dependências do spring redis, a qual disponibiliza uma anotação que faz funcionar toda a parte de salvar as sessões diretamente no Redis, para o sistema Permissão está funcionando;
  • Criei uma classe que injeta RedisOperationSessionRepository (essa é a implementação de SessionRepository do spring redis) para poder externalizar os métodos que ele possui e os quais eu preciso utilizar nos outros sistemas através de RMI.

Nos outros sistemas:

  • Criei uma classe que implementa SessionRepository e injetei a interface do RMI que eu implementei no Permissão para poder fazer o bind dos métodos que o SessionRepository necessita que sejam implementados.

Até aqui tudo certo, porém, quando vou executar as chamadas eu recebo uma mensagem de erro, informando que eu não consigo passar o Objeto Session (session é um interface que é implementada em uma inner class dentro da classe RedisOperationSessionRepository), minha primeira tentativa foi de utilizar o SerializationUtils, porém, ele não consegue serializar uma classe privada dentro de outra classe que não implementa serializable, que é o caso da implementação da interface Session que acontece dentro da classe RedisOperationSessionRepository, o nome dessa inner class é RedisSession.

Enfim, falei bastante sobre o problema mas não sei se estou indo no caminho correto.

Alguém conhece alguma maneira de fazer o que eu estou querendo, ou seja, repassar todo o controle de criação de sessões para um sistema central?

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java session spring ou faça a sua própria pergunta.