[jboss-user] [JBoss AOP] - Jboss servlet/aop Deploymentexception: Cannot find aspect

kistler59 do-not-reply at jboss.com
Fri Nov 24 13:31:36 EST 2006


Ok, here is the scenario:

I'm trying to develop a webapplication using aop to implement role based security (I don't believe the pre-defined Security aspects will be sufficient)

I have written the annotations into the aspect class but wrote the jboss-aop.xml file aswell so I could try to use either precompiled or loadtime weaving.  I believe loadtime weaving is preferred for web applications (is this incorrect?)

I'm using jboss-4.0.5GA and installed jboss-aop-jdk50.deployer and setup the pluggable-instrumentor.jar in run.bat

I have written the Servelt and Aspect classes:

Servlet:

  | package com.dlens;
  | 
  | import javax.servlet.Servlet;
  | import javax.servlet.ServletException;
  | import javax.servlet.ServletRequest;
  | import javax.servlet.ServletResponse;
  | import javax.servlet.http.HttpServlet;
  | 
  | public class myServlet extends HttpServlet {
  |     
  |     public void test() {
  |         System.out.println("This is my test servlet function");
  |     }
  |     
  |     public void service(ServletRequest req, ServletResponse res) 
  |                             throws ServletException, java.io.IOException {
  |         test();
  |     }
  | }
  | 

Aspect:

  | package test.dlens;
  | 
  | import org.jboss.aop.advice.Scope;
  | import org.jboss.aop.joinpoint.Invocation;
  | import org.jboss.aop.Bind;
  | import org.jboss.aop.Aspect;
  | 
  | @Aspect(scope=Scope.PER_VM)
  | public class myAspect {
  |     
  |     @Bind(pointcut="call(* com.dlens.myServlet->*(..) )")
  |     public Object trace(Invocation invocation) throws Throwable {
  |         try {
  |             System.out.println("enter jointpoint");
  |             return invocation.invokeNext();
  |         } finally {
  |             System.out.println("leave joinpoint");
  |         }
  |     }
  |     
  | }
  | 

War deployment descriptor:

  | <?xml version="1.0" encoding="UTF-8"?>
  | <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.4//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
  | <web-app>
  | 	<display-name>Test</display-name>
  | 	<description>Test</description>
  | 
  |     <servlet>
  |         <servlet-name>testServ</servlet-name>
  |         <servlet-class>com.dlens.myServlet</servlet-class>
  |     </servlet>
  | 
  | 
  |     <servlet-mapping>
  |         <servlet-name>testServ</servlet-name>
  |         <url-pattern>/testServ/*</url-pattern>
  |     </servlet-mapping>
  | 
  | </web-app>
  | 

jboss-aop.xml

  | <?xml version="1.0" encoding="UTF-8"?>
  | <aop>
  |    <aspect class="test.dlens.myAspect" scope="PER_VM"/>
  |    <bind pointcut="call(* com.dlens.myServlet->*(..) )">
  |       <advice name="myAdvice" asepct="test.dlens.myAspect" />
  |    </bind>
  | </aop>
  | 

So far I have tried a variety of approaches for packaging and deployment as described here: http://labs.jboss.com/portal/jbossaop/docs/1.5.0.GA/docs/aspect-framework/examples/injboss/aopInJbossPackaging.html with little success so far.

When the deployment of the pacakge occurs I continue to get the following exception:


anonymous wrote : 
  | 12:57:22,250 ERROR [STDERR] [error] advice myAdvice cannot find aspect  jar:file:/C:/jboss-4.0.5.GA/server/all/tmp/deploy/tmp52702test.jar-contents/aspects
  | .aop!/META-INF/jboss-aop.xml
  | 12:57:22,265 ERROR [STDERR] java.lang.RuntimeException: java.lang.RuntimeException: advice myAdvice cannot find aspect
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.aop.AspectXmlLoader.deployXML(AspectXmlLoader.java:892)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.aop.AspectXmlLoader.deploy(AspectXmlLoader.java:1206)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.aop.AspectXmlLoader.deployXML(AspectXmlLoader.java:1232)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.aop.deployment.AspectDeployer.create(AspectDeployer.java:167)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.deployment.MainDeployer.create(MainDeployer.java:969)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.deployment.MainDeployer.create(MainDeployer.java:959)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:818)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)
  | 12:57:22,265 ERROR [STDERR]     at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)
  | 12:57:22,265 ERROR [STDERR]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  | 12:57:22,265 ERROR [STDERR]     at java.lang.reflect.Method.invoke(Method.java:585)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
  | 12:57:22,265 ERROR [STDERR]     at $Proxy8.deploy(Unknown Source)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:634)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.loop(AbstractDeploymentScanner.java:274)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run(AbstractDeploymentScanner.java:225)
  | 12:57:22,265 ERROR [STDERR] Caused by: java.lang.RuntimeException: advice myAdvice cannot find aspect
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.aop.AspectXmlLoader.deployAdvice(AspectXmlLoader.java:223)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.aop.AspectXmlLoader.loadInterceptors(AspectXmlLoader.java:382)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.aop.AspectXmlLoader.deployBinding(AspectXmlLoader.java:274)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.aop.AspectXmlLoader.deployTopElements(AspectXmlLoader.java:1038)
  | 12:57:22,265 ERROR [STDERR]     at org.jboss.aop.AspectXmlLoader.deployXML(AspectXmlLoader.java:886)
  | 12:57:22,265 ERROR [STDERR]     ... 25 more
  | 12:57:22,281 ERROR [MainDeployer] Could not create deployment: file:/C:/jboss-4.0.5.GA/server/all/tmp/deploy/tmp52702test.jar-contents/aspects.aop
  | org.jboss.deployment.DeploymentException: java.lang.RuntimeException: advice myAdvice cannot find aspect ; - nested throwable: (java.lang.RuntimeException:
  |  java.lang.RuntimeException: advice myAdvice cannot find aspect )
  |         at org.jboss.aop.deployment.AspectDeployer.create(AspectDeployer.java:175)
  |         at org.jboss.deployment.MainDeployer.create(MainDeployer.java:969)
  |         at org.jboss.deployment.MainDeployer.create(MainDeployer.java:959)
  |         at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:818)
  |         at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)
  |         at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)
  |         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |         at java.lang.reflect.Method.invoke(Method.java:585)
  |         at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
  |         at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
  |         at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
  |         at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
  |         at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
  |         at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
  |         at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
  |         at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
  |         at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
  |         at $Proxy8.deploy(Unknown Source)
  |         at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)
  |         at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:634)
  |         at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263)
  |         at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.loop(AbstractDeploymentScanner.java:274)
  |         at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run(AbstractDeploymentScanner.java:225)
  | Caused by: java.lang.RuntimeException: java.lang.RuntimeException: advice myAdvice cannot find aspect
  |         at org.jboss.aop.AspectXmlLoader.deployXML(AspectXmlLoader.java:892)
  |         at org.jboss.aop.AspectXmlLoader.deploy(AspectXmlLoader.java:1206)
  |         at org.jboss.aop.AspectXmlLoader.deployXML(AspectXmlLoader.java:1232)
  |         at org.jboss.aop.deployment.AspectDeployer.create(AspectDeployer.java:167)
  |         ... 22 more
  | Caused by: java.lang.RuntimeException: advice myAdvice cannot find aspect
  |         at org.jboss.aop.AspectXmlLoader.deployAdvice(AspectXmlLoader.java:223)
  |         at org.jboss.aop.AspectXmlLoader.loadInterceptors(AspectXmlLoader.java:382)
  |         at org.jboss.aop.AspectXmlLoader.deployBinding(AspectXmlLoader.java:274)
  |         at org.jboss.aop.AspectXmlLoader.deployTopElements(AspectXmlLoader.java:1038)
  |         at org.jboss.aop.AspectXmlLoader.deployXML(AspectXmlLoader.java:886)
  |         ... 25 more
  | 


So I tried simplifying things and ONLY deploying a .aop archive.. with:

META-INF/jboss-aop.xml
test/dlens/myAspect.class

and get the same exception

I've tried deploying the war file (test.war):
WEB-INF/web.xml
WEB-INF/classes/com/dlens/myServlet.class


I've also tried deploying test.jar with:
test.aop
test.war

and I still recieve the same exception...


Can anyone point out where I've gone wrong?  I know I can define all my pointcuts and aspects through the xml descriptor, I can define all this through annotations, or a combination of the two.  Is this a classloader issue?

Also.. about annotations.  Does annotationC only need to be used for jdk1.4?  I'm using 1.5.0._06-b05

Also do I need to run aopc for the same reasons? I've tried with and without (perhaps incorrectly!) but I thought this was handled by loadtime weaving.

Any ideas?  Thanks 

-Keith

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3988440#3988440

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3988440



More information about the jboss-user mailing list