Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-users] NPE in LTW with aspectJ 1.5.2a

Hi all:

I´m trying to use LTW to integrate a debugging aspect into my application
using:

Tomcat 5.5

java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode)

And AspectJ 1.5.2a

I get the following error:

info weaving 'org/apache/catalina/storeconfig/WrapperListenerSF'
java.lang.NullPointerException
        at
org.aspectj.weaver.bcel.BcelWeaver.weaveParentTypeMungers(BcelWeaver.
java:1367)
        at
org.aspectj.weaver.bcel.BcelWeaver.weaveParentsFor(BcelWeaver.java:12
37)
        at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1072)
        at
org.aspectj.weaver.tools.WeavingAdaptor.getWovenBytes(WeavingAdaptor.
java:284)
        at
org.aspectj.weaver.tools.WeavingAdaptor.weaveClass(WeavingAdaptor.jav
a:212)
        at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:65)
        at
org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(C
lassPreProcessorAgentAdapter.java:55)
        at
sun.instrument.TransformerManager.transform(TransformerManager.java:1
22)
        at
sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java
:155)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
4)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:164)
        at
org.apache.catalina.storeconfig.StoreFactoryRule.newInstance(StoreFac
toryRule.java:121)
        at
org.apache.catalina.storeconfig.StoreFactoryRule.begin(StoreFactoryRu
le.java:87)
        at
org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1
275)
        at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startEle
ment(AbstractSAXParser.java:533)
        at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp
l.scanStartElement(XMLDocumentFragmentScannerImpl.java:878)
        at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp
l$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1693)
        at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp
l.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
        at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(X
ML11Configuration.java:834)
        at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(X
ML11Configuration.java:764)
        at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.
java:148)
        at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Ab
stractSAXParser.java:1242)
        at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1580)
        at
org.apache.catalina.storeconfig.StoreLoader.load(StoreLoader.java:241
)
        at
org.apache.catalina.storeconfig.StoreConfigLifecycleListener.createMB
ean(StoreConfigLifecycleListener.java:74)
        at
org.apache.catalina.storeconfig.StoreConfigLifecycleListener.lifecycl
eEvent(StoreConfigLifecycleListener.java:57)
        at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl
eSupport.java:119)
        at
org.apache.catalina.core.StandardServer.start(StandardServer.java:705
)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:275)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

The aspect works fine when using Iajc instead LTW, this is the aspect i use:

package com.mundivia.aopmonitor;

import org.apache.log4j.Logger;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;

import com.jamonapi.Monitor;
import com.jamonapi.MonitorFactory;


@Aspect
public class QuiterMonitorAspect {

    private static Monitor monitor;

    private static Logger logger = Logger
    .getLogger(QuiterMonitorAspect.class);

    @Pointcut(" execution(* com.quiter..*(..))")
    public void metodosQuiter(){

    }

    @Pointcut(" execution(*
pruebasmundivia.pool.implementaciones.AfinityCacheTiempoConexionConexionesDMSPoolSinTimer.*Conexion(..))")
    public void metodosPool(){

    }

    @Pointcut(" execution(* asjava.uniobjects.*(..))")
    public void metodosUniverse(){

    }

    @Pointcut(" execution(*
pruebasmundivia.pool.implementaciones.CommonsBasedConexionesDMSPool.*Conexion(..))")
    public void metodosCommonsPool(){

    }

    @Pointcut(" execution(*
pruebasmundivia.pool.implementaciones.HashTableBasedAfinityCacheSinTimer.comprobarContenido(..))")
    public void metodosCache(){

    }


    /*@Around("metodosQuiter()||metodosMundivia()")*/
    @Around("metodosPool()")
    public Object aspecto(ProceedingJoinPoint jp){
       // monitor=MonitorFactory.start(jp.getSignature().toLongString());
        Object devolver=null;
        long t1=0,t2=0;
        try {
            t1=System.nanoTime();
            devolver=jp.proceed();
            t2=System.nanoTime();
        } catch (Throwable e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            System.out.println(t2-t1);
           // monitor.stop();
            //logger.debug(monitor.toString());
           // System.out.println(monitor);
        }
        return devolver;


    }

//    @Pointcut("execution (* *(..))")
//    public void capaWeb(){
//
//    }
//
//    @Pointcut("execution(* *(..))")
//    public void capaDao(){
//
//    }
//
//    @Pointcut("execution(* *(..))")
//    public void capaModelo(){
//
//    }



}

And my aop.xml file store in a jar placed in tomcat/common/lib

<aspectj>
	<aspects>
	         <aspect name="com.mundivia.aopmonitor.QuiterMonitorAspect" />
		<include within="com.mundivia.aopmonitor.QuiterMonitorAspect" />
	</aspects>
	<weaver options="-verbose">
		<include within="asjava..*" />
	</weaver>
</aspectj>

It seems i´m having this bug
https://bugs.eclipse.org/bugs/show_bug.cgi?id=151182

Can anyone confirm it?

Other cuestion, why is weaver trying to weave org.apache classes when i
have not include them in the weaver section?

I send zip file with the aspect and the aop.xml file just in case anyone 
want to take a look

Thanks.

Attachment: QuiterJamonMonitor.zip
Description: Zip archive


Back to the top