Ola,
Seguinte, crie uma classe que implemente o HttpSessionListener, esta classe tem que ter um construtor default, sem argumentos, esta interface define dois metodos,
void sessionCreated(HttpSessionEvent se)
Notification that a session was created.
void sessionDestroyed(HttpSessionEvent se)
Notification that a session is about to be invalidated.
Como vc pode ver na descrição, vc será notificado quando uma sessão for criada e quando uma sessão for destruida, ache um modo desta tua classe ficar disponivel para o resto da aplicação, e crie os metodos de acesso desejado.... pronto, vc criou um repositorio...
Só esqueci, acho que vc tem que declarar este listener no seu DD, assim:
<web-app...
<listener>
<listener-class>my.path.to.listener.class</listener-class>
</listener>