[jboss-user] [Microcontainer] - Re: [VFS] Better way to scan for modifications

dazz_x do-not-reply at jboss.com
Mon Nov 24 06:58:10 EST 2008


Hi alesj,

Thanks for your response, which was helpul to me.

I finally handled this case in a satisfactory way.
So, when I add/remove/modify a file under my hierarchy, i get a log that says "this file have been added, removed, modified" under the TRACE log level.

A the same time I log, I fire an EngineDeployment event to alert registered listeners that an event has happened.

Unfortunately, that doesn't work... I give you my deployment file :

  |     <bean name="ClassLoaderManager" class="com.mycompany.classloaders.MasterClassLoader">
  |         <constructor factoryMethod="getInstance"/>
  |     </bean>
  | 
  |     <bean name="Scanner" class="com.mycompany.deployers.scanner.Scanner">
  |         <install method="addListener">
  |             <parameter>
  |                 <inject bean="ClassLoaderManager"/>
  |             </parameter>
  |         </install>
  |         <constructor>
  |             <parameter>/home/user/test/</parameter>
  |         </constructor>
  |     </bean>
  | 

With this xml portion, I want to add my ClassLoaderManager as a listener (simple addition to a CopyOnWriteArrayList in Scanner)
But it isn't registered... I see an error in the deployment of ClassLoaderManager at startup that is 

  | 12:52:17,886 ERROR [AbstractKernelController] Error installing to Instantiated: name=ClassLoaderManager state=Described
  | org.jboss.joinpoint.spi.JoinpointException: Constructor not found com.mycompany.classloaders.MasterClassLoader[] in [ReflectConstructorInfoImpl at 1b66b06{[ReflectClassInfoImpl at 12c9557{name=java.lang.ClassLoader}]}, ReflectConstructorInfoImpl at 9f0d{[ReflectClassInfoImpl at 12c9557{name=java.lang.ClassLoader}, ReflectClassInfoImpl at ca3783{name=com.mycompany.classloaders.MasterClassLoader$1}]}]
  |         at org.jboss.joinpoint.plugins.Config.findConstructorInfo(Config.java:274)
  |         at org.jboss.kernel.plugins.config.Configurator.resolveConstructor(Configurator.java:289)
  |         at org.jboss.kernel.plugins.config.Configurator.findConstructor(Configurator.java:255)
  |         at org.jboss.kernel.plugins.config.Configurator.getConstructorJoinPoint(Configurator.java:198)
  |         at org.jboss.kernel.plugins.config.AbstractKernelConfigurator.getConstructorJoinPoint(AbstractKernelConfigurator.java:137)
  |         at org.jboss.kernel.plugins.dependency.InstantiateAction.installActionInternal(InstantiateAction.java:61)
  |         at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54)
  |         at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42)
  |         at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
  |         at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)
  |         at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
  |         at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
  |         at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1598)
  |         at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
  |         at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1062)
  |         at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
  |         at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:774)
  |         at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:540)
  |         at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.deployBean(AbstractKernelDeployer.java:331)
  |         at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.deployBeans(AbstractKernelDeployer.java:309)
  |         at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.deploy(AbstractKernelDeployer.java:130)
  |         at org.jboss.kernel.plugins.deployment.BasicKernelDeployer.deploy(BasicKernelDeployer.java:76)
  |         at org.jboss.kernel.plugins.deployment.xml.BasicXMLDeployer.deploy(BasicXMLDeployer.java:88)
  |         at org.jboss.kernel.plugins.deployment.xml.BasicXMLDeployer.deploy(BasicXMLDeployer.java:158)
  | 
  | 

Here is the relevant part of the code for my MasterClassLoader class :

  | public class MasterClassLoader extends ClassLoader implements EngineDeploymentListener{
  | 
  |     /**
  |      * Application Logger
  |      */
  |     private static final Logger log = Logger.getLogger(MasterClassLoader.class);
  |     
  |     private Map<File, EngineClassLoader> engineClassLoaders = new HashMap<File, EngineClassLoader>();
  |     
  |     private MasterClassLoader(ClassLoader parent) {
  |         super(parent);
  |     }
  | 
  |     @Override
  |     public void onDeploymentEvent(EngineDeploymentEvent e) {
  |         log.info("[********] Deployment Event : " + e.getType().toString());
  |     }
  | 
  |     /**
  |      * Static initializer to ensure Singleton
  |      * @return single instance of MasterClassLoader
  |      */
  |     public static MasterClassLoader getInstance() {
  |         return MasterClassLoaderHolder.instance;
  |     }
  | 
  |     private static class MasterClassLoaderHolder {
  | 
  |         public static MasterClassLoader instance = new MasterClassLoader(ClassLoader.getSystemClassLoader());
  |     }
  | }
  | 
  | 

Why do you think my MasterClassLoader is not deployed ? My static factory method run well in standard call...

Thanks in advance

dazz_x

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

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



More information about the jboss-user mailing list