3 Replies Latest reply on Jun 22, 2009 9:32 AM by harryiam42

    weaving aspects into applets

      hi!

      alas my searching skills appear rather weak as i can find no advice on how to weave aspects into applets. we have a successfully woven some test advice into a straight up java application, but when i tried it with an applet it just ignored the advice. here is the command i'm using

      appletviewer -J-javaagent:/usr/local/jboss-aop-2.0.1.GA/lib/jboss-aop.jar -J-Djboss.aop.path=... -J-classpath -J.:/usr/local/jboss-aop-2... foo.html




      for reference the following works
      java -javaagent:/usr/local/jboss-aop-2.0.1.GA/lib/jboss-aop.jar -Djboss.aop.path... -classpath .:/usr/local/jboss-aop-2... foo





      thanks in advance
      - harry


        • 1. Re: weaving aspects into applets
          flavia.rainone

          It appears that the appletviewer is not compatible with our javaagent?

          Have you tried using aopc instead?

          • 2. Re: weaving aspects into applets

            thanks for the reply. we have not tried aopc yet, but will give it a go!

            cheers
            - harry

            • 3. Re: weaving aspects into applets

              alas the aopc route has not yet lead to happiness. in short i get the error

              java.lang.ExceptionInInitializerError
               at AnApple$AnAppleAdvisor.<init>(AnApple$AnAppleAdvisor.java)
               at AnApple.<clinit>(AnApple.java)
               at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)



              below is a more detailed trace of what i tried in case you have the time to take a look.

              thanks muchly
              - harry

              % more jboss-aop.xml
              <?xml version="1.0" encoding="UTF-8"?>
              <aop>
               <bind pointcut="execution(*->new(..))">
               <interceptor class="ConstructorInterceptor"/>
               </bind>
              </aop>
              
              % more AnApple.java
              import javax.swing.*;
              
              class Apple { Apple() {} }
              
              public class AnApple extends JApplet
              {
               public void init() { Apple a = new Apple(); }
               public static void main(String [] args) { Apple a = new Apple(); }
              }
              
              % /usr/local/bin/javac AnApple.java
              (i also tried javac -target 1.4 -source 1.4 with the same result)
              
              % /usr/local/jdk1.6.0_02/jre/bin/java -Djboss.aop.optimized=true -Djboss.aop.path=jboss-aop.xml -classpath .:/usr/local/jboss-aop-2.0.1.GA/lib/javassist.jar ... org.jboss.aop.standalone.Compiler -suppress -aoppath jboss-aop.xml AnApple.class Apple.class
              
              Build Successful: 553 ms
              
              % /usr/local/bin/java -javaagent:/usr/local/jboss-aop-2.0.1.GA/lib/jboss-aop.jar -Djboss.aop.path=jboss-aop.xml -classpath .:/usr/local/jboss-aop-2.0.1.GA/... AnApple
              
              *** creaation of *** Apple java.lang.Object
              (this is good :) )
              
              % more t.html
              <applet code="AnApple.class" width=400 height=400> </applet>
              
              % /usr/local/bin/appletviewer -J-Djboss.aop.path=jboss-aop.xml -J-classpath -J.:/usr/local/jboss-aop-2.0.1.GA/... t.html
              
              java.lang.ExceptionInInitializerError
               at AnApple$AnAppleAdvisor.<init>(AnApple$AnAppleAdvisor.java)
               at AnApple.<clinit>(AnApple.java)
               at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
               at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
               at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
               at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
               at java.lang.Class.newInstance0(Class.java:355)
               at java.lang.Class.newInstance(Class.java:308)
               at sun.applet.AppletPanel.createApplet(AppletPanel.java:779)
               at sun.applet.AppletPanel.runLoader(AppletPanel.java:708)
               at sun.applet.AppletPanel.run(AppletPanel.java:362)
               at java.lang.Thread.run(Thread.java:619)
              Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission createClassLoader)
               at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
               at java.security.AccessController.checkPermission(AccessController.java:546)
               at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
               at java.lang.SecurityManager.checkCreateClassLoader(SecurityManager.java:594)
               at java.lang.ClassLoader.<init>(ClassLoader.java:225)
               at java.security.SecureClassLoader.<init>(SecureClassLoader.java:76)
               at java.net.URLClassLoader.<init>(URLClassLoader.java:113)
               at org.jboss.aop.AspectManager.<clinit>(AspectManager.java:184)
               ... 12 more