Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Need help in intercepting session.setAttribute() in tomcat

Thanks Andy for these useful pointers.

I found out that it was my fault. I placed my aspect jar in my web-app's lib.
As the jasper-runtime classes are loaded by StandardClassLoader, not the WebAppClassloader, these classes were not being weaved.

Placing my aspect jar in Tomcat/common/lib solved the problem.

Regards
Tahir Akhtar

Andy Clement wrote:
If the implementing class really is
org.apache.jasper.runtime.PageContextImpl then your include clause
should be fine.  Have you tried turning on the diagnostics for load
time weaving to check the configuration is processed correctly and
types are being passed to the weaver for weaving?
The '-debug' option I described in
http://andrewclement.blogspot.com/2009/02/load-time-weaving-basics.html
might be useful for you.  At least it can help get to the bottom of
whether it is the type not getting processed by the weaver or the
weaver seeing it and not actually weaving it.

Andy

2009/5/14 Tahir Akhtar <tahir@xxxxxxxxxxxxxxxxxxx>:
  
Hi,
I am using load time weaving in tomcat to weave an around advice on
session attribute get/set methods.
It is working as expected, except for the jsp:useBean tags like below.

<jsp:useBean id="list" class="java.util.ArrayList" scope="session"/>

My pointcut is:

pointcut setSessionAttribute(HttpSession session,String name, Object
value) :   target(session) && call(public void setAttribute(String,
Object)) && !within(HttpSessionScopeAspect) && args(name,value);

I have tried several combinations in aop.xml including following

  <include within="com..*" />
  <include within="javax..*" />
  <include within="org..*" />
  <include within="org.apache.jasper..*" />

But still haven't found a clue.

I have noticed that Tomcat's jsp compiler generates code like this for
<jsp:useBean>, where _jspx_page_context is an instance of
org.apache.jasper.runtime.PageContextImpl

    java.util.ArrayList list= null;
    synchronized (session) {
      list = (java.util.ArrayList)
_jspx_page_context.getAttribute("list", PageContext.SESSION_SCOPE);
      if (list == null){
        list = new java.util.ArrayList();
        _jspx_page_context.setAttribute("list", list,
PageContext.SESSION_SCOPE);
      }
    }


Any help will be highly appreciated.

Regards
Tahir Akhtar


_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users

    
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users


  


Back to the top