[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