2012-03-06 14 views
5

Me gustaría eliminar algunos archivos temporales cuando finaliza la sesión del usuario. La información asociada con los archivos se almacena en un objeto anotado con @SessionAttributes.¿Hay un "modo Spring 3 MVC" para escuchar el evento de la sesión final?

La única forma en que he encontrado para hacer frente a esto es crear un HttpSessionListener.

¿Existe un modo de mayor nivel, simplificado y elástico para escuchar el evento de fin de sesión en el que podría obtener fácilmente mi objeto anotado?

+0

Si el usuario cierra la sesión, puede actuar en ese caso. Si el usuario simplemente se desvía, 'HttpSessionListener' es la única opción. – DwB

Respuesta

1

no directamente relacionados, pero podría ser un proyecto interesante para mirar a.

https://github.com/shawnmclean/Idle.js

reunión la supresión ocurre normalmente en el lado del servidor, cuando caduque la sesión (por lo general 30mn). El proyecto anterior permite detectar comportamientos de usuario en el front end.

6

dos opciones para utilizar HttpSessionListener con granos de primavera:

La primera es utilizar WebApplicationContextUtils.getRequiredApplicationContext(servletContext) para obtener el contexto de servlet. Desde allí se tiene dos sub-opciones:

  • uso getBean(..)
  • Si desea utilizar @Autowired/@Inject uso getAutowireCapablyBeanFactory().autowireBean(this). Tendrá que hacerlo solo una vez (compruebe si los campos son null), porque el oyente es singleton.

La segunda opción es usar AspectJ and @Configurable en el oyente.

+0

He estado investigando este tema por un tiempo. ¿Sabes dónde puedo encontrar un ejemplo completo de esto? Gracias de antemano – stackoverflow

+0

No lo sé, pero creo que los fragmentos de arriba deberían ser suficientes :) – Bozho

Cuestiones relacionadas