[aspectwerkz-user] class not found exception after hotdeploy - please help

Mihir Mehta <[email protected]>
Newsgroups gmane.comp.java.aspectwerkz.user
Message-ID <[email protected]>
Hi,

 It seems to be related to my not fully understanding
the relationships between deployment scope,
aspect/pointcut and classloaders.

 I have the following scenario. I put a jar file with
the aspect and aop.xml in WEB-INF/lib to define a
deployment scope.

 Here is the aop.xml
<!DOCTYPE aspectwerkz PUBLIC
    "-//AspectWerkz//DTD//EN"
   
"http://aspectwerkz.codehaus.org/dtd/aspectwerkz.dtd">

<aspectwerkz>
    <system id="webapp">
        <aspect class="demoaspect.DemoAspect">
            <deployment-scope name="response_time"
expression="execution(public * org.appfuse..*.*(..))
AND !within(demoaspect..*)"/>
        </aspect>
    </system>
</aspectwerkz>

When one of the web action is invoked I deploy the
aspect using following code.

        if
(user.getUsername().equalsIgnoreCase("hotdeploy")) {
        	log.info("encountered 'hotdeploy' user");
        	SystemDefinition sysDef =
SystemDefinitionContainer.
	       
getDefinitionFor(this.getClass().getClassLoader(),
"webapp");
        	if(sysDef != null) {
        		log.info("found system definition");
                System.out.println("SystemDefinition
found!");
                DeploymentScope scope =
sysDef.getDeploymentScope("response_time");
                log.info("found deployment scope : " +
scope.getExpression());
                System.out.println("Scope is:
"+scope.getExpression());
                if (scope != null) {
            	    DeploymentHandle handle = 
            	    	Deployer.deploy(DemoAspect.class,
"<aspect name='measureTime'>" +
            	    			"<pointcut name='usermanager' " + 
								"expression='execution(public *
org.appfuse.service.UserManager.*.*(..)) AND
!within(demoaspect..*)' " +
								"/> " +
								"<advice name='trace' type='around'
bind-to='usermanager'/> " +
								"</aspect>",scope);

                }
            }
        }

When this piece of code is called I get following
exception. I am including some enclosing print
statements too:



demoapp] INFO [http-8080-Processor23]
SignupForm.aw$original$_AW_$save$_AW_$org_appfuse_webapp_action_SignupForm(82)
| encountered 'hotdeploy' user
[demoapp] INFO [http-8080-Processor23]
SignupForm.aw$original$_AW_$save$_AW_$org_appfuse_webapp_action_SignupForm(86)
| found system definition
SystemDefinition found!
[demoapp] INFO [http-8080-Processor23]
SignupForm.aw$original$_AW_$save$_AW_$org_appfuse_webapp_action_SignupForm(89)
| found deployment scope : execution(public *
org.appfuse..*.*(..)) AND !within(demoaspect..*)
Scope is: execution(public * org.appfuse..*.*(..)) AND
!within(demoaspect..*)
Deployer::INFO - deploying aspect
[demoaspect.DemoAspect] in class loader
[WebappClassLoader
  delegate: false
  repositories:
    /WEB-INF/classes/
----------> Parent Classloader:
org.apache.catalina.loader.StandardClassLoader@18ca663
]
AW::WARNING - could not load class
[org/appfuse/model/User$$BulkBeanByCGLIB$$f86a5545] as
a resource in loader [WebappClassLoader
  delegate: false
  repositories:
    /WEB-INF/classes/
----------> Parent Classloader:
org.apache.catalina.loader.StandardClassLoader@18ca663
]
....
Caused by: java.io.IOException: Class not found
	at
org.codehaus.aspectwerkz.reflect.impl.asm.AsmClassInfo.getClassInfo(AsmClassInfo.java:317)
	at
org.codehaus.aspectwerkz.reflect.impl.asm.AsmClassInfo.getClassInfo(AsmClassInfo.java:331)
	at
org.codehaus.aspectwerkz.reflect.impl.asm.AsmClassInfo.createClassInfoFromStream(AsmClassInfo.java:790)
	at
org.codehaus.aspectwerkz.reflect.impl.asm.AsmClassInfo.getClassInfo(AsmClassInfo.java:273)
	at
org.codehaus.aspectwerkz.transform.inlining.compiler.JoinPointFactory.getJoinPointsMatching(JoinPointFactory.java:158)
	at
org.codehaus.aspectwerkz.transform.inlining.deployer.Deployer.redefine(Deployer.java:402)
	at
org.codehaus.aspectwerkz.transform.inlining.deployer.Deployer.deploy(Deployer.java:306)
	at
org.codehaus.aspectwerkz.transform.inlining.deployer.Deployer.deploy(Deployer.java:241)
	at
org.appfuse.webapp.action.SignupForm.aw$original$_AW_$save$_AW_$org_appfuse_webapp_action_SignupForm(SignupForm.java:93)
	at
org.appfuse.webapp.action.SignupForm_1__1085656376_3523570___AW_JoinPoint.invoke(Unknown
Source)
	at
org.appfuse.webapp.action.SignupForm.save(SignupForm.java)
	at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at
net.sourceforge.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:135)
	... 58 more
Caused by: java.io.IOException: Class not found
	at
org.codehaus.aspectwerkz.org.objectweb.asm.ClassReader.readClass(Unknown
Source)
	at
org.codehaus.aspectwerkz.org.objectweb.asm.ClassReader.<init>(Unknown
Source)
	at
org.codehaus.aspectwerkz.reflect.impl.asm.AsmClassInfo.getClassInfo(AsmClassInfo.java:304)
	... 73 more
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.