Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Monitoring JBOSS

I found sone references about using aspectj with JBOSS in JBOSS's forum at 
www.jboss.org. 
There some people talked about using aspectj for profiling and monitoring 
purposals about JBOSS. Does anybody knows any document or similar about this?.
I tried to create an aspect for monitoring the desired classes but after 
studying JBOSS architecture I think that there's a trouble created by the fact 
that  every container uses its own class loader ( I guess... :P ).
Can everybody help me about that?¿.

There is a more in-depth description of my problem below.

Thanks everybody and apologies for my english ( :P )

Dave Garcia


> Hi everybody, I'm trying to monitor JBOSS's behaviour using AOP. I'm 
> interested in monitoring javax.servlet.Servlet.service(...)  and 
> org.jboss.ejb.Container.invoke(...) method's execution.
> I got no problem monitoring servlets but got some troubles when monitoring 
> container's invokes.
> 
> I created the following aspect file:
> 
> 
> aspect container {
> pointcut po0_execution (org.jboss.ejb.Container objo,java.lang.String 
> p0,java.lang.Object[] p1,java.lang.String[] 
> p2):target(objo)&&(execution(java.lang.Object 
> invoke(java.lang.String,java.lang.Object[],java.lang.String[])))&&args(p0,
> p1, 
> p2);
> 
> before(org.jboss.ejb.Container objo,java.lang.String p0,java.lang.Object[] 
> p1,java.lang.String[] p2):po0_execution(objo,p0, p1, p2){
> /*You can acces to those objects using their name
> Caller object :org.jboss.ejb.Container objo
> Parameter 0:java.lang.String p0
> Parameter 1:java.lang.Object[] p1
> Parameter 2:java.lang.String[] p2
> */
> System.out.println("Someone is invoking me");
> }
> after(org.jboss.ejb.Container objo,java.lang.String p0,java.lang.Object[] 
> p1,java.lang.String[] p2):po0_execution(objo,p0, p1, p2){
> /*You can acces to those objects using their name
> Caller object :org.jboss.ejb.Container objo
> Parameter 0:java.lang.String p0
> Parameter 1:java.lang.Object[] p1
> Parameter 2:java.lang.String[] p2
> */
> 
> }
> pointcut po1_execution (org.jboss.ejb.Container 
> objo):target(objo)&&(execution(void start()));
> 
> before(org.jboss.ejb.Container objo):po1_execution(objo){
> /*You can acces to those objects using their name
> Caller object :org.jboss.ejb.Container objo
> */
> System.out.println("start");
> }
> after(org.jboss.ejb.Container objo):po1_execution(objo){
> /*You can acces to those objects using their name
> Caller object :org.jboss.ejb.Container objo
> */
> 
> }
> pointcut po2_execution (org.jboss.ejb.Container 
> objo):target(objo)&&(execution(void stop()));
> 
> before(org.jboss.ejb.Container objo):po2_execution(objo){
> /*You can acces to those objects using their name
> Caller object :org.jboss.ejb.Container objo
> */
> System.out.println("stop");
> }
> after(org.jboss.ejb.Container objo):po2_execution(objo){
> /*You can acces to those objects using their name
> Caller object :org.jboss.ejb.Container objo
> */
> 
> }
> pointcut po3_call (org.jboss.ejb.Container objo,java.lang.String 
> p0,java.lang.Object[] p1,java.lang.String[] 
> p2):target(objo)&&(call(java.lang.Object 
> invoke(java.lang.String,java.lang.Object[],java.lang.String[])))&&args(p0,
> p1, 
> p2);
> 
> before(org.jboss.ejb.Container objo,java.lang.String p0,java.lang.Object[] 
> p1,java.lang.String[] p2):po3_call(objo,p0, p1, p2){
> /*You can acces to those objects using their name
> Caller object :org.jboss.ejb.Container objo
> Parameter 0:java.lang.String p0
> Parameter 1:java.lang.Object[] p1
> Parameter 2:java.lang.String[] p2
> */
> 
> }
> after(org.jboss.ejb.Container objo,java.lang.String p0,java.lang.Object[] 
> p1,java.lang.String[] p2):po3_call(objo,p0, p1, p2){
> /*You can acces to those objects using their name
> Caller object :org.jboss.ejb.Container objo
> Parameter 0:java.lang.String p0
> Parameter 1:java.lang.Object[] p1
> Parameter 2:java.lang.String[] p2
> */
> 
> }
> pointcut po4_call (org.jboss.ejb.Container objo):target(objo)&&(call(void 
> start()));
> 
> before(org.jboss.ejb.Container objo):po4_call(objo){
> /*You can acces to those objects using their name
> Caller object :org.jboss.ejb.Container objo
> */
> System.out.println("call start");
> }
> after(org.jboss.ejb.Container objo):po4_call(objo){
> /*You can acces to those objects using their name
> Caller object :org.jboss.ejb.Container objo
> */
> 
> }
> pointcut po5_call (org.jboss.ejb.Container objo):target(objo)&&(call(void 
> stop()));
> 
> before(org.jboss.ejb.Container objo):po5_call(objo){
> /*You can acces to those objects using their name
> Caller object :org.jboss.ejb.Container objo
> */
> System.out.println("call stop");
> }
> after(org.jboss.ejb.Container objo):po5_call(objo){
> /*You can acces to those objects using their name
> Caller object :org.jboss.ejb.Container objo
> */
> 
> }
> }
> 
> But nothing is displayed in the screen :(. Does anybody has any clues about 
> what's happenning and why those message aren't displayed ?.
> 
> Thanks everybody.
> 
> Dave Garcia
> 
> Politecnical University of Catalonia.
> 
> 
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> http://dev.eclipse.org/mailman/listinfo/aspectj-users
> 




Back to the top