Accéder à HttpSession avec AOP

Accéder à HttpSession avec AOP - Java - Programmation

Marsh Posté le 27-02-2009 à 15:33:30    

Bonjour,
 
Je voulais savoir s'il y avait un moyen d'accéder à des informations stockées en session avec de l'AOP.
Exemple de use case : Grace à de l'AOP, je calcule le temps d'exécution d'une méthode, et en plus je voudrais savoir quel utilisateur a provoqué l'appel de la dite méthode (info qui est donc stockée en session)
 
Je précise que je ne suis pas expert en AOP :)
Merci pour votre aide et peut etre vos débuts d'idées ou de pistes pour faire cela
 
Mickael

Reply

Marsh Posté le 27-02-2009 à 15:33:30   

Reply

Marsh Posté le 03-03-2009 à 16:29:32    

Personne n'a d'idée?? :s

Reply

Marsh Posté le 03-03-2009 à 17:38:15    

AOP est juste un outil, et pas spécifique à une application web.
Donc si tu veux récupérer la session, a toi de la mettre disponible (peut être dans un ThreadLocal, ou dispo dans ta méthode à mesurer)


---------------
Light is right
Reply

Marsh Posté le 05-03-2009 à 14:47:20    

nerisson a écrit :

AOP est juste un outil, et pas spécifique à une application web.
Donc si tu veux récupérer la session, a toi de la mettre disponible (peut être dans un ThreadLocal, ou dispo dans ta méthode à mesurer)


 
Merci pour ta réponse.
En fait j'ai réussi à faire ce que je voulais en parcourant plus en détail la doc d'AspectJ.
Pour ceux que ça interesse :
 

Code :
  1. pointcut doGet(HttpServletRequest request) : args(request,*) && execution(* MyServlet.doGet(HttpServletRequest,HttpServletResponse));
  2. pointcut serviceMethodsFromServlet(HttpServletRequest request) : cflow(doGet(request)) && target(MyService) && execution(public * *(..));
  3. before(HttpServletRequest request) : serviceMethodsFromServlet(request) {
  4.  System.out.println("UserId value : " + request.getSession().getAttribute("ssid" ));
  5. }


 
Ces 2 jolis pointcuts et cet advice me permettent de brancher mon aspect à chaque fois qu'une méthode publique de la classe MyService est exécutée dans le "Control Flow" de la méthode doGet de ma servlet.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed