6 Replies Latest reply on Nov 13, 2009 7:14 PM by stalep

    JBoss Microcontainer with JBoss AOP in a standalone app.

      Hi,

      I'm trying to create a standalone app using JBoss Microcontainer for IoC and JBoss AOP for, well, AOP.
      I've boot-strapped, deployed a descriptor with AOP XML, so far so good.
      But the aspect is not performed. Do I need to enable AOP plugin ors something?

      Please check the code below.

      Thanks for help.


      <deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="urn:jboss:bean-deployer:2.0 bean-deployer_2_0.xsd"
       xmlns="urn:jboss:bean-deployer:2.0"
       xmlns:aop="urn:jboss:aop-beans:1.0">
      
       <bean name="myGarage" class="cz.zizka.ondra.jbmctest.Garage">
       <property name="car">
       <bean name="myCar" class="cz.zizka.ondra.jbmctest.Car">
       <property name="name">Red Devil</property>
       </bean>
       </property>
       </bean>
      
       <aop:interceptor name="FuelInterceptor" class="cz.zizka.ondra.jbmctest.FuelInterceptor"/>
      
       <aop:bind pointcut="execution(* cz.zizka.ondra.jbmctest.Car->set*Fuel(..)">
       <aop:interceptor-ref name="FuelInterceptor"/>
       </aop:bind>
      
      </deployment>
      



       public static void main( String[] args ) throws Throwable
       {
       // Bootstrap.
       BasicBootstrap bootstrap = new BasicBootstrap();
       bootstrap.run();
      
       // Load the bean definitions.
       URL url = Thread.currentThread().getContextClassLoader().getResource("jboss-beans.xml");
       BasicXMLDeployer deployer = new BasicXMLDeployer( bootstrap.getKernel() );
       deployer.deploy( url );
      
       KernelController cont = bootstrap.getKernel().getController();
       ControllerContext context = cont.getInstalledContext("myGarage");
       System.out.println( "I have a garage: "+context.getTarget());
      
       // Put some fuel in.
       Car myCar = (Car) cont.getInstalledContext("myCar").getTarget();
       myCar.setLitresOfFuel( myCar.getLitresOfFuel() + 1 );
       System.out.println( "I have a garage: "+context.getTarget());
      
      
       deployer.shutdown();
      
       }
      



      public class FuelInterceptor implements Interceptor {
      
       private static final Logger log = Logger.getLogger( FuelInterceptor.class.getName() );
      
       public Object invoke(Invocation invocation) throws Throwable
       {
       System.out.println( "In FuelInterceptor." );
       if( true ) throw new Exception(); // To see that it's really NOT called.
       Object target = invocation.getTargetObject();
       long time = System.currentTimeMillis();
       log.info("Invocation [" + target + "] start: " + time);
       try{
       return invocation.invokeNext();
       }
       finally{
       log.info("Invocation [" + target + "] time: " + (System.currentTimeMillis() - time));
       }
       }
      
       public String getName() {
       return FuelInterceptor.class.getName();
       }
      }// class FuelInterceptor